日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蜂鸣器及其原理

發(fā)布時(shí)間:2024/1/1 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蜂鸣器及其原理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器,其中壓電式蜂鳴器提供一定頻率的脈沖信號即可發(fā)出聲音,電磁式蜂鳴器提供電源即可發(fā)出聲音。

蜂鳴器氦分為有源蜂鳴器和無源蜂鳴器(這里的源不是電源,而是蜂鳴器內(nèi)部是否含有振蕩電路),其中有源蜂鳴器內(nèi)部自帶振蕩電路,上電后便能發(fā)聲,但發(fā)出的聲音頻率固定。無源蜂鳴器內(nèi)部不含振蕩電路,需輸入脈沖信號才可發(fā)聲,但因?yàn)槊}沖頻率可調(diào),可通過輸入不同頻率的脈沖信號發(fā)出不同的音色和音調(diào)的聲音,若改變輸出電平的高低電平占空比,可調(diào)節(jié)蜂鳴器聲音的大小。

51單片機(jī)蜂鳴器及其驅(qū)動的結(jié)構(gòu)原理圖:

?因?yàn)榉澍Q器所需的驅(qū)動電流比較大,51單片機(jī)的IO口輸出無法達(dá)到其驅(qū)動電流,因此需使用ULN2003D芯片來驅(qū)動,當(dāng)P2_5輸入高電平時(shí),BEER輸出低電平,此時(shí)蜂鳴器可發(fā)聲,若P2_5輸入一個(gè)低電平,則BEER輸出一個(gè)高電平,此時(shí)蜂鳴器不發(fā)聲,ULN2003D類似于一個(gè)非門。

用無源蜂鳴器輸出不同頻率的聲音

聲音是由物體振動發(fā)出的,當(dāng)物體的振動頻率不同時(shí),其發(fā)出的聲音的聲調(diào)不同,我們可以通過控制蜂鳴器內(nèi)金屬片的振動頻率來產(chǎn)生不同頻率的聲音。我們可以通過給定時(shí)器賦初值來控制每次振動的時(shí)間(即振動頻率)。如圖為C調(diào)音符對應(yīng)頻率的定時(shí)器初值。

?設(shè)定完聲音頻率后再用延時(shí)函數(shù)設(shè)定相應(yīng)時(shí)間,將音符組合后便能輸出樂曲

如下為卜卦部分代碼,其中有部分問題還未解決,希望諸位大佬指出代碼中錯(cuò)誤地方

#include <regx52.h> #include "Delay.h" #include "Timer0_Init.h"sbit Beep=P2^5; #define SPEED 1000 //將速度進(jìn)行宏定義,方便調(diào)整樂曲播放速度 #define L1 1 //將每個(gè)頻率的聲音宏定義為相應(yīng)的表述方式,,便于將樂譜轉(zhuǎn)譯為相應(yīng)音調(diào)的聲音頻率 #define L1_ 2 #define L2 3 #define L2_ 4 #define L3 5 #define L4 6 #define L4_ 7 #define L5 8 #define L5_ 9 #define L6 10 #define L6_ 11 #define L7 12 #define M1 13 #define M1_ 14 #define M2 15 #define M2_ 16 #define M3 17 #define M4 18 #define M4_ 19 #define M5 20 #define M5_ 21 #define M6 22 #define M6_ 23 #define M7 24 #define H1 25 #define H1_ 26 #define H2 27 #define H2_ 28 #define H3 29 #define H4 30 #define H4_ 31 #define H5 32 #define H5_ 33 #define H6 34 #define H6_ 35 #define H7 36unsigned int count,MusicNoteSelect,Frequency; unsigned int code MusicNoteFrequency[]={0, //在第一位加一個(gè)0是為了讓第一個(gè)聲音頻率位于數(shù)組的第一位63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524, //低音64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030, //中音65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283, //高音 }; unsigned int code MusicScore[]={ //樂譜中音調(diào)即其對應(yīng)的時(shí)長M1,2,M2,2,M3,4,M1,2,M2,2,M3,4,M5,2,M6,2,M5,4,M3,4,0,2,M3,2,M5,2,M6,2,M2,6,M2,2,M2,2,M3,2,M5,3,M2,1,M3,12,M1,2,M2,2,M3,4,M1,2,M2,2,M3,4,M5,2,M6,2,M5,4,M3,4,0,2,M3,2,M5,2,H1,2,M7,6,H1,2,M7,2,M6,2,M5,3,M6,1,M6,8,0,2,M3,2,M6,2,M7,2,H1,6,H1,2,H1,2,M7,2,M6,2,H1,2,M5,6,M4,2,M3,4,M5,2,M6,2,M7,6,M7,2,M7,2,H1,2,M7,2,M6,2,M6,2,H1,2,H1,4,0,2,M3,2,M6,2,M7,2,H1,6,H1,2,H1,2,M7,2,H1,2,H2,2,H3,3,H1,1,H1,3,M5,1,M5,8,M7,6,M7,2,M7,2,H1,2,M7,3,M6,1,M7,8,0,2,M6,2,H1,2,H2,2,H3,4,H3,4,H3,3,H2,1,H3,2,H6,2,H5,2,H3,2,H3,4,0,2,H3,2,H5,2,H6,2,H2,4,0,2,H2,2,H2,2,H3,2,H5,3,H2,1,H3,8,0,2,M6,2,H1,2,H2,2,H3,4,H3,4,H3,3,H2,1,H3,2,H6,2,H5,2,H3,2,H3,4,0,2,H3,2,H5,2,H6,2,H2,4,0,2,H3,2,H5,3,H3,1,H5,3,H6,1,M6,12,0,2,0xFF, }; void main() {Timer0_Init(); //定時(shí)器0初始時(shí)化while(1){if(MusicScore[MusicNoteSelect]!=0xFF) //判斷樂曲是否播放完{if(MusicScore[MusicNoteSelect]) //如果對應(yīng)音符不是0{Frequency=MusicScore[MusicNoteSelect];MusicNoteSelect++;Delay(SPEED/4*MusicScore[MusicNoteSelect]); //以最短時(shí)間為單位MusicNoteSelect++;}else //若音符為0{MusicNoteSelect++; TR0=0; //關(guān)閉定時(shí)器0,起作用是讓音符為0的地方產(chǎn)生停頓Delay(SPEED/4*MusicScore[MusicNoteSelect]);TR0=1; //停頓結(jié)束后打開定時(shí)器MusicNoteSelect++;}}else{TR0=0;}} }void time0() interrupt 1 //定時(shí)器0中斷函數(shù),每次定時(shí)器溢出后都會跳轉(zhuǎn)到中斷函數(shù)中 {TH0=MusicNoteFrequency[Frequency]/256; //設(shè)置定時(shí)器高8位TL0=MusicNoteFrequency[Frequency]%256; //設(shè)置定時(shí)器低8位Beep=!Beep; //通過反轉(zhuǎn)蜂鳴器狀態(tài)來產(chǎn)生振動從而發(fā)聲 }

總結(jié)

以上是生活随笔為你收集整理的蜂鸣器及其原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。