基于51單片機的音樂(lè )播放器的仿真與制作
事實(shí)上,按照圖1所示原理圖來(lái)焊接電路,其結果可能沒(méi)有任何效果。而圖2所示才是單片機音樂(lè )播放器的實(shí)際制作電路。與圖1相比,實(shí)
際電路多了兩個(gè)部分:一是單片機左邊最小系統所需的電路部分,而仿真軟件中則將這些省略了;另一個(gè)是單片機右邊多了一個(gè)三極管。之所以要加這個(gè)三極管,主要是為了放大蜂鳴器的驅動(dòng)電流,而仿真軟件里面所有的元件都是理想元件,所以,仿真能實(shí)現的效果,實(shí)際做出來(lái)往往沒(méi)有效果。因此,要想在實(shí)際中實(shí)現滿(mǎn)意的效果還要憑借硬件經(jīng)驗進(jìn)行反復的摸索和嘗試。
2 軟件設計
2.1 播放原理
聲音的頻譜范圍通常約為幾十到幾千赫茲,通過(guò)程序控制單片機的I/O口可輸出不同頻率的矩形波。當該矩形波的頻率位于聲音頻譜范圍內時(shí),在單片機的I/O口接上喇叭就能發(fā)出聲音。然后利用延時(shí)程序控制矩形波的高、低電平持續時(shí)間,即改變矩形波的頻率,即可產(chǎn)生不同的音調,從而發(fā)出不同的聲音,再讓矩形波輸出的長(cháng)短對應節拍,就可以實(shí)現單片機對音樂(lè )的演奏。
2.2 音調和節拍編碼
單片機奏樂(lè )只需弄清楚兩個(gè)概念,也就是“音調”和“節拍”。音調表示一個(gè)音符唱多高的頻率,節拍表示一個(gè)音符唱多長(cháng)的時(shí)間。
由于各個(gè)音調對應的頻率是已知的,因此,播放音樂(lè )時(shí),應對樂(lè )曲中出現的音調進(jìn)行編碼,并找出單片機播放這些音調所對應的定時(shí)初值。表1所列是音調編碼與定時(shí)器的初值表,其中頻率是已知的,編碼可以自己設置,而定時(shí)初值是怎樣得來(lái)的呢?下面以“低6”為例進(jìn)行說(shuō)明?!暗?”的頻率f為440 Hz,其對應的周期為:T=1/f=1/440=272μs。單片機上對應蜂鳴器的I/O口來(lái)回取反的時(shí)間應為:t=T/2=2272/2=1136μs。單片機奏樂(lè )時(shí),其定時(shí)器為工作方式1,若以振蕩器的十二分頻信號為計數脈沖,如果單片機晶振為12MHz,則1μs計數一次。所以,對于“低6”,其定時(shí)器的初值應該是:216-1136=64400。
對節拍的控制可通過(guò)延時(shí)程序來(lái)實(shí)現。表2所列是節拍編碼表。若以1拍的時(shí)長(cháng)為400ms為例,1/2拍的時(shí)長(cháng)為200ms,1/4拍的時(shí)長(cháng)為100ms。首先,這樣,確定一個(gè)基本時(shí)長(cháng)的延時(shí)程序,比如以100ms為基本延時(shí)時(shí)間,那么,1/4拍可以調用一次延時(shí)程序,1/2拍需調用二次延時(shí)程序,1拍需調用四次延時(shí)程序,依次類(lèi)推。
51單片機相關(guān)文章:51單片機教程
評論