单片机驱动蜂鸣器


蜂鸣器使用在很多的场合,他一般用来发出报警或者提示的声音,是一种常用的电子器件,这里我给大家简单的介绍一下用单片机驱动蜂鸣器的方法,蜂鸣器有二种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,1319,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!='#')
play_sound(dots[i++]);
delay(20000);
}
}

呵呵很好听吧

我也来说两句 查看全部回复

最新回复

  • 9918858 (2008-10-10 16:11:29)

    太需要这方面的资料了,多来一此就好太需要这方面的资料了,多来一此就好
  • wfbaaa (2008-10-10 16:42:39)

    太需要这方面的资料了,多来一此就好太需要这方面的资料了,多来一此就好
  • hzgtfkc (2008-11-05 09:07:01)

    领教啦!!!!!11
  • nanshou204 (2008-11-08 13:18:22)

    太需要这方面的资料了,多来一此就好太需要这方面的资料了,多来一此就好
  • nanshou204 (2008-11-08 13:21:44)

    钱不够 还得顶!!!!!!!!!!!!
  • wfbaaa (2008-11-08 15:11:31)

    太需要这方面的资料了,多来一此就好太需要这方面的资料了,多来一此就好
    太需要这方面的资料了,多来一此就好太需要这方面的资料了,多来一此就好
  • zyb-good (2008-11-08 17:01:05)

    学到了,多谢楼主的提供,谢谢了,
  • zyb-good (2008-11-08 17:04:28)

    如果有其他的音乐就更好了,比如报警的。不知楼主是否有啊?