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