纪瀚涛,王 伟
(沈阳工学院,辽宁 抚顺 113122)
运用MCS-51单片机,使用I/O输出音频脉冲,脉冲经放大滤波后,驱动扬声器发声。
若要产生f的频率,则需于T时间内(其中T=1/f),进行吸、放各一次,换言之,磁铁产生磁性、磁铁失去磁性的时间各为T/2,成为半周期。
如图1所示,由单片机的P3.7口联接一个NPN型的三极管,并于蜂鸣器BUZ1相连接。当P3.1口输出信号时,蜂鸣器会产生相应频率的奉命信号。由单片机的P3.7口输出1 kHz的信号,持续0.1 s,停止0.5s,则蜂鸣器发出0.1s的“哔”的声音。
要产生1kHz的频率,则半周期为0.5ms,P3.7所送出的信号中,0.5 ms为高电平,0.5 ms为低电平。若0.5ms为高电平与0.5ms为低电平为一组信号(总共1ms),连续送出100组,即可得到1kHz的声音约0.1s;停止输出0.1s后,再送出0.5s的信号。
图1
#include
sbit buzzer=P3^7;
void delay(int);
void pulse_BZ(int,int,int);//声明蜂鸣器发声函数main()
{ while(1)
{ pulse_BZ(100,1,1); //蜂鸣器发声 100×
(0.5ms+0.5ms)=0.1s
delay(1000); //延迟 1000×0.5ms=0.5s
}
}
void delay(int x) //0.5ms延迟函数
{ int i,j;
for(i=0;i for(j=0;j<60;j++); } void pulse_BZ(int count,int TH,int TL) //蜂鸣器发声函数 { int i; for(i=0;i { buzzer=1; //输出高电平 delay(TH); //延 迟 TH × 0.5 ms buzzer=0; //输出低电平 delay(TL); //延迟 TL×0.5ms } } 运用MCS-51单片机控制驱动信号使蜂鸣器发出不同音调的声音,声音的频率由延时程序控制,频率越高,音调就越高;频率越低,音调越低。通过单片机仿真软件,该程序通过改变驱动频率,可以让蜂鸣器发出不同频率,不同长短的声音。3 结语