蜂鸣器是常见的电子器件,广泛用于家用电器、仪器仪表和工业控制上需要提示、报警的场合。
当冰箱门忘记关上时,冰箱会发出“嘀”、“喃”的报警声提示我们关门:遥控空调时,每次按键空调会发出“喃”的一声,表示收到控制信息;洗衣机完成洗涤后,会发出“嘟”声提醒我们取出衣物。这些都是蜂鸣器在发出声响,完成提醒和报管的功能。
甚至有家用防盗报警器,也使用声音洪亮的大功率蜂鸣器。
蜂鸣器是有极性的电子元件,具体又分为有源蜂鸣器和无源蜂鸣器丙种类型。其中,有源蜂鸣器的发声条件与发光二极管是相似的,当有适当的电流从正极流向负极时,有源蜂鸣器就会鸣响。
通过下图的控制电路,单片机可以控制有源蜂鸣器的鸣响和关闭。
从下图看到,电路使用了单片机的I/0口P3.4来控制蜂鸣器。但是,图中并没有用P3.4直接控制蜂鸣器,而是通过三极管8550间接控制。这是因为单片机的I/0口能够流进流出的电流有限,有的蜂鸣器鸣响需要比较大的电流,单片机的I/0无法满足。而三极管8550最大可以提供1A以上的电流,足以驱动蜂鸣器,所以使用P3.4控制三极管8550的导通和截止,达到控制蜂鸣器的目的。先看本电路的控制原理:
向P3.4写出逻辑“1”时,P3.4输出+5V,三极管8550的基极电流为0,三极管处于截止状态,电源+5V不能加到蜂鸣器的正极,蜂鸣器不鸣响;向P3.4写出逻辑“0”时,P3.4输出OV,三极管8550的发射极和基极之间产生电流,图1中限流电阻R1取合适的值,可以使三极管处于饱和导通状态,电源+5V通过三极管的发射极和集电极加到蜂鸣器的正极,有电流流过蜂鸣器的正极和负极,有源蜂鸣器就开始鸣响。
这样,控制有源蜂鸣器的鸣响变成了向P3.4口写出逻辑“1”或逻辑“0”。下面的程序可以使有源蜂鸣器发出“嘀”、“嘀”的响声:
#include<reg52.h>
sbitBuzzer=P3h4;1/【注1】
//主程序voiDMAin(void){//循环语句,使蜂鸣器间隔0.5秒不断鸣响,停止for(;;){delay()://延时0.5秒,具体程序见上一期BUzzerh=1;//【注2】
}
}
【注1】:将位变量Buzzer定义为单片机P3.4口,以后对Buzzer的操作就是对P3.4口的操作;
【注2】:使变量Buzzer与“1”做“异或”操作。因为0与1“异或”后等于1,1与1“异或”后等于0,通过这条语句使每次操作后,变量Buzzer的状态都发生变化,下表列出了前4次操作的情况:
上一篇:用单片机I/0口做按键输入实验