本人不想说有源蜂鸣器的不足,只是无源蜂鸣器有很多优点,声音清脆响亮,是设备报警器的理想选择;电压适应范围大,用途广泛;可以改变方波时间参数,使输出音频变调;还可以语音和音乐输出时当喇叭使用,学习单片机无源蜂鸣器是个不错的选择。只是编程时比较麻烦,所以就想到编一个带型参的驱动程序把它固定下来,以后可以任意改变参数反复调用。今天拿来与大家分享,希望能对各位有所启发,且一起讨论完善之。
#include <reg52.h>
#define INT16 unsigned int
#define INT8 unsigned char
sbit BUZZER=P1^5;
void Delay(INT16 xms)//延时函数,有参函数
{
INT16 x,y;
for(x = xms; x > 0; x --)
for(y = 110; y > 0; y --);
}
void Buzzer(INT16 Number,INT8 Time) //可以选择鸣响次数和音频
{
INT8 h,j;
INT16 i ;
for (h = 0; h < Number; h ++)
{
for (i = 0; i < Time; i ++)
{
BUZZER = ~BUZZER; //BUZZER取反
for (j = 0 ; j < 100 ; j ++); //需要产生方波,调节音频
}
Delay(100); //间隔时间
}
BUZZER = 0; //注意PNP=0;NPN=1关闭蜂鸣器,否则三极管电流会很大。
}
void main()
{
while(1)
{
Buzzer(50,100); //任意调节参数,选择自己喜欢的鸣叫次数和音频
}
}
下次讨论驱动电路。
|