0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機的蜂鳴器設(shè)計

天才小貍花 ? 來源:Sigle_chip ? 作者:Sigle_chip ? 2022-09-03 10:00 ? 次閱讀

導(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ā)聲使能標志
bit tmrflag=0;//定時器中斷完成標志

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;//當前節(jié)拍索引
unsignedchar note;//當前節(jié)拍對應(yīng)的音符
unsignedint time=0;//當前節(jié)拍計時
unsignedint beatTime=0;//當前節(jié)拍總時間
unsignedint soundTime=0;//當前節(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)//當前節(jié)拍播完則啟動一個新節(jié)拍
{
note = TwoTigerNote[beat]-1;
T0RH = NoteReload[note]>>8;
T0RL = NoteReload[note];
//計算節(jié)拍總時間,右移 2位相當于除 4,移位代替除法可以加快執(zhí)行速度
beatTime =(TwoTigerBeat[beat]* NoteFrequ[note])>>2;
//計算發(fā)聲時間,為總時間的 0.75,移位原理同上
soundTime = beatTime-(beatTime>>2);
enable =1;//指示蜂鳴器開始發(fā)聲
time++;
}
else//當前節(jié)拍未播完則處理當前節(jié)拍
{
if(time>= beatTime)//當前持續(xù)時間到達節(jié)拍總時間時歸零,
{//并遞增節(jié)拍索引,以準備啟動新節(jié)拍
time =0;
beat++;
}
else//當前持續(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};

有源的也可以試試!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 51單片機
    +關(guān)注

    關(guān)注

    273

    文章

    5696

    瀏覽量

    122836
  • 蜂鳴器
    +關(guān)注

    關(guān)注

    12

    文章

    888

    瀏覽量

    45793
收藏 人收藏

    評論

    相關(guān)推薦

    求教,怎樣控制51單片機蜂鳴器發(fā)出不同頻率的聲音

    怎樣控制51單片機蜂鳴器發(fā)出不同頻率的聲音,比如“滴滴”“滴答”聲?
    發(fā)表于 03-19 22:14

    51單片機蜂鳴器怎么響出不同頻率的聲音?

    51單片機蜂鳴器怎么響出不同頻率的聲音
    發(fā)表于 11-01 07:29

    51單片機 蜂鳴器音樂實驗(致愛麗絲)

    51單片機_蜂鳴器音樂實驗(致愛麗絲)
    發(fā)表于 12-17 21:59 ?60次下載

    51單片機蜂鳴器和繼電器的詳細資料和程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是51單片機蜂鳴器和繼電器的詳細資料說明。
    發(fā)表于 08-30 17:28 ?5次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>蜂鳴器</b>和繼電器的詳細資料和程序免費下載

    使用51單片機應(yīng)用蜂鳴器的電路圖和程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用51單片機應(yīng)用蜂鳴器的電路圖和程序免費下載。
    發(fā)表于 08-01 17:34 ?17次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>應(yīng)用<b class='flag-5'>蜂鳴器</b>的電路圖和程序免費下載

    51單片機蜂鳴器程序和蜂鳴器間斷發(fā)聲的程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是51單片機蜂鳴器程序和蜂鳴器間斷發(fā)聲的程序免費下載。
    發(fā)表于 07-26 17:36 ?15次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>蜂鳴器</b>程序和<b class='flag-5'>蜂鳴器</b>間斷發(fā)聲的程序免費下載

    51單片機——蜂鳴器的使用

    蜂鳴器種類蜂鳴器分為有源蜂鳴器和無源蜂鳴器: 判斷有源蜂鳴器和無源蜂鳴器可用萬用表電阻檔Rxl檔
    發(fā)表于 11-11 14:36 ?14次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>——<b class='flag-5'>蜂鳴器</b>的使用

    51單片機蜂鳴器演奏《我和我的祖國》

    由于同學(xué)的需要,于是用51單片機蜂鳴器功能譜了一首《我和我的祖國》,下面是全部的代碼:#include <reg52.h>sbit beep = P1^5
    發(fā)表于 11-11 17:06 ?36次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>蜂鳴器</b>演奏《我和我的祖國》

    51 單片機 蜂鳴器

    普中51單片機中的蜂鳴器sbit與define的區(qū)別sbit 是定義 位 ,就是說只能 用于 位, 編譯器 會檢測的。define 就是簡單的 文字替換,用途廣無源蜂鳴器與有源
    發(fā)表于 11-11 17:36 ?66次下載
    <b class='flag-5'>51</b> <b class='flag-5'>單片機</b> <b class='flag-5'>蜂鳴器</b>

    51單片機蜂鳴器

    蜂鳴器實驗蜂鳴器蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機、打印機、復(fù)印機、報警器、電子玩具、汽車電子設(shè)備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要
    發(fā)表于 11-11 20:51 ?2次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>蜂鳴器</b>

    51單片機蜂鳴器

    51單片機蜂鳴器51單片機蜂鳴器1 蜂鳴器
    發(fā)表于 11-23 16:20 ?33次下載
    【<b class='flag-5'>51</b><b class='flag-5'>單片機</b>】<b class='flag-5'>蜂鳴器</b>

    51單片機蜂鳴器實驗

    之間。2.要實現(xiàn)蜂鳴器的控制,我們能否 直接使用 STC89CXX 的 IO 口驅(qū)動呢?答案是否定的, 因為51單片機 IO 口的驅(qū) 動能力較弱(即使外接上拉電阻),而蜂鳴器驅(qū)動需
    發(fā)表于 11-23 16:22 ?3次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>蜂鳴器</b>實驗

    51單片機——蜂鳴器

    。多諧振蕩器由晶體管或集成電路構(gòu)成,當接通電源后(1.5到15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。有源蜂鳴器:通過單片機的管腳經(jīng)過...
    發(fā)表于 11-23 16:22 ?12次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>——<b class='flag-5'>蜂鳴器</b>

    51單片機 蜂鳴器

    蜂鳴器分為有源蜂鳴器和無源蜂鳴器有源蜂鳴器:內(nèi)部帶震蕩源,所以只要一通電就會叫。無源蜂鳴器:內(nèi)部不帶震蕩源,用直流信號無法令其鳴叫,必須用2
    發(fā)表于 11-23 17:06 ?13次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b> <b class='flag-5'>蜂鳴器</b>

    基于51單片機蜂鳴器播放音樂源代碼

    基于51單片機蜂鳴器播放音樂例程源代碼
    發(fā)表于 05-12 16:16 ?55次下載