向清華 南京郵電大學通信與信息工程學院
當今,在人們的娛樂休閑生活中,音樂是必不可少的一部分。而現在應用最多的音樂播放軟件由于手機、電腦等硬件設備的功能限制,不能將樂曲與視覺感受很好的結合。本文從這一點出發設計了一種基于ATmega128單片機的燈光音樂控制器,可以實現傳統音樂播放軟件的基本功能,同時融合了對燈光的控制,以求達到更好的娛樂作用。
本課題實現的具體功能有:
1.由蜂鳴器播放出存放在單片機中的樂曲,可由CHANGE按鍵切換曲目,并將正在播放的曲目編號在液晶顯示屏上顯示;
2.由按鍵JIEZOU_F、JIEZOU_N、JIEZOU_S分別選擇播放歌曲的節奏為快、正常、慢,并將當前播放的節拍值在液晶顯示屏上顯示出來,同時在一個點陣屏上根據節奏逐列點亮顯示;
3.當曲目號、節奏選定后便可點擊START按鍵播放所選的曲子,在液晶顯示屏上顯示“PLAY”狀態;
4.在樂曲的播放過程中,可以點擊PAUSE按鍵將正在播放的樂曲暫停,在液晶顯示屏上顯示“PAUSE”狀態,若再次點擊PAUSE按鍵,則可以從暫停的地方開始繼續向后播放,在液晶顯示屏上顯示切換回“PLAY”狀態;
5.在樂曲的播放過程中,可以點擊SILENCE按鍵將蜂鳴器置為靜音狀態,再次點擊SILENCE按鍵即可切換回正常狀態;
6.PINPU按鍵用來控制一個點陣屏顯示當前播放的音階,用點陣屏的一列從下至上依次代表 1(Do)、2(Re)、3(Mi)、4(Fa)、5(Sol)、6(La)這6個音階;
7.在播放樂曲時液晶顯示屏上也同步顯示數字1、2、3、4、5、6分別對應6個音階;
8.在樂曲播放時若點擊STOP按鍵,可提前結束播放,在液晶顯示屏上由“PLAY”狀態變為“STOP”狀態;若不點擊STOP按鍵,當一首曲子播放結束時,自動退出“PLAY”狀態,顯示“STOP”。
電路組成方框圖如圖1所示,電路原理圖如圖2所示。

圖1 :電路組成方框圖

圖2 :電路原理圖
復位電路接至ATMEGA128單片機的RESET引腳,可將單片機復位重置;晶振電路接至ATMEGA128的XTAL1與XTAL2引腳,當單片機使用外部時鐘時,時鐘信號可以由該晶振電路提供。復位、晶振電路圖如圖3。

圖3 :復位、晶振及接口電路
按鍵模塊接至ATMEGA128單片機的PB0~PB7、PG0,通過按鍵的選擇可以控制單片機實現相應的燈光音樂控制器的功能。按鍵模塊的電路原理圖如圖4。

圖4 :按鍵模塊及接口電路圖
本課題中使用了10個按鍵,它們的實現原理與功能說明如下。
a)一個按鍵用于復位功能,接至ATMEGA128的RESET引腳。當按鍵按下時RESET引腳電平為低,即可復位單片機;
b)三個按鍵用于選擇節奏,分別對應節奏的快、中、慢。這三個按鍵分別接至ATMEGA128單片機的PB0、PB1、PB2引腳(端口初始化為輸入、帶上拉電阻),當按鍵按下時,對應的引腳電平變為低電平,在主函數中將PINB與0x07相與,根據結果即可得知是哪個按鍵按下,并依此設置節拍值(等待定時器中斷的時間);
c)一個按鍵用于開始樂曲的播放,該按鍵接至ATMEGA128單片機的PB3口(端口初始化為輸入、帶上拉電阻),當按鍵按下時PB3口變為低電平。在主函數中將PINB與0x08相與,將結果與0x00比較即可知道按鍵是否按下,若按下即可開始讀取音階,通過蜂鳴器播放;
d)一個按鍵用于停止樂曲的播放,該按鍵接至ATMEGA128單片機的PB4口(端口初始化為輸入、帶上拉電阻),當按鍵按下時PB4口變為低電平。在中斷程序中將PINB與0x10相與,將結果與0x00比較即可知道按鍵是否按下,若按下,直接將指針指向樂曲的最后一個音階,完成樂曲的停止操作;
e)一個按鍵用于樂曲的頻譜(音階),該按鍵接至ATMEGA128單片機的PB5口(端口初始化為輸入、帶上拉電阻),當按鍵按下時PB5口變為低電平。在中斷程序中將PINB與0x20相與,將結果與0x00比較即可知道按鍵是否按下,若按下通過改變連接點陣屏的I/O口電平即可實現點陣的點亮;
f)一個按鍵用于樂曲的暫停操作,該按鍵接至ATMEGA128單片機的PB6口(端口初始化為輸入、帶上拉電阻),當按鍵按下時PB6口變為低電平。在中斷程序中將PINB與0x40相與,將結果與0x00比較即可知道按鍵是否按下,若按下將單片機置于循環,等待暫停鍵再次按下后從原來的地方往后繼續播放;
g)一個按鍵用于靜音的操作,該按鍵接至ATMEGA128單片機的PG0口(端口初始化為輸入、帶上拉電阻),當按鍵按下時PG0口變為低電平。在中斷程序中將PING與0x01相與,將結果與0x00比較即可知道按鍵是否按下,若按下將連接蜂鳴器的I/O口置恒為低電平,而指針繼續往后移動,當靜音按鍵再次按下,將蜂鳴器重新置于正常工作的狀態;
該模塊放置了兩個MATRIX-8*8-GREEN點陣屏,接至ATMEGA128單片機的PA0~PA7、PD0~PD7,分別用于顯示節奏的快慢和音樂的頻譜(音階)的變化。點陣顯示模塊電路原理圖如圖5,接口模塊如圖6。

圖5 :點陣顯示模塊電路

圖6 :點陣顯示接口電路
其中,圖5中左邊一個點陣用于顯示音樂節奏的快慢;右邊一個點陣用于顯示頻譜(音階),該點陣可以由按鍵PINPU選擇是否顯示。
蜂鳴器模塊為發出音樂聲音的模塊,蜂鳴器的一端接至ATMEGA128的PC0口,另一端接地,由單片機程序控制PC0口的電平變化的頻率以改變蜂鳴器發出的音階,通過不同音階的組合便可形成音樂。蜂鳴器模塊原理圖如圖7。

圖7 :蜂鳴器及接口電路
液晶顯示模塊用于顯示當前播放狀態及當前拍值的時長、頻段的范圍。該模塊使用的是LM041L液晶屏,其中VSS、VEE接至電源,VDD接地,RS引腳接至PF0,RW引腳接至PF1,使能端E接至PF2,通過這三個引腳可實現對液晶屏的命令/數據的讀/寫;液晶屏的D0~D7端分別接至單片機的PE0~PE7。液晶顯示模塊原理圖如圖8所示。

圖8 :液晶顯示及接口電路