找回密码
 立即注册
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图1中所示,给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。
140522m221a7jqfvsa10uq.jpg

来看一下图1的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经“电源-三极管-蜂鸣器-地”这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。接续关断时的电流,这就是续流二极管名称的由来。蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个 4KHZ 频率下的发声和 1KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。
  1. #sbit BUZZ = P1^6; //蜂引脚unsigned char T0RH = 0; //T0 重载值的高字节unsigned char T0RL = 0; //T0 重载值的低字节OpenBuzz(unsigned int fr);void StopBuzz();void main(){unsigned int i;TMOD = 0x01; //配置 T0 工作在模式 1,但先不启动EA = 1;(1){ //使能全局中断OpenBuzz(4000); //以 4KHz 的频率启动蜂鸣器for (i=0; i 2;//计算发声时间,为总时间的 0.75,移位原理同上soundTime = beatTime - (beatTime >> 2);enable = 1; //指示蜂鸣器开始发声time++;}e{ //当前节拍未播完则处理当前节拍//当前持续时间到达节拍总时间时归零,//并递增节拍索引,以准备启动新节拍if (time >= beatTime){time = 0;beat++;}else{ //当前持续时间未达到总时间时,time++; //累加时间计数//到达发声时间后,指示关闭蜂鸣器,//插入 0.25*总时间的静音间隔,if (time == soundTime){enable = 0; //用以区分连续的两个节拍}}}}}/* T0 中断服务函数,用于控制蜂鸣器发声 */void InterruptTimer0() interrupt 1{TH0 = T0RH; //重新加载重载值TL0 = T0RL;tmrflag = 1;if (enable){ //使能时反转蜂鸣器控制电平BUZZ = ~BUZZ;}else{ //未使能时关闭蜂鸣器BUZZ = 1;}}
复制代码
本文转自小平头电子技术社区:https://www.xiaopingtou.cn/q-134697.html

免责声明:本文内容部分来源于网络,出于网络分享目的,如对您的权益版权有异议我们将予以删除,谢谢合作!
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册