蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
想要压电式蜂鸣器发声,需提供一定频率的脉冲信号;想要电磁式蜂鸣器发声,只需提供电源即可。
我们开发板上使用的蜂鸣器是无源蜂鸣器,属于压电式蜂鸣器类型。这里说的有源和无源,并不是指电源的意思,而是指蜂鸣器内部是否含有振荡电路,有源蜂鸣器内部自带振荡电路,只需提供电源即可发声,而无源蜂鸣器则需提供一定频率的脉冲信号才能发声,频率大小通常在1.5-5KHz 之间。
对于无源蜂鸣器,如果改变频率就可以调节蜂鸣器音调,产生各种不同音色、音调的声音。如果改变输出电平的高低电平占空比,则可以改变蜂鸣器的声音大小。
对于有源蜂鸣器,通常内部已经固定了频率,对于调节频率或占空比可能改变不了蜂鸣器的音调和音量,当然也有的有源蜂鸣器可以实现和无源蜂鸣器一样的效果。
在前面章节中我们已经对51 单片机的GPIO 做了简单介绍,并且还使用了其中IO 口直接控制开发板上的LED。对于本章要实现蜂鸣器的控制,我们能否直接使用单片机的IO 口驱动呢?答案是否定的,因为51 单片机IO 口的驱动能力较弱(即使外接上拉电阻),而蜂鸣器驱动需要约30mA,所以非常困难,即使可以驱动,那对于整个芯片的其它IO 剩下驱动能力就更加弱甚至无法工作。所以我们不会直接使用IO 口驱动蜂鸣器,而是通过三极管把电流放大后再驱动蜂鸣器,这样51 单片机的IO 口只需要提供不到1mA 的电流就可控制蜂鸣器。所以我们也经常说到51 单片机是用来做控制的,而不是驱动。
从图中可以看出,蜂鸣器模块独立,J7 端子可接任意IO 控制,因此可直接连接到51 单片机的管脚上。图中使用三极管进行电流放大,从而驱动蜂鸣器,当管脚输出高电平,三极管截止,蜂鸣器不得电;当管脚输出低电平,三极管导通