蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。
蜂鸣器的使用
蜂鸣器工作原理
有源/无源蜂鸣器
先给个百度百科链接
有源蜂鸣器,也叫电磁式蜂鸣器,内部有电磁振荡器,接通直流电源后周期性振动发声,
无源蜂鸣器,也叫压电式蜂鸣器,内部没有电磁振荡器,需要接带有一定波形的电流,改变波形可以改变发出的声音的音调等等。
这块实验板上是一个无源蜂鸣器
实验板上的电路
单片机的引脚无法直接驱动蜂鸣器,需要经过信号放大才能驱动。在这块实验板中,蜂鸣器是无源的,用的放大器是ULN2003.
在有源蜂鸣器中,可以直接用一个三极管放大信号,实际上ULN2003内部也是NPN三极管。
程序控制蜂鸣器
找引脚接口
在上面的电路图中可以看到,蜂鸣器端口标号是 BZ 由于蜂鸣器是接在ULN2003上的,所以在ULN2003电路图上也有一个BZ,与之对应的是端口P15,那么我们控制的就是P15端口。
写程序
上面说到了,这块板子上是一个无源蜂鸣器,需要不断变换端口输出值来模拟脉冲信号,
引脚参数beep值为1的时候高电平,为0的时候低电平,从1到0变换一次表示一次振动,连续振动就能发声。
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit beep=P1^5; //控制蜂鸣器的引脚为P15
void delay(uint i){
while(i--);
}
void main(){
while(1){
beep=~beep;
delay(80); //每80个单位时间振动一下,周期160单位时间
}
}