導(dǎo)語
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于各類等電子產(chǎn)品中作發(fā)聲器件,相對于揚聲器控制簡單,方便使用。
臺式電腦的主機開機會"滴"一聲、洗衣機按下按鍵及洗衣完成都會有聲響,以上這些聲音都是通過蜂鳴器來發(fā)出的,通過這些可與用戶形成一定的交互。
蜂鳴器
分為壓電式蜂鳴器和電磁式蜂鳴器兩種,壓電式蜂鳴器通過壓電材料和金屬片兩端施加上一個電壓后,由于壓電效應(yīng),蜂鳴片就會產(chǎn)生機械變形而發(fā)出聲響。
電磁式蜂鳴器按照其內(nèi)部是否集成了震蕩源可分為有源蜂鳴器,和無源蜂鳴器,利用電磁線圈對蜂鳴片的作用來發(fā)聲的電子響訊器。
其有源蜂鳴器由于內(nèi)部集成了震蕩源,在蜂鳴器上電后就會以一定的頻率發(fā)出響聲。而無源蜂鳴器則需要使用方波去驅(qū)動它。其有源蜂鳴器價格高于無源蜂鳴器。
但無源蜂鳴器可控聲音頻率,達到一定程度的音樂盒效果。
我們經(jīng)常使用的為有源式蜂鳴器,蜂鳴器作為電磁感性器件,其驅(qū)動需要較大的電流,而IO的輸出電流能力有限,因此需要搭配外圍電路對其進行控制,常見的方式有三極管。
通過三極管的使得蜂鳴器工作,同時在蜂鳴器兩端并聯(lián)二極管,以保證在關(guān)斷感性原件蜂鳴器時減小對電路的沖擊。
無源代碼
元器件是電路良好運行的基本保證,找元器件現(xiàn)貨上唯樣商城,原廠授權(quán)正品保障,品類齊全。
無源驅(qū)動
#include //此文件中定義了單片機的一些特殊功能寄存器
sbit beep= P1^5; //定義蜂鳴器的引腳
void Delay_10us(unsignedint time)
{
while(time--);
}
void Simulate_Pwm(unsignedchar period,unsignedchar duty)
{
unsignedchar low= period/100* duty;//低電平延時時間
unsignedchar high= period- low; //高電平延時時間
beep =0; //蜂鳴器IO電平置低
Delay_10us(low);//低電平延時時間
beep =1; //蜂鳴器IO電平置高
Delay_10us(high);//高電平延時時間
}
void main()
{
while(1)
{
//使用模擬PWM控制蜂鳴器
Simulate_Pwm(100,50); //周期100*10us,占空比50%——頻率:1KHz
}
}
元器件是電路良好運行的基本保證,找元器件現(xiàn)貨上唯樣商城,原廠授權(quán)正品保障,品類齊全。
兩只老虎
#include
sbit BUZZ= P1^5;//蜂鳴器控制引腳
unsignedint code NoteFrequ[]={//中音 1-7和高音 1-7對應(yīng)頻率列表
523,587,659,698,784,880,988,//中音 1-7
1047,1175,1319,1397,1568,1760,1976//高音 1-7
};
unsignedint code NoteReload[]={//中音 1-7和高音 1-7對應(yīng)的定時器重載值
65536-(11059200/12)/(523*2),//中音 1
65536-(11059200/12)/(587*2),//2
65536-(11059200/12)/(659*2),//3
65536-(11059200/12)/(698*2),//4
65536-(11059200/12)/(784*2),//5
65536-(11059200/12)/(880*2),//6
65536-(11059200/12)/(988*2),//7
65536-(11059200/12)/(1047*2),//高音 1
65536-(11059200/12)/(1175*2),//2
65536-(11059200/12)/(1319*2),//3
65536-(11059200/12)/(1397*2),//4
65536-(11059200/12)/(1568*2),//5
65536-(11059200/12)/(1760*2),//6
65536-(11059200/12)/(1976*2),//7
};
bit enable=1;//蜂鳴器發(fā)聲使能標(biāo)志
bit tmrflag=0;//定時器中斷完成標(biāo)志
unsignedchar T0RH=0xFF;//T0重載值的高字節(jié)
unsignedchar T0RL=0x00;//T0重載值的低字節(jié)
void PlayTwoTiger();
void main()
{
unsignedint i;
EA =1;//使能全局中斷
TMOD =0x01;//配置 T0工作在模式 1
TH0 = T0RH;
TL0 = T0RL;
ET0 =1;//使能 T0中斷
TR0 =1;//啟動 T0
while(1)
{
PlayTwoTiger();//播放樂曲--兩支老虎
for(i=0; i<40000; i++);?//停止一段時間?
}
}
/*兩只老虎樂曲播放函數(shù) */
void PlayTwoTiger()
{
unsignedchar beat;//當(dāng)前節(jié)拍索引
unsignedchar note;//當(dāng)前節(jié)拍對應(yīng)的音符
unsignedint time=0;//當(dāng)前節(jié)拍計時
unsignedint beatTime=0;//當(dāng)前節(jié)拍總時間
unsignedint soundTime=0;//當(dāng)前節(jié)拍需發(fā)聲時間
//兩只老虎音符表
unsignedchar code TwoTigerNote[]={
1,2,3,1,1,2,3,1,3,4,5,3,4,5,
5,6,5,4,3,1,5,6,5,4,3,1,1,5,1,1,5,1,
};
//兩只老虎節(jié)拍表,4表示一拍,1就是 1/4拍,8就是 2拍
unsignedchar code TwoTigerBeat[]={
4,4,4,4,4,4,4,4,4,4,8,4,4,8,
3,1,3,1,4,4,3,1,3,1,4,4,4,4,8,4,4,8,
};
for(beat=0; beat//用節(jié)拍索引作為循環(huán)變量
{
while(!tmrflag);//每次定時器中斷完成后,檢測并處理節(jié)拍
tmrflag =0;
if(time==0)//當(dāng)前節(jié)拍播完則啟動一個新節(jié)拍
{
note = TwoTigerNote[beat]-1;
T0RH = NoteReload[note]>>8;
T0RL = NoteReload[note];
//計算節(jié)拍總時間,右移 2位相當(dāng)于除 4,移位代替除法可以加快執(zhí)行速度
beatTime =(TwoTigerBeat[beat]* NoteFrequ[note])>>2;
//計算發(fā)聲時間,為總時間的 0.75,移位原理同上
soundTime = beatTime-(beatTime>>2);
enable =1;//指示蜂鳴器開始發(fā)聲
time++;
}
else//當(dāng)前節(jié)拍未播完則處理當(dāng)前節(jié)拍
{
if(time>= beatTime)//當(dāng)前持續(xù)時間到達節(jié)拍總時間時歸零,
{//并遞增節(jié)拍索引,以準(zhǔn)備啟動新節(jié)拍
time =0;
beat++;
}
else//當(dāng)前持續(xù)時間未達到總時間時,
{
time++;//累加時間計數(shù)
if(time== soundTime)//到達發(fā)聲時間后,指示關(guān)閉蜂鳴器,
{//插入 0.25*總時間的靜音間隔,
enable =0;//用以區(qū)分連續(xù)的兩個節(jié)拍
}
}
}
}
}
/* T0中斷服務(wù)函數(shù),用于控制蜂鳴器發(fā)聲 */
void InterruptTimer0() interrupt1
{
TH0 = T0RH;//重新加載重載值
TL0 = T0RL;
tmrflag =1;
if(enable)//使能時反轉(zhuǎn)蜂鳴器控制電平
BUZZ =~BUZZ;
else//未使能時關(guān)閉蜂鳴器
BUZZ =1;
}(twotigernote);)
元器件是電路良好運行的基本保證,找元器件現(xiàn)貨上唯樣商城,原廠授權(quán)正品保障,品類齊全。
//《世上只有媽媽好》數(shù)據(jù)表 元器件是電路良好運行的基本保證,找元器件現(xiàn)貨上唯樣商城,原廠授權(quán)正品保障,品類齊全。
codeunsignedchar sszymmh[]={
6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,
//一個音符有三個數(shù)字。前為第幾個音、中為第幾個八度、后為時長(以半拍為單位)。
//6, 2, 3分別代表:6,中音,3個半拍;
//5, 2, 1分別代表:5,中音,1個半拍;
//3, 2, 2分別代表:3,中音,2個半拍;
//5, 2, 2分別代表:5,中音,2個半拍;
//1, 3, 2分別代表:1,高音,2個半拍;
//
6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,
6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,
5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,
2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0};
//《煙花易冷》
unsignedchar code song1[]={
5,2,1,3,2,1,2,2,2,2,2,4,3,2,1,1,2,1,2,2,1,3,2,4,
5,2,1,3,2,1,2,2,2,2,2,2,5,1,1,3,2,1,4,2,1,3,2,4,
3,2,1,3,2,1,7,2,1,3,2,1,2,2,2,1,2,1,7,1,1,1,2,1,
2,2,1,3,2,1,6,2,3,6,1,1,1,2,1,3,2,1,2,2,1,6,1,1,
1,2,1,7,1,1,5,1,1,6,1,6,5,2,1,3,2,1,2,2,2,2,2,1,
2,2,1,3,2,1,1,2,1,2,2,1,3,2,4,5,2,1,3,2,1,2,2,2,
2,2,1,2,2,1,5,1,1,3,2,1,4,2,1,3,2,4,3,2,1,3,2,1,
7,2,3,3,2,1,2,2,2,1,2,1,7,1,1,1,2,1,2,2,1,3,2,1,
6,2,3,6,1,1,1,2,1,3,2,1,2,2,1,6,1,1,1,2,1,7,1,2,
5,1,2,6,1,6,0,0,0};
有源的也可以試試!
-
51單片機
+關(guān)注
關(guān)注
273文章
5697瀏覽量
123035 -
蜂鳴器
+關(guān)注
關(guān)注
12文章
889瀏覽量
45843
發(fā)布評論請先 登錄
相關(guān)推薦
評論