0%

蜂鸣器的原理及控制

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“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单位时间
    }
}