ppt內容預覽:
一、任務設計: 1、設計任務:設計并制作一個流水燈音樂盒。 2、設計要求 - 流水燈音樂盒電路使用兩個按鍵控制音樂盒,一個用來切換歌曲,另一個用來切換LED燈的變化花樣;
- 利用按鍵切換演奏出不同的樂曲;
- 蜂鳴器發出某個音調,與之相對應的LED亮起;
- 音樂盒共有五首歌曲,花樣燈花樣共計五種。
3.發揮部分 - 實此電路的程序只占用了2K左右,可以方便的添加更多的音樂和LED花樣,
4.創新部分 - 演奏完整的一首的歌曲,八路LED隨著音樂變化
- 八路LED變化出各種花樣,蜂鳴器隨著發出“嘀嘀”聲
- 按下按鍵1進入演奏音樂模式,再按時就可以切換歌曲,共擁有五首歌曲。
- 按下按鍵2進入花樣燈模式,再按時就可以切換LED花樣,共有五種花樣。
二、方案論證 2.1方案一:單片機接+5V電源供電,晶振電路產生單片機所需的時鐘信號,通過功能鍵產生外部中斷,控制音樂盒的上一首和下一首曲目,再由I/0接口輸出控制揚聲器發聲,LCD顯示。另外,復位電路在于營造一個程序運行的初始狀態,在程序出錯時,重新啟動單片機工作。系統組成框圖如圖1所示
圖1方案一 系統框圖 方案二:設計一個音樂播放器同樣使用AT89C51,蜂鳴器一端與一個按鈕串聯后再和P17焊接,另一端直接接地;P31和RST端口并聯后和主電源串接,如圖2所示: 圖2方案二系統框圖 2.2方案比較 方案一是通過按鍵控制系統的音樂播放。利用I/0口產生一定頻率的方波,驅動蜂鳴器,發出不同的音調,從而演奏出樂曲;采用LCD顯示信息,開機時有歡迎提示字符,播放時顯示歌曲序號或名稱;可通過功能鍵選擇樂曲暫停,播放;當鍵盤有鍵按下時,判斷鍵值,啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲,同時啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。同時啟動定時器T1,在LCD顯示歌曲號。通過單片機P1口控制,實現功能鍵盤的功能;功能鍵盤采用按鍵開關,通過單片機P2口控制,實現歌曲播放順序的調換和暫停播放功能;揚聲器由單片機的P3控制,實現歌曲播放。方案二是利用AT89C51芯片通過播放按鍵直接控制音樂,使得蜂鳴器發出聲音,方案一所需的電子元件少,這就大大減少了生產成本,此外,對于一個輕便易攜的音樂盒,其附加能耗越低越好。 2.3方案論證 雖然方案一的設計比較全面,但其難度較大,且編程方面要求較高;方案二要求簡單,容易實現,編程方面也較簡單,因設計的是翻蓋式音樂盒,其功能是在翻開翻蓋的同時開關閉合,播放音樂,翻蓋蓋上,開關斷開,音樂盒停止運行,因此方案二更符合實際需要達到了設計音樂盒的目的。 2.4 方案選擇 通過2.3的方案論證,決定選擇方案二,方案二的實施性更強。 三、總體方案 1.工作原理 本設計采用AT89C51單片機作為本系統的控制模塊。依據單片機技術原理,通過硬件電路制作以及軟件編譯,設計制作出一個多功能多功能音樂盒,最終達到設計電路的樂器演奏、點歌、存儲及顯示功能。設計中應用中斷系統和定時/計數原理控制演奏器發聲,對音樂發生所必須確定的音符和節拍分別用程序語言實現,可以用它來彈奏和播放樂曲。
2.總體設計 設計總體框架圖如圖1 音樂盒的系統結構以AT89C52單片機位控制核心,加上2個按鍵、時鐘復位電路、蜂鳴器、LED模塊組成。單片機負責接收按鍵的輸入,根據輸入控制音樂播放曲目和音樂花樣燈的顯示樣式以及蜂鳴器發音。
四、系統硬件設計(單元電路設計及分析) 1.AT89C51簡介 功能特性:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術制造,與工業80C51 產品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統可編程,亦適于 常規編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提 供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節Flash,256字節RAM, 32 位I/O 口線,看門狗定時器,2 個數據指針,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態邏 輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節在系統可編程 Flash AT89S52。 主要性能:與MCS-51單片機產品兼容、8K字節在系統可編程Flash存儲器、1000次擦寫周期、全靜態操作:0Hz~33Hz 、 三級加密程序存儲器 、32個可編程I/O口線 、三個16位定時器/計數器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數據指針、掉電標識符。 2. LED顯示模塊 LED顯示電路是由8個LED發光二極管組成,LED接到單片機的P1口,若為低電平,可使LED亮起。發光二極管的亮、滅由內部程序控制,8個LED發光二極管分別對應不同的音階,所以LED會隨著音階的變化按規律亮、滅。 
3.時鐘振蕩模塊 AT89C51中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一起構成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構成并聯振蕩電路。對外接電容C1,C2雖然沒有什么嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩定性、起振的難易程序及溫度穩定性。 如果使用石英晶體,我們推薦電容使用30PF  10PF,而如果使用陶瓷振蕩器建議選擇40PF  10PF。用戶也可以采用外部時鐘。采用外部時鐘的電路如圖示。這種情況下,外部時鐘脈沖接到XTAL1端,即內部時鐘發生器的輸入端,XTAL2則懸空。由于外部時鐘信號是通過一個2分頻觸發器后作為內部時鐘信號的,所以對外部時鐘信號的占空比沒有特殊要求,但最小高電平持續時間和最大的低電平持續時間應符合產品技術條件的要求。振蕩器電路圖如下: 晶振電路 4.按鍵控制模塊 按下按鍵1進入演奏音樂模式,再按時就可以切換歌曲,共擁有五首歌曲。 按下按鍵2進入花樣燈模式,再按時就可以切換LED花樣,共有五種花樣。當按下電路是就會回到流水燈樣式一。 6. 蜂鳴器電路 蜂鳴器用于音樂的發音,受P0.4腳的控制。 7.整體電路 系統整體電路如圖8 所示
圖8 系統總體電路圖 仿真圖 五、系統軟件設計流程 1.主程序流程如圖9所示 圖9 系統主程序流程 2. 播放音樂子程序流程圖10所示
 圖10 播放音樂子程序流程
六、測試及其結果分析 1.基本部分測試與分析 (1)第一種花樣燈顯示方式為:從D1移向D2,然后D1熄滅,再從D2移向D3,然后D2熄滅,以此類推,當循環一遍后,就從D4和D5分別向兩邊移動。 第一種花樣 (2)第二種花樣燈顯示方式為:從兩邊向中間移動,首先從D1移向D8,再從D8移向D2,以此類推,往復循環。 (1) 音調的確定 不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當于漢字“多來米發梭拉西”的讀音,這是唱曲時樂音的發音,所以叫“音調”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個等份,每一個等份叫一個“半音”。兩個音之間的距離有兩個“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,C–D、D–E、F–G、G–A、A–B兩音之間隔著一個黑鍵,他們之間的距離就是全音;E–F、B–C兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號或者b號的叫變化音。﹟叫升記號,表示把音在原來的基礎上升高半音,b叫降記音,表示在原來的基礎上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。 要產生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用定時器計時這半個周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。 利用AT89C51的內部定時器使其工作在計數器模式MODE1下,改變計數值TH0及TL0以產生不同頻率的方法。此外結束符和休止符可以分別用代碼00H和FFH來表示,若查表結果為00H,則表示曲子終了;若查表結果為FFH,則產生相應的停頓效果。 例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計數器計時956us/1us=956,在每次技術956次時將I/O反相,就可得到中音DO(523Hz)。 計數脈沖值與頻率的關系公式如下: N=Fi 2 Fr N:計算值;Fi:內部計時一次為1us,故其頻率為1MHz;Fr要產生的頻率。 其計數值的求法如下: T=65536-N=65536-Fi 2 Fr 例如:設K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的計算值 T=65536-N=65536-Fi 2 Fr=65536-1000000 2 Fr=65536-500000/Fr 低音DO的T=65536-500000/262=63627 低音DO的T=65536-500000/523=64580 低音DO的T=65536-500000/1047=65059 C調各音符頻率與計數值T的對照表如表1所示: 表1 C調各音符頻率與計數值T的對照表
(2)節拍的確定 若要構成音樂,光有音調是不夠的,還需要節拍,讓音樂具有旋律(固定的律動),而且可以調節各個音的快滿度。“節拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴格規定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。音持續時間的長短即時值,一般用拍數表示。休止符表示暫停發音。 一首音樂是由許多不同的音符組成的,而每個音符對應著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數對應的延時,構成音樂。了解音樂的一些基礎知識,我們可知產生不同頻率的音頻脈沖即能產生音樂。對于單片機來說,產生不同頻率的脈沖是非常方便的,利用單片機的定時/計數器來產生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應的頻率,以及單片機定時計數的關系。如表2節拍與節拍碼對照: 表2節拍與節拍碼對照
每個音符使用1個字節,字節的高4位代表音符的高低,低4位代表音符的節拍。如果1拍為0.4秒,1/4拍實0.1秒,只要設定延遲時間就可求得節拍的時間。假設1/4拍為1DELAY,則1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節拍就是它的倍數,如表3為1/4和1/8節拍的時間設定。 表3 1/4和1/8節拍的時間設定
(3)編碼 do re mi fa so la si分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調作為編碼的高4位,而播放時間作為低4位,如此音調和節拍就構成了一個編碼。以0xff作為曲譜的結束標志。 舉例1:音調do,發音長度為兩拍,即二分音符,將其編碼為0x18。 舉例2:音調re,發音長度為半拍,即八分音符,將其編碼為0x22 歌曲播放的設計。先將歌曲的簡譜進行編碼,儲存在一個數據類型為unsigned char 的數組中。程序從數組中取出一個數,然后分離出高4位得到音調,接著找出相應的值賦給定時器0,使之定時操作蜂鳴器,得出相應的音調;接著分離出該數的低4位,得到延時時間,接著調用軟件延時[1]。如表4簡譜對應的簡譜碼、T值、節拍數: 表4 簡譜對應的簡譜碼、T值、節拍數
七、總結 對比兩種方案的設計,可以看出方案一,不論在軟件設計,硬件設計上帶來許多便捷,更能夠體現符合實際生產的需要,節約成本,服務生活,引導節能環保的潮流,具有極強的現實意義和可行性,利用定時器可以產生各種固定頻率的方波信號,也可以產生包括"Do"、"Re"、"Me"--等音階在內的各種頻率聲音。將各個音階連接在一起,便可組成一支曲子或是演奏一段旋律。 八、設計心得體會 流水燈音樂盒設計是一項趣味性很強的設計,能激發我的濃厚興趣。同時要求我從程序編程,調試,軟件仿真和繪制開始,到硬件的焊接和調試,再到修改程序,在這期間我了解到了單片機開發的大致流程。 通過這次設計,也讓我學習到了很多新的東西,這些都讓我受益匪淺。單片機的定時器功能,LED的流水顯示,功能鍵盤的設計,這些內容都頗為豐富。有以前學習過的舊知識,也有很多未曾注意到得新知識,這些都曾使我的設計出錯,通過自己的努力,老師指導和同學的幫助,終于克服了一個一個的困難,把硬件實物順利做好,把軟件調試順利完成。通過這次設計能夠更熟悉的進行單片機的控制和編程,也從中發現了自己很多的不足,通過學習網上的資料和書本上的知識才能很好的完成任務,在實踐的過程中不斷地學習是更高效的學習方法,這次設計也有很多不足的地方,希望在以后的制作過程中能不斷地提高自己,做出更好、更有用的作品。
全部資料51hei下載地址:
流水燈音樂盒.rar
(3.4 MB, 下載次數: 187)
2018-6-26 21:17 上傳
點擊文件名下載附件
|