《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的音樂(lè)播放器的仿真與制作
基于單片機(jī)的音樂(lè)播放器的仿真與制作
電子元器件應(yīng)用
遠(yuǎn) 飛 無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院
摘要: 本文通過(guò)Proteus ISIS對(duì)單片機(jī)音樂(lè)播放器進(jìn)行了仿真,并在仿真的基礎(chǔ)上制作了一個(gè)音樂(lè)播放器實(shí)物,其音樂(lè)播放的效果很好。作者通過(guò)仿真與制作,對(duì)這兩者進(jìn)行了比較與總結(jié),并給出了兩種電路圖及程序流程圖,希望能成為讀者的參考。
關(guān)鍵詞: 單片機(jī) 音樂(lè)播放器
Abstract:
Key words :

摘要:為了解決專用音樂(lè)播放芯片只能一次性燒錄、播放內(nèi)容不可變的缺點(diǎn),文中給出了采用單片機(jī)來(lái)設(shè)計(jì)音樂(lè)播放器,同時(shí)通過(guò)Proteus軟件對(duì)基于AT89S52單片機(jī)的音樂(lè)播放器進(jìn)行仿真的實(shí)現(xiàn)方法。利用該方法設(shè)計(jì)的播放器的播放內(nèi)容和歌曲數(shù)量可以隨時(shí)修改。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);音樂(lè)播放器;Proteus

0 引言
    播放音樂(lè)最簡(jiǎn)單的方法就是采用專用音樂(lè)芯片,該方法的缺點(diǎn)是音樂(lè)芯片只能一次性燒錄,播放的內(nèi)容不可變。而采用單片機(jī)播放音樂(lè)則能克服這一缺點(diǎn),其播放的內(nèi)容以及歌曲的數(shù)量都可以隨時(shí)修改。同時(shí),使用軟件Proteus在產(chǎn)品開(kāi)發(fā)的初期對(duì)設(shè)計(jì)進(jìn)行仿真無(wú)疑是一種提高效率和降低成本的好辦法,但是仿真畢竟有一定的局限性,要實(shí)踐起來(lái)可能會(huì)碰到一些問(wèn)題。為此,本文通過(guò)Proteus軟件對(duì)用AT89S52單片機(jī)播放音樂(lè)進(jìn)行了仿真,指出了實(shí)際制作過(guò)程中需要注意的地方。

1 硬件電路設(shè)計(jì)
1.1 仿真軟件Proteus簡(jiǎn)介
    Proteus的ISIS是一款Labcenter出品的電路分析實(shí)物仿真系統(tǒng),可仿真各種電路和IC,它支持單片機(jī)且元件庫(kù)齊全,使用方便,是不可多得的專業(yè)單片機(jī)軟件仿真系統(tǒng)。目前可支持的單片機(jī)類型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。
1.2 電路設(shè)計(jì)
    圖1所示是單片機(jī)音樂(lè)播放器的仿真原理圖。在Proteus仿真軟件中,按一下按鈕,蜂鷗器即可播放音樂(lè)。

a.JPG


    事實(shí)上,按照?qǐng)D1所示原理圖來(lái)焊接電路,其結(jié)果可能沒(méi)有任何效果。而圖2所示才是單片機(jī)音樂(lè)播放器的實(shí)際制作電路。與圖1相比,實(shí)
際電路多了兩個(gè)部分:一是單片機(jī)左邊最小系統(tǒng)所需的電路部分,而仿真軟件中則將這些省略了;另一個(gè)是單片機(jī)右邊多了一個(gè)三極管。之所以要加這個(gè)三極管,主要是為了放大蜂鳴器的驅(qū)動(dòng)電流,而仿真軟件里面所有的元件都是理想元件,所以,仿真能實(shí)現(xiàn)的效果,實(shí)際做出來(lái)往往沒(méi)有效果。因此,要想在實(shí)際中實(shí)現(xiàn)滿意的效果還要憑借硬件經(jīng)驗(yàn)進(jìn)行反復(fù)的摸索和嘗試。

b.JPG



2 軟件設(shè)計(jì)
2.1 播放原理
    聲音的頻譜范圍通常約為幾十到幾千赫茲,通過(guò)程序控制單片機(jī)的I/O口可輸出不同頻率的矩形波。當(dāng)該矩形波的頻率位于聲音頻譜范圍內(nèi)時(shí),在單片機(jī)的I/O口接上喇叭就能發(fā)出聲音。然后利用延時(shí)程序控制矩形波的高、低電平持續(xù)時(shí)間,即改變矩形波的頻率,即可產(chǎn)生不同的音調(diào),從而發(fā)出不同的聲音,再讓矩形波輸出的長(zhǎng)短對(duì)應(yīng)節(jié)拍,就可以實(shí)現(xiàn)單片機(jī)對(duì)音樂(lè)的演奏。
2.2 音調(diào)和節(jié)拍編碼
    單片機(jī)奏樂(lè)只需弄清楚兩個(gè)概念,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率,節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。
    由于各個(gè)音調(diào)對(duì)應(yīng)的頻率是已知的,因此,播放音樂(lè)時(shí),應(yīng)對(duì)樂(lè)曲中出現(xiàn)的音調(diào)進(jìn)行編碼,并找出單片機(jī)播放這些音調(diào)所對(duì)應(yīng)的定時(shí)初值。表1所列是音調(diào)編碼與定時(shí)器的初值表,其中頻率是已知的,編碼可以自己設(shè)置,而定時(shí)初值是怎樣得來(lái)的呢?下面以“低6”為例進(jìn)行說(shuō)明。“低6”的頻率f為440 Hz,其對(duì)應(yīng)的周期為:T=1/f=1/440=272μs。單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來(lái)回取反的時(shí)間應(yīng)為:t=T/2=2272/2=1136μs。單片機(jī)奏樂(lè)時(shí),其定時(shí)器為工作方式1,若以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖,如果單片機(jī)晶振為12MHz,則1μs計(jì)數(shù)一次。所以,對(duì)于“低6”,其定時(shí)器的初值應(yīng)該是:216-1136=64400。
    對(duì)節(jié)拍的控制可通過(guò)延時(shí)程序來(lái)實(shí)現(xiàn)。表2所列是節(jié)拍編碼表。若以1拍的時(shí)長(zhǎng)為400ms為例,1/2拍的時(shí)長(zhǎng)為200ms,1/4拍的時(shí)長(zhǎng)為100ms。首先,這樣,確定一個(gè)基本時(shí)長(zhǎng)的延時(shí)程序,比如以100ms為基本延時(shí)時(shí)間,那么,1/4拍可以調(diào)用一次延時(shí)程序,1/2拍需調(diào)用二次延時(shí)程序,1拍需調(diào)用四次延時(shí)程序,依次類推。
2.3 編程
    音調(diào)和節(jié)拍都進(jìn)行過(guò)編碼后,那么,一首樂(lè)曲就可以用若干個(gè)8位的簡(jiǎn)碼表示。比如“生日快樂(lè)歌”的第一個(gè)簡(jiǎn)碼是“82H”,由表1可知,其高四位“8”表示音調(diào)“中5”,對(duì)應(yīng)的頻率是784Hz,對(duì)應(yīng)的定時(shí)器初值是64898;另由表2可知,其低四位“2”表示節(jié)拍為“2/4拍”。這樣,任意一首樂(lè)曲的簡(jiǎn)碼都可以通過(guò)樂(lè)譜提取軟件獲得,而得到簡(jiǎn)碼后,就可以編程了。圖3所示是單片機(jī)播放音樂(lè)的程序流程圖,本文使用的是定時(shí)器0,音調(diào)的高低由定時(shí)器來(lái)控制P3.7并按一定頻率取反實(shí)現(xiàn),節(jié)拍的長(zhǎng)短由延時(shí)程序控制。流程圖中的“TABLE”是由表1中的定時(shí)初值組成的。

c.JPG

d.JPG

e.JPG



3 結(jié)束語(yǔ)
    本文通過(guò)Proteus ISIS對(duì)單片機(jī)音樂(lè)播放器進(jìn)行了仿真,并在仿真的基礎(chǔ)上制作了一個(gè)音樂(lè)播放器實(shí)物,其音樂(lè)播放的效果很好。作者通過(guò)仿真與制作,對(duì)這兩者進(jìn)行了比較與總結(jié),并給出了兩種電路圖及程序流程圖,希望能成為讀者的參考。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。