找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19638|回復(fù): 13
收起左側(cè)

基于單片機(jī)的音樂盒設(shè)計資料 含PCB與原理圖,源程序和報告

  [復(fù)制鏈接]
ID:358515 發(fā)表于 2018-6-25 16:12 | 顯示全部樓層 |閱讀模式
基于單片機(jī)的數(shù)字音樂盒設(shè)計,自己整理的一些資料,包括PCB,原理圖,程序,還有報告,實訓(xùn)的時候做的,可實現(xiàn)
賺點幣 謝謝謝謝
目錄
1 選題的背景              1
2 設(shè)計說明              1
2.1設(shè)計要求              1
2.2 附加功能              1
3 硬件設(shè)計              1
3.1 系統(tǒng)組成框圖              1
3.2單元電路設(shè)計              2
3.2.1 晶振電路              2
3.2.2 復(fù)位電路              2
3.2.3 按鍵              2
3.2.4 數(shù)碼管電路              2
3.2.5 蜂鳴器電路              3
3.2.6 彩燈電路              3
3.2.7 整體電路              4
4 程序設(shè)計              5
4.1音調(diào)、節(jié)拍以及編碼的確定方法              5
4.1.1 音調(diào)的確定              5
4.1.2 節(jié)拍的確定              5
4.1.3 編碼              6
4.2  主程序流程圖              6
4.3音樂播放程序流程圖              7
5 protel軟件仿真及PCB板              7
5.1 原理圖的繪制              8
5.2 Pcb圖              8
5.3 實物圖              9
6 實驗程序              10
7 總結(jié)              14
附錄              15

內(nèi)容摘要: 本設(shè)計是一個基于STC89C516單片機(jī)的音樂盒,該音樂盒主要由按鍵電路、復(fù)位電路、時鐘電路以及蜂鳴器組成。根據(jù)設(shè)計要求的“實現(xiàn)通過按鈕控制按順序播放或者單曲循環(huán)”要求,設(shè)計了一個二位按鈕實現(xiàn)對其的播放模式的控制,另設(shè)一個復(fù)位按鈕實現(xiàn)切換歌曲。用數(shù)碼管來實現(xiàn)對當(dāng)前曲目的顯示,另還設(shè)有花樣LED,播放歌曲時,蜂鳴器發(fā)出某個音調(diào),與之對應(yīng)的LED亮起。此次設(shè)計,利用PROTEUS進(jìn)行原理圖的繪制和keil相配合進(jìn)行仿真測試,在基本實現(xiàn)理想功能后,制作出實際電路,進(jìn)行排錯測試后,完成制作。





1 選題的背景

本次課設(shè)是應(yīng)用單片機(jī)原理和控制理論設(shè)計音樂演奏控制器的硬件電路,并利用C語言進(jìn)行程序設(shè)計。通過控制單片機(jī)內(nèi)部的定時器來產(chǎn)生不同頻率的方波,驅(qū)動喇叭發(fā)出不同的音調(diào)的音樂,在利用延遲來控制發(fā)音時間的長短。把樂譜轉(zhuǎn)化成相應(yīng)的定時常數(shù)就可以從發(fā)音設(shè)備中演奏出悅耳的音樂。


2 設(shè)計說明
2.1設(shè)計要求
  •   利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲
  •   設(shè)計按鈕實現(xiàn)歌曲順序播放或單曲循環(huán);
  •   存儲三首以上歌曲
2.2 附加功能

(1)用數(shù)碼管顯示當(dāng)前播放曲目;

(2) LED花樣彩燈隨播放音符變換;

(3)通過按鍵實現(xiàn)下一首歌的切換;

3  硬件設(shè)計
3.1 系統(tǒng)組成框圖
圖3-1系統(tǒng)組成框圖

本設(shè)計采用STC89C516RD+作為主控芯片,蜂鳴器作為輸出設(shè)備產(chǎn)生音樂,通過MOD鍵能實現(xiàn)播放模式的控制,數(shù)碼管(LED)能夠?qū)崟r的顯示當(dāng)前的歌曲號。其中P3.3外接按鍵,P0口用作數(shù)碼管輸出數(shù)據(jù)端口,P2口作LED輸出數(shù)據(jù)端口P1.1蜂鳴器端口。


3.2單元電路設(shè)計
3.2.1晶振電路

放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一中有一個用于構(gòu)成內(nèi)部振蕩器高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有什么嚴(yán)格的要求,但電容容量大小會輕微影響振蕩頻率的高低、振蕩器工作穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。振蕩器電路圖如下:

圖3-2-1晶振電路
3.2.2復(fù)位電路

復(fù)位電路的基本功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。

圖 3-2-2 復(fù)位電路
3.2.3按鍵
本設(shè)計,歌曲的切換采用復(fù)位開關(guān),播放模式,復(fù)位電路采用二位開關(guān)。
3.2.4 數(shù)碼管電路
利用P0口做數(shù)碼管輸出口,由于P0有的結(jié)構(gòu),做輸出時需上拉電阻。
圖3-2-4數(shù)碼管電路
3.2.5蜂鳴器電路

蜂鳴器根據(jù)結(jié)構(gòu)不同分為壓電式蜂鳴器和電磁式蜂鳴器;而兩種蜂鳴器又分為有源蜂鳴器和無源蜂鳴器,這里的源特指振蕩源;有源蜂鳴器直接加電就可以響起,無源蜂鳴器需要我們給提供振蕩源。理想的振蕩源為一定頻率的方波。由于系統(tǒng)采用了無源蜂鳴器,所以需要我們通過晶振產(chǎn)生一定頻率的方波信號,本次采用頻率為12MHZ的晶振來產(chǎn)生標(biāo)準(zhǔn)方波。

由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了,如圖3-2-5所示。

圖3-2-5蜂鳴器電路
3.2.6 彩燈電路
彩燈部分由P2口輸出,采用共陽接法,當(dāng)單片P2口相應(yīng)位輸出0對應(yīng)LED點亮。
圖3-2-6彩燈電路
3.2.7整體電路
圖3-2-7整體電路

4 程序設(shè)計
4.1音調(diào)、節(jié)拍以及編碼的確定方法

一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和節(jié)拍表示一個音符唱多長的時間。

4.1.1  音調(diào)的確定

不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時樂音的發(fā)音,所以叫“音調(diào)”,即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號的叫變化音。﹟叫升記號,表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。

要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用定時器計時這半個周期時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。利用AT89C51的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下,改變計數(shù)值TH0及TL0。此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計數(shù)器計時956us/1us=956,在每次技術(shù)956次時將I/O反相,就可得到中音DO(523Hz)。

4.1.2  節(jié)拍的確定

若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個音的快滿度!肮(jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。音持續(xù)時間的長短即時值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。

一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識,我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對于單片機(jī)來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時/計數(shù)器來產(chǎn)生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及單片機(jī)定時計數(shù)的關(guān)系。

4.1.3  編碼

do re mi fa so la si分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調(diào)作為編碼的高4位,而播放時間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個編碼。以0xff作為曲譜的結(jié)束標(biāo)志。比如,音調(diào)do,發(fā)音長度為兩拍,即二分音符,將其編碼為0x18。

歌曲播放的設(shè)計。先將歌曲的簡譜進(jìn)行編碼,儲存在一個數(shù)據(jù)類型為unsigned char 的數(shù)組中。程序從數(shù)組中取出一個數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時器0,使之定時操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時時間,接著調(diào)用軟件延時

4.2  主程序流程圖
圖4-2主程序流程圖
4.3音樂播放程序流程圖
圖4-3 音樂播放程序流程圖
5 protel軟件仿真及PCB板
5.1 原理圖的繪制
圖5-1原理圖
通過Protues仿真結(jié)果,這次課程設(shè)計的要求已全部滿足。
5.2 PCB圖
圖5-2PCB圖
5.3 實物圖

7 總結(jié)

一開始拿到題目的時候,先是拿出以前做過的實驗把這個題目大體的框架設(shè)計出來,確定需要哪些部分的東西,然后大致畫出原理圖。因為是音樂盒,所以蜂鳴器是必不可少的一部分,其次是時鐘電路和復(fù)位電路,由于設(shè)計要求需要有按鍵控制歌曲播放的模式是順序播放還是單曲循環(huán),所以這部分的按鍵電路也是必不可少的。蜂鳴器電路、時鐘電路、復(fù)位電路以及按鍵電路,這是電路的大體模型。接下來是每個電路的具體設(shè)計,仿真時蜂鳴器沒有加驅(qū)動電路,但是考慮到實際電路沒有加三極管驅(qū)動可能無法工作,所以在實際電路上加上了驅(qū)動電路。其實是按鍵電路,一開始考慮用中斷來實現(xiàn)這部分的功能,但是中斷口設(shè)計有下一曲按鍵和暫停按鍵,外部中斷不夠用,所以決定用一個二位開關(guān)來控制一個I/O口,在while循環(huán)中每次執(zhí)行循環(huán)時都檢測一下該端口的狀態(tài),為0時使歌曲計數(shù)加一,實現(xiàn)順序播放的功能。另外還添加了數(shù)碼管顯示當(dāng)前播放曲目。為了使設(shè)計多樣性,添加了根據(jù)音調(diào)變換LED彩燈,使播放不那么單調(diào)。

當(dāng)然過程也不是那么順利,也遇到了許多的問題。為了更好的實現(xiàn)功能,每個模塊的設(shè)計都要經(jīng)過一定的思索,特別是在程序部分上,編曲是最難的一部分。最后的焊接的時候,選材也是一個難題,焊接時由于粗心少焊接了幾個單片機(jī)引腳致使功能不能夠?qū)崿F(xiàn)。還有復(fù)位鍵一開始選擇了自復(fù)位開關(guān),導(dǎo)致復(fù)位端一直處于高電平狀態(tài),單片機(jī)無法正常工作,最后經(jīng)過排查才找出原因,換成二位開關(guān)。過程中雖然遇到了不少問題,但是經(jīng)過一系列的排錯和修正,也完成了本次的課程設(shè)計,過程也算了漫長而有趣。

全部資料51hei下載地址:
報告.doc (7.24 MB, 下載次數(shù): 206)
pcb.rar (147.19 KB, 下載次數(shù): 170)
程序.rar (58.82 KB, 下載次數(shù): 294)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:395128 發(fā)表于 2018-9-7 18:49 | 顯示全部樓層
你好 這個資料怎么才可以下載
回復(fù)

使用道具 舉報

ID:254815 發(fā)表于 2018-12-24 14:10 | 顯示全部樓層
樂曲怎么存進(jìn)去?
回復(fù)

使用道具 舉報

ID:469794 發(fā)表于 2019-1-17 17:39 | 顯示全部樓層
很棒很牛逼
回復(fù)

使用道具 舉報

ID:469923 發(fā)表于 2019-1-17 23:30 | 顯示全部樓層
你好 這個資料怎么才可以下載
回復(fù)

使用道具 舉報

ID:151626 發(fā)表于 2019-1-18 09:32 | 顯示全部樓層
很好的資料
回復(fù)

使用道具 舉報

ID:624669 發(fā)表于 2019-10-18 12:07 來自觸屏版 | 顯示全部樓層
求元器件清單
回復(fù)

使用道具 舉報

ID:652984 發(fā)表于 2019-11-30 14:54 | 顯示全部樓層
正好要學(xué)習(xí)
回復(fù)

使用道具 舉報

ID:745784 發(fā)表于 2020-5-7 08:55 | 顯示全部樓層
你好,這個資料怎樣才可以下載
回復(fù)

使用道具 舉報

ID:743654 發(fā)表于 2020-5-16 16:43 | 顯示全部樓層
很不錯,雖然功能不多,但是整套設(shè)計過程下來一定收獲不少,值得學(xué)習(xí)!
回復(fù)

使用道具 舉報

ID:767166 發(fā)表于 2020-6-2 09:11 | 顯示全部樓層
1519810852 發(fā)表于 2018-12-24 14:10
樂曲怎么存進(jìn)去?

雙擊單片機(jī)把程序放進(jìn)去
回復(fù)

使用道具 舉報

ID:767166 發(fā)表于 2020-6-2 09:13 | 顯示全部樓層
正好需要這個,很棒!
回復(fù)

使用道具 舉報

ID:941608 發(fā)表于 2021-6-22 08:58 | 顯示全部樓層
你好 我想問一下那個音樂盒里的LED燈它不變,一直在第二個亮,只有LED上面的小方塊在變,還有那個數(shù)碼管一直都是1是什么問題呀?
回復(fù)

使用道具 舉報

ID:1031013 發(fā)表于 2022-5-31 13:18 | 顯示全部樓層
資料很有參考價值,感謝老哥的貢獻(xiàn)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表