本人不想說有源蜂鳴器的不足,只是無源蜂鳴器有很多優點,聲音清脆響亮,是設備報警器的理想選擇;電壓適應范圍大,用途廣泛;可以改變方波時間參數,使輸出音頻變調;還可以語音和音樂輸出時當喇叭使用,學習單片機無源蜂鳴器是個不錯的選擇。只是編程時比較麻煩,所以就想到編一個帶型參的驅動程序把它固定下來,以后可以任意改變參數反復調用。今天拿來與大家分享,希望能對各位有所啟發,且一起討論完善之。
#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); //任意調節參數,選擇自己喜歡的鳴叫次數和音頻
}
}
下次討論驅動電路。
|