单片机控制蜂鸣器变化音调

分享到:
点击量: 215480

  蜂鸣器使用在很多的场合,他一般用来发出报警或者提示的声音,是一种常用的电子器件,这里我给大家 简单的介绍一下用单片机驱动蜂鸣器的方法, 蜂鸣器有二种 1.本身带有驱动电路, 5v,9v,12v 超电压使用, 分 声音沙哑失真。2.象 call 机,喇叭一样,用软件驱动。频率控制音调,时间控制音量大小,**种蜂鸣器 一般都有一个固定的频率参数也就是他他发出的声音是不能变化的,就象食堂用的打卡器一样,卡一贴近 就发出都的一声。第 2 种就不同了用单片机驱动第 2 种蜂鸣器后还可以使他演奏出美妙的音乐,我们只需 要用简单的程序就可以控制单蜂鸣器所奏的频率,也就控制了音调。

  c51 程序实例: 单片机驱动蜂鸣器演奏中华人民共和***的前 4 节的 c51 程序: #include

  sbit BUZ=P2^6; //蜂鸣器接单片机的p2.6 电路很简单。 unsigned int hzs[]={131,147,165,175,196,220,247,262,294,330,349,392,440,494,523,587,659,698,784,880,988,1047,1175,131 9,1397,1568,1760,1976};//标准音调频率 char dots[]={8,28,10,12,12,13,28,28,12,28,10,28,8,12,12,12,10,28,28,8,28,5,5,5,5,5,5,8,'#'};//频率控制数组 void delay(unsigned int u) //延时 { while(u--); } void play_hz(unsigned int u) { unsigned int i=u; while(i--){ BUZ=0; BUZ=1; delay(18432/u-24);

  } } //http://www.51hei.com 单片机学习站出品 void play_sound(int i) { if(i<28) play_hz(hzs[i-1]); else delay(500); } void main(void) //主程序开始 { while(1){ int i=0; while(dots[i]!='#') play_sound(dots[i++]); delay(20000); } } //播放音乐

  音调与频率的关系: C:261.6256 D:293.6648 E:329.6276 F:349.2282 G:391.9954 A:440 B:493.8833

  每个 8 度频率加倍,如 A 的高 8 度是 880HZ,再高 8 度是 1760HZ。 反之,A 的低 8 度是 220HZ,再低 8 度是 110HZ。