向清華 南京郵電大學(xué)通信與信息工程學(xué)院
當(dāng)今,在人們的娛樂(lè)休閑生活中,音樂(lè)是必不可少的一部分。而現(xiàn)在應(yīng)用最多的音樂(lè)播放軟件由于手機(jī)、電腦等硬件設(shè)備的功能限制,不能將樂(lè)曲與視覺(jué)感受很好的結(jié)合。本文從這一點(diǎn)出發(fā)設(shè)計(jì)了一種基于ATmega128單片機(jī)的燈光音樂(lè)控制器,可以實(shí)現(xiàn)傳統(tǒng)音樂(lè)播放軟件的基本功能,同時(shí)融合了對(duì)燈光的控制,以求達(dá)到更好的娛樂(lè)作用。
本課題實(shí)現(xiàn)的具體功能有:
1.由蜂鳴器播放出存放在單片機(jī)中的樂(lè)曲,可由CHANGE按鍵切換曲目,并將正在播放的曲目編號(hào)在液晶顯示屏上顯示;
2.由按鍵JIEZOU_F、JIEZOU_N、JIEZOU_S分別選擇播放歌曲的節(jié)奏為快、正常、慢,并將當(dāng)前播放的節(jié)拍值在液晶顯示屏上顯示出來(lái),同時(shí)在一個(gè)點(diǎn)陣屏上根據(jù)節(jié)奏逐列點(diǎn)亮顯示;
3.當(dāng)曲目號(hào)、節(jié)奏選定后便可點(diǎn)擊START按鍵播放所選的曲子,在液晶顯示屏上顯示“PLAY”狀態(tài);
4.在樂(lè)曲的播放過(guò)程中,可以點(diǎn)擊PAUSE按鍵將正在播放的樂(lè)曲暫停,在液晶顯示屏上顯示“PAUSE”狀態(tài),若再次點(diǎn)擊PAUSE按鍵,則可以從暫停的地方開(kāi)始繼續(xù)向后播放,在液晶顯示屏上顯示切換回“PLAY”狀態(tài);
5.在樂(lè)曲的播放過(guò)程中,可以點(diǎn)擊SILENCE按鍵將蜂鳴器置為靜音狀態(tài),再次點(diǎn)擊SILENCE按鍵即可切換回正常狀態(tài);
6.PINPU按鍵用來(lái)控制一個(gè)點(diǎn)陣屏顯示當(dāng)前播放的音階,用點(diǎn)陣屏的一列從下至上依次代表 1(Do)、2(Re)、3(Mi)、4(Fa)、5(Sol)、6(La)這6個(gè)音階;
7.在播放樂(lè)曲時(shí)液晶顯示屏上也同步顯示數(shù)字1、2、3、4、5、6分別對(duì)應(yīng)6個(gè)音階;
8.在樂(lè)曲播放時(shí)若點(diǎn)擊STOP按鍵,可提前結(jié)束播放,在液晶顯示屏上由“PLAY”狀態(tài)變?yōu)椤癝TOP”狀態(tài);若不點(diǎn)擊STOP按鍵,當(dāng)一首曲子播放結(jié)束時(shí),自動(dòng)退出“PLAY”狀態(tài),顯示“STOP”。
電路組成方框圖如圖1所示,電路原理圖如圖2所示。
圖1 :電路組成方框圖
圖2 :電路原理圖
復(fù)位電路接至ATMEGA128單片機(jī)的RESET引腳,可將單片機(jī)復(fù)位重置;晶振電路接至ATMEGA128的XTAL1與XTAL2引腳,當(dāng)單片機(jī)使用外部時(shí)鐘時(shí),時(shí)鐘信號(hào)可以由該晶振電路提供。復(fù)位、晶振電路圖如圖3。
圖3 :復(fù)位、晶振及接口電路
按鍵模塊接至ATMEGA128單片機(jī)的PB0~PB7、PG0,通過(guò)按鍵的選擇可以控制單片機(jī)實(shí)現(xiàn)相應(yīng)的燈光音樂(lè)控制器的功能。按鍵模塊的電路原理圖如圖4。
圖4 :按鍵模塊及接口電路圖
本課題中使用了10個(gè)按鍵,它們的實(shí)現(xiàn)原理與功能說(shuō)明如下。
a)一個(gè)按鍵用于復(fù)位功能,接至ATMEGA128的RESET引腳。當(dāng)按鍵按下時(shí)RESET引腳電平為低,即可復(fù)位單片機(jī);
b)三個(gè)按鍵用于選擇節(jié)奏,分別對(duì)應(yīng)節(jié)奏的快、中、慢。這三個(gè)按鍵分別接至ATMEGA128單片機(jī)的PB0、PB1、PB2引腳(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí),對(duì)應(yīng)的引腳電平變?yōu)榈碗娖?,在主函?shù)中將PINB與0x07相與,根據(jù)結(jié)果即可得知是哪個(gè)按鍵按下,并依此設(shè)置節(jié)拍值(等待定時(shí)器中斷的時(shí)間);
c)一個(gè)按鍵用于開(kāi)始樂(lè)曲的播放,該按鍵接至ATMEGA128單片機(jī)的PB3口(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí)PB3口變?yōu)榈碗娖健T谥骱瘮?shù)中將PINB與0x08相與,將結(jié)果與0x00比較即可知道按鍵是否按下,若按下即可開(kāi)始讀取音階,通過(guò)蜂鳴器播放;
d)一個(gè)按鍵用于停止樂(lè)曲的播放,該按鍵接至ATMEGA128單片機(jī)的PB4口(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí)PB4口變?yōu)榈碗娖健T谥袛喑绦蛑袑INB與0x10相與,將結(jié)果與0x00比較即可知道按鍵是否按下,若按下,直接將指針指向樂(lè)曲的最后一個(gè)音階,完成樂(lè)曲的停止操作;
e)一個(gè)按鍵用于樂(lè)曲的頻譜(音階),該按鍵接至ATMEGA128單片機(jī)的PB5口(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí)PB5口變?yōu)榈碗娖?。在中斷程序中將PINB與0x20相與,將結(jié)果與0x00比較即可知道按鍵是否按下,若按下通過(guò)改變連接點(diǎn)陣屏的I/O口電平即可實(shí)現(xiàn)點(diǎn)陣的點(diǎn)亮;
f)一個(gè)按鍵用于樂(lè)曲的暫停操作,該按鍵接至ATMEGA128單片機(jī)的PB6口(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí)PB6口變?yōu)榈碗娖?。在中斷程序中將PINB與0x40相與,將結(jié)果與0x00比較即可知道按鍵是否按下,若按下將單片機(jī)置于循環(huán),等待暫停鍵再次按下后從原來(lái)的地方往后繼續(xù)播放;
g)一個(gè)按鍵用于靜音的操作,該按鍵接至ATMEGA128單片機(jī)的PG0口(端口初始化為輸入、帶上拉電阻),當(dāng)按鍵按下時(shí)PG0口變?yōu)榈碗娖?。在中斷程序中將PING與0x01相與,將結(jié)果與0x00比較即可知道按鍵是否按下,若按下將連接蜂鳴器的I/O口置恒為低電平,而指針繼續(xù)往后移動(dòng),當(dāng)靜音按鍵再次按下,將蜂鳴器重新置于正常工作的狀態(tài);
該模塊放置了兩個(gè)MATRIX-8*8-GREEN點(diǎn)陣屏,接至ATMEGA128單片機(jī)的PA0~PA7、PD0~PD7,分別用于顯示節(jié)奏的快慢和音樂(lè)的頻譜(音階)的變化。點(diǎn)陣顯示模塊電路原理圖如圖5,接口模塊如圖6。
圖5 :點(diǎn)陣顯示模塊電路
圖6 :點(diǎn)陣顯示接口電路
其中,圖5中左邊一個(gè)點(diǎn)陣用于顯示音樂(lè)節(jié)奏的快慢;右邊一個(gè)點(diǎn)陣用于顯示頻譜(音階),該點(diǎn)陣可以由按鍵PINPU選擇是否顯示。
蜂鳴器模塊為發(fā)出音樂(lè)聲音的模塊,蜂鳴器的一端接至ATMEGA128的PC0口,另一端接地,由單片機(jī)程序控制PC0口的電平變化的頻率以改變蜂鳴器發(fā)出的音階,通過(guò)不同音階的組合便可形成音樂(lè)。蜂鳴器模塊原理圖如圖7。
圖7 :蜂鳴器及接口電路
液晶顯示模塊用于顯示當(dāng)前播放狀態(tài)及當(dāng)前拍值的時(shí)長(zhǎng)、頻段的范圍。該模塊使用的是LM041L液晶屏,其中VSS、VEE接至電源,VDD接地,RS引腳接至PF0,RW引腳接至PF1,使能端E接至PF2,通過(guò)這三個(gè)引腳可實(shí)現(xiàn)對(duì)液晶屏的命令/數(shù)據(jù)的讀/寫(xiě);液晶屏的D0~D7端分別接至單片機(jī)的PE0~PE7。液晶顯示模塊原理圖如圖8所示。
圖8 :液晶顯示及接口電路