版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)(說(shuō)明書)</b></p><p><b> 電子音樂(lè)盒的設(shè)計(jì)</b></p><p> 2013年01月 12日</p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 題目: 電子音樂(lè)
2、盒的設(shè)計(jì) </p><p> 課程: 單片機(jī)課程設(shè)計(jì) </p><p> 課程設(shè)計(jì)時(shí)間 2012年 12月21 日 至2012年1 月3日 共 2 周</p><p> 課程設(shè)計(jì)工作內(nèi)容與基本要求(設(shè)計(jì)要求、設(shè)計(jì)任務(wù)、工作計(jì)劃、所需相關(guān)資料
3、)(紙張不夠可加頁(yè))</p><p><b> 1.設(shè)計(jì)要求</b></p><p> 查閱資料,了解單片機(jī)控制單音喇叭發(fā)聲原理;設(shè)計(jì)基于單片機(jī)的電子音樂(lè)盒;通過(guò)按鈕可選擇不同的音樂(lè)。 </p><p><b> 創(chuàng)新設(shè)計(jì):</b></p><p> 1、安裝復(fù)位鍵,暫停、播放鍵;
4、 </p><p> 2、有6首不同的音樂(lè)用程序編出可供選擇。</p><p> 2. 設(shè)計(jì)任務(wù)與要求</p><p> 2.1系統(tǒng)硬件電路設(shè)計(jì)</p><p> 根據(jù)該系統(tǒng)設(shè)計(jì)的功能要求選擇所用元器件,設(shè)計(jì)硬件電路。要求用Proteus繪制整個(gè)系統(tǒng)電路原理圖。</p><p><b> 2.2
5、軟件設(shè)計(jì)</b></p><p> 根據(jù)該系統(tǒng)要求的功能進(jìn)行軟件設(shè)計(jì),繪制整個(gè)系統(tǒng)的軟件流程圖;根據(jù)流程圖編寫程序并匯編調(diào)試通過(guò);列出軟件清單,軟件清單要求逐條加以注釋。</p><p> 2.3 Proteus仿真</p><p> 用Proteus對(duì)系統(tǒng)進(jìn)行仿真并進(jìn)行軟硬件調(diào)試。</p><p> 2.4 編寫設(shè)計(jì)說(shuō)明
6、書</p><p> 內(nèi)容包括任務(wù)書、設(shè)計(jì)方案分析、硬件部分設(shè)計(jì)、軟件部分設(shè)計(jì)、調(diào)試結(jié)果整理分析、設(shè)計(jì)調(diào)試的心得體會(huì)等,字?jǐn)?shù)不少于4000字;硬件部分設(shè)計(jì)要繪制整個(gè)系統(tǒng)電路原理圖,對(duì)各部分電路設(shè)計(jì)原理做出說(shuō)明;軟件設(shè)計(jì)部分要繪制整個(gè)系統(tǒng)及各部分的軟件流程圖,列出程序清單,逐條加以注釋,并在各功能塊前加程序功能注釋。</p><p> 3.工作計(jì)劃 </p><
7、p><b> 4.主要參考資料</b></p><p> 單片機(jī)課程設(shè)計(jì)指導(dǎo)書 皮大能 北京理工大學(xué)出版社2010.7</p><p> 8051單片機(jī)實(shí)踐與應(yīng)用 吳金戎 清華大學(xué)出版社2003.8</p><p> 單片機(jī)技術(shù)基礎(chǔ)教程與實(shí)踐 夏路易 電子工業(yè)出版社 2008.1</p><p
8、> MCS-51單片機(jī)原理接口及應(yīng)用王質(zhì)樸 北京理工大學(xué)出版社2009.11</p><p> 基于Proteus的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真實(shí)例 蔣輝平 機(jī)械工業(yè)出版社 2009.7</p><p><b> 指導(dǎo)老師簽字:</b></p><p> 日 期:</p><p><b&
9、gt; 電子音樂(lè)盒</b></p><p> 1 設(shè)計(jì)任務(wù)和要求 ................................................. 1</p><p> 2 總體方案設(shè)計(jì) ................................................. 1</p><p> 3 硬件設(shè)
10、計(jì) ................................................... 2</p><p> 3.1 硬件電路 ............................................. 2</p><p> 3.2 系統(tǒng)總框圖 .............................................
11、 2</p><p> 3.3 器件選擇 ............................................. 2</p><p> 3.4 原理圖設(shè)計(jì) ............................................ 3</p><p> 3.5 原理說(shuō)明 .................
12、............................ 6</p><p> 4 軟件設(shè)計(jì) ................................................... 7</p><p> 5 仿真、安裝和調(diào)試 .............................................. 8</p><p>
13、 收獲與體會(huì) ...................................................... 10</p><p> 參考文獻(xiàn) ........................................................11</p><p> 附件1:元件清單 .................................
14、..............12</p><p> 附件2: 總電路圖 ...............................................13</p><p> 附件3:音樂(lè)程序 ...............................................14</p><p> 1 設(shè)計(jì)任務(wù)和要求<
15、/p><p> 1.利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演樂(lè)曲(內(nèi)存六首樂(lè)曲)。</p><p> 2.采用七段數(shù)碼管顯示當(dāng)前播放的歌曲序號(hào)。</p><p> 3.可通過(guò)功能鍵選擇樂(lè)曲,包括暫停和播放,上一曲,下一曲,復(fù)位。</p><p><b> 2 總體方案設(shè)計(jì)</b></
16、p><p> 1. 要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O口反相,就可在I/O腳上得到此頻率的脈沖</p><p> 2. 利用8051的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變記數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。例如頻率為
17、523HZ,其周期T=1/523=1912微秒,因此只要令計(jì)數(shù)器定時(shí)956/1=956在每記數(shù)9次時(shí)將I/O口反相,就可得到中音D0(523HZ)。</p><p> 記數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p> N=Fi/2/Fr N:記數(shù)值</p><p> Fi:內(nèi)部計(jì)時(shí)一次為1微秒.故其頻率為1MHZ</p><p>
18、;<b> Fr;要產(chǎn)生的頻率</b></p><p> 3. 起記數(shù)值的求法如下:</p><p> T=65536-N=65536-Fi/2/Fr</p><p> 例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的記數(shù)值。</p><p>
19、T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr</p><p> 低音D0的T=65536-500000/262=63627</p><p> 中音D0的T=65536-500000/523=64580</p><p> 低音D0的T=65536-500000/1047=65059</
20、p><p><b> 3 系統(tǒng)硬件設(shè)計(jì)</b></p><p><b> 3.1 硬件電路</b></p><p> 本設(shè)計(jì)中用到89C51單片機(jī),喇叭,七段顯示數(shù)碼管LED。(硬件電路原理圖如圖1所示)</p><p> 3.2 系統(tǒng)總框圖</p><p><
21、;b> 圖1 總體方案圖</b></p><p><b> 3.3 器件選擇</b></p><p><b> 1、單片機(jī)的選擇</b></p><p> 采用ATMEL公司生產(chǎn)的AT89C51單片機(jī)作為電子音樂(lè)盒的核心部件,AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片
22、機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p> 2、7SEG-DIGITAL簡(jiǎn)介</p>
23、;<p> 七段顯示器顯示原理七段顯示器可用來(lái)顯示單一的十進(jìn)制或十六進(jìn)制的數(shù)字,它是由八個(gè)發(fā)光二極管所構(gòu)成的( 每一個(gè)二極管依位置不同而賦予不同的名稱,請(qǐng)參見(jiàn)圖4.1 ) 。我們可以簡(jiǎn)單的說(shuō),要產(chǎn)生數(shù)字,便是點(diǎn)亮特定數(shù)據(jù)的發(fā)光二極管。例如要產(chǎn)生數(shù)字「0」,須只點(diǎn)亮A、B、C、D、E、F等節(jié)段的發(fā)光二極管;要產(chǎn)生數(shù)字「5」,則須點(diǎn)亮A、C、D、F、G等節(jié)段發(fā)光二極管,以此類推,參見(jiàn)圖4.6。因此,以共陽(yáng)極七段顯示器而言,要
24、產(chǎn)生數(shù)字「0」,必須控制Cyclone II FPGA芯片接連至A、B、C、D、E、F 等接腳呈現(xiàn)“低電位”,使電路形成通路狀態(tài)。表4.1則為共陽(yáng)極七段顯示器顯示之?dāng)?shù)字編碼。 </p><p><b> 3.4 原理圖設(shè)計(jì)</b></p><p><b> 1、晶振電路</b></p><p> 單片機(jī)需要一個(gè)時(shí)
25、間基準(zhǔn)來(lái)為各種操作提供秩序,此電路叫時(shí)鐘電路,采用不同的接線方式可以獲得不同時(shí)鐘電路,有內(nèi)部時(shí)鐘電路和外部時(shí)鐘電路,外部時(shí)鐘電路會(huì)使電路復(fù)雜,故采用的是內(nèi)部時(shí)鐘電路。時(shí)鐘電路在單片機(jī)的外部通過(guò)XTAL1,XTAL2這兩個(gè)引腳跨接晶體振蕩器和微調(diào)電容,構(gòu)成穩(wěn)定的自激振蕩器.本系統(tǒng)采用的為12MHz的晶振,一個(gè)機(jī)器周期為1us,C1,C2為30uF。</p><p><b> 2、復(fù)位電路</b&g
26、t;</p><p> 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。</p><p> 復(fù)位電路分為上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位,如圖2所示。RST引腳是復(fù)位信號(hào)的輸入端,復(fù)位信號(hào)是高電平有效.這次采用的是手動(dòng)復(fù)位,復(fù)位通過(guò)電容C3,C4和電阻
27、R1,R2來(lái)實(shí)現(xiàn),按鍵手動(dòng)復(fù)位是圖中復(fù)位鍵來(lái)實(shí)現(xiàn)的。</p><p> 圖 2 晶振與復(fù)位電路</p><p><b> 3、鍵盤部分</b></p><p> 鍵盤是由一組按壓式或觸摸式開(kāi)關(guān)構(gòu)成的陣列,是一種常用的輸入設(shè)備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。</p><p> (1).編碼鍵盤通過(guò)硬件電路
28、產(chǎn)生被按按鍵的鍵碼,這種鍵盤所需程序簡(jiǎn)單,但硬件電路復(fù)雜、價(jià)格昂貴通常不被單片機(jī)系統(tǒng)采用。</p><p> ?。?.)非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴(yán)格的對(duì)應(yīng)關(guān)系,而要由所用的程序來(lái)決定。非編碼鍵盤的硬件接口簡(jiǎn)單,但是要占用較多的CPU時(shí)間,通常采用可編程鍵盤管理芯片來(lái)克服這個(gè)缺點(diǎn)。本設(shè)計(jì)使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開(kāi)關(guān)。</p><p
29、><b> 圖 3 鍵盤電路</b></p><p> 3、7SEG-DIGITAL LCD</p><p> 七段顯示器LCD顯示原理用P1.0-P1.6控制七段碼a,b,c,d,e,f</p><p> 圖4 LCD顯示電路</p><p><b> 4、蜂鳴器部分</b>&l
30、t;/p><p> 一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是一類有將壓力與電流相互轉(zhuǎn)換能力的特殊陶瓷。這種能力緣于其特殊的晶體結(jié)構(gòu)。當(dāng)壓電陶瓷在一定方向上受到一個(gè)壓力使其晶體結(jié)構(gòu)發(fā)生形變時(shí),它就會(huì)在內(nèi)部產(chǎn)生一個(gè)電流,并且電流的變化與壓力的變化密切相關(guān)。反之亦然。所以利用這一特性,在壓電陶瓷上通過(guò)一定頻率的電流,就會(huì)引起壓電陶瓷微小形變,這一形變帶動(dòng)空氣發(fā)生振動(dòng),如果頻率適當(dāng),就可以被人耳所聽(tīng)見(jiàn),也就是產(chǎn)
31、生了蜂鳴聲。</p><p> 由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無(wú)法直接驅(qū)動(dòng)的,所以要利用放大電路來(lái)驅(qū)動(dòng),一般使用三極管來(lái)放大電流就可以了。</p><p><b> 圖5 蜂鳴器電路</b></p><p><b> 3.5 原理說(shuō)明</b></p><p>
32、當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂(lè)曲。同時(shí)啟動(dòng)定時(shí)器T1,顯示歌曲號(hào)。</p><p> (1)硬件電路中用、分別接S1、S2作為上、下一曲的功能鍵</p><p> ?。?)用P1.0-P1.6控制七段碼a,b,c,d,e,f。</p><p> ?。?)用P2.0口控制喇叭。</p><
33、p> ?。?)電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf。</p><p> 圖1 音樂(lè)盒原理圖</p><p><b> 4 軟件設(shè)計(jì)</b></p><p> 本程序可以實(shí)現(xiàn)課程設(shè)計(jì)的基本要求,并可以通過(guò)按鍵播放兩首歌曲,程序流程圖如下:</p><p> 5 仿真、安裝和調(diào)
34、試</p><p> 按照上面設(shè)計(jì)的電路在proteus軟件內(nèi)畫圖, 打開(kāi)單片機(jī)軟件開(kāi)發(fā)系統(tǒng)Keil,選擇89c51單片機(jī),在其中編寫程序,運(yùn)行生成一個(gè)后綴名為hex的文件,然后將該文件下載到proteus中的AT89c51單片機(jī)中進(jìn)行仿真,觀察實(shí)驗(yàn)現(xiàn)象。仿真能實(shí)現(xiàn)播放音樂(lè),按鍵選擇曲目,暫停、播放,復(fù)位功能。仿真成功后,安裝好實(shí)驗(yàn)板,然后將音樂(lè)程序下載到電路板內(nèi) ,觀察結(jié)果。能實(shí)現(xiàn)播放音樂(lè),按鍵換曲等功能。&
35、lt;/p><p> 程序調(diào)試中出現(xiàn)的問(wèn)題及解決的辦法:</p><p> ?。?) 有時(shí)會(huì)出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒(méi)有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)現(xiàn)是因?yàn)槌绦蛑杏械闹噶顣鴮懙貌灰?guī)范導(dǎo)致的,例如有的RET返回指令一定要按正確格式書寫或在兩行指令間最好不要留空行。</p><p> (2) 程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見(jiàn),都用LJMP,我們就遇到過(guò)跳轉(zhuǎn)指
36、令用錯(cuò)程序無(wú)法正常運(yùn)行的現(xiàn)象。當(dāng)用JNZ指令時(shí),跳轉(zhuǎn)范圍比較少,這時(shí)要用一個(gè)標(biāo)號(hào)中轉(zhuǎn)。</p><p> ?。?) 編程時(shí)要注意,在程序開(kāi)始時(shí),要寫入各定時(shí)器中斷的入口地址。</p><p> ?。?) 編程過(guò)程中要注意加注釋或分割線,否則,在程序過(guò)長(zhǎng)時(shí)容易變得很亂,不便于查找或更改。</p><p> (5) 編程前要加流程圖,這樣會(huì)使思路清晰,例如數(shù)字音樂(lè)盒的
37、設(shè)計(jì)思路完全可以按著MP3的工作方式列寫流程圖。</p><p> ?。?) LCD計(jì)時(shí)正常顯示的解決辦法:</p><p> a. 兩個(gè)定時(shí)器同時(shí)工作,存在中斷時(shí)序問(wèn)題,剛開(kāi)始時(shí)我們把定時(shí)器1設(shè)定在方式3,計(jì)250us,由于定時(shí)中斷過(guò)于頻繁,使CPU負(fù)載過(guò)大,導(dǎo)致音樂(lè)不能正常播放,時(shí)間不能正常顯示。</p><p> 解決辦法:將定時(shí)器1設(shè)定在工作方式1,16
38、位計(jì)數(shù),計(jì)50ms,效果有很大改觀。但還有問(wèn)題。</p><p> b. 當(dāng)音樂(lè)為全4拍起始時(shí),此時(shí)音樂(lè)節(jié)奏與定時(shí)器T1中斷頻率錯(cuò)開(kāi),LCD顯示和音樂(lè)播放都會(huì)好一些。</p><p> c. 另外,在歌曲中,當(dāng)遇到一個(gè)音符發(fā)音為4拍,在編曲中為*CH,因時(shí)間較長(zhǎng),當(dāng)定時(shí)器T1此時(shí)來(lái)中斷時(shí),就會(huì)對(duì)歌曲播放產(chǎn)生影響,若改為發(fā)音一拍,中斷對(duì)歌曲播放影響減弱,但音樂(lè)效果變差。</p>
39、;<p> 改進(jìn)方案:若采用可以定時(shí)時(shí)間更長(zhǎng)的單片機(jī),可以避免所有問(wèn)題。</p><p><b> 收獲與體會(huì)</b></p><p> (1) 上學(xué)期學(xué)習(xí)單片機(jī)的課時(shí)不多,對(duì)單片機(jī)的硬件設(shè)計(jì),軟件設(shè)計(jì)掌握的深度不夠,但通過(guò)此次課程設(shè)計(jì),明顯的改善了,首先對(duì)于硬件電路的工作原理有了進(jìn)一步的學(xué)習(xí),同時(shí)有了一個(gè)提升;軟件方面,在程序的設(shè)計(jì),程序的調(diào)試方
40、面都有了很大的進(jìn)步。</p><p> (2) 在一個(gè)好的氛圍里才能踏下心來(lái)做東西,在這一段時(shí)間里,寢室成員都認(rèn)真對(duì)待這次課程設(shè)計(jì),除了自己做好自己的課題外,在遇到不懂的地方互相討論,查閱資料,互助解決問(wèn)題。另外在編程中出現(xiàn)問(wèn)題時(shí),一定要戒驕戒躁,腳踏實(shí)地,認(rèn)真看書,仔細(xì)分析,仔細(xì)調(diào)試,就一定會(huì)發(fā)現(xiàn)錯(cuò)誤。我們也是這么做的,這一點(diǎn)在這次的課程設(shè)計(jì)中十分重要。</p><p> (3) 通
41、過(guò)這次課程設(shè)計(jì),我體會(huì)到了成功的喜悅,聽(tīng)著自己設(shè)計(jì)的程序下載到單片機(jī)中播放出音樂(lè),心理非常自豪。這次的課程設(shè)計(jì)在一定程度上改變了我學(xué)習(xí)單片機(jī)這門課程的態(tài)度,從最初的認(rèn)為學(xué)它沒(méi)有什么實(shí)際意義,到如今愛(ài)上單片機(jī)學(xué)習(xí),并希望能將理論運(yùn)用到實(shí)踐,設(shè)計(jì)出更好更完整的系統(tǒng)。我明白了一個(gè)人要想做好一件事,就必須具備自信心,耐心,還要有毅力,要膽大心細(xì),要勇于嘗試,要手腦并用,最后才能交出一份令人滿意的答卷。</p><p>&
42、lt;b> 參考文獻(xiàn)</b></p><p> [1] 許珉.單片機(jī)原理及應(yīng)用[M].北京:中國(guó)電力出版社,2007.08</p><p> [2] 三恒星科技.MCS-51單片機(jī)原理與應(yīng)用實(shí)例[M]. 北京:電子工業(yè)出版社,2008.01</p><p> [3] 王為青,程國(guó)鋼.單片機(jī)Keil Cx51應(yīng)用開(kāi)發(fā)技術(shù)[M]. 北京
43、:人民郵電出版社,2007.02</p><p> [4] John Markus.電子電路大全[M].北京:計(jì)量出版社,1995</p><p> [5] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,1998.12,第4版</p><p> [6] 鄧元慶.數(shù)字電路與邏輯設(shè)計(jì)[M].北京:電子工業(yè)出版社,2001</p><
44、p> [7] http://www.picavr.com/news/2008-06/5859.htm</p><p><b> 附件1:元件清單</b></p><p><b> 附件2:總電路圖</b></p><p><b> 附件3:音樂(lè)程序</b></p><
45、p> OUT BIT P2.0 ;定義音頻輸出端口,p2.0</p><p> N EQU 6;歌曲總數(shù)</p><p> OUT_NUM EQU P1;數(shù)碼管顯視當(dāng)前所放歌曲曲數(shù)</p><p><b> ORG 0000H</b></p><p&g
46、t;<b> AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP LAST_SONG ;外部中斷0用于接上一曲歌按鍵</p><p><b> ORG 000BH</b></p><p>
47、 AJMP F_T0 ;定時(shí)器0用于定時(shí),作音符發(fā)生器用</p><p><b> ORG 0013H</b></p><p> q4: AJMP NEXT_SONG ;外部中斷1接下一曲歌按鍵</p><p><b> ORG 001BH</b></p
48、><p> AJMP START_PAUSE ;定時(shí)器1用計(jì)數(shù),這里用作中斷,接開(kāi)始/暫停鍵,初值為0ffH,方式2</p><p><b> ORG 0030H</b></p><p> MAIN: MOV SP,#60H</p><p> MOV DPTR,#TABLE
49、;DPRT指向每首歌曲的入口地址的地址。</p><p> MOV R0,#30H ;R0中存入數(shù)據(jù)30H,這里在以30H開(kāi)始的單元存放每首歌曲的入口地址,其中30H,31H存放</p><p> ;歌曲的節(jié)拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四個(gè)存儲(chǔ)存單元。</p><p> MOV R5,#00H
50、 ;R5中存放表TABLE中正在執(zhí)行操作的序號(hào)</p><p> MOV R6,#1 ;R6存放正在設(shè)置入口信息的歌曲數(shù)</p><p> SET_TAB: MOV A,R5 ;設(shè)置每首歌曲的入口信息,存放在以30H開(kāi)始的存儲(chǔ)單元中。</p><p> MOVC A,@A+DPTR&l
51、t;/p><p><b> MOV @R0,A</b></p><p><b> INC R5</b></p><p><b> INC R0</b></p><p><b> MOV A,R5</b></p><p> MO
52、VC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p><b> INC R5</b></p><p><b> INC R0</b></p><p><b> MOV A,R5</b></p>
53、<p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p><b> INC R0</b></p><p><b> INC R5</b></p><p><b> MOV A,R5</b&
54、gt;</p><p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p><b> INC R0</b></p><p><b> INC R5</b></p><p> INC R6
55、 ;設(shè)置完一首歌曲后,歌曲數(shù)加一</p><p> CJNE R6,#N+1,SET_TAB ;是否設(shè)置完,沒(méi)有便繼續(xù),否則進(jìn)行下面的操作</p><p> ;*********************************** 對(duì)中斷,計(jì)數(shù)器的相關(guān)參數(shù)進(jìn)行設(shè)置</p><p> MOV TMOD, #6
56、1H;計(jì)數(shù)器0工作方式1,計(jì)數(shù)器1工作方式2</p><p> MOV TH1,#0FFH;給計(jì)數(shù)器1置初值0FFH,又由于是工作方式2,所以</p><p> MOV TL1,#0FFH;計(jì)數(shù)器計(jì)數(shù)為1,相當(dāng)于一外部中斷。</p><p> SETB ET1 ;允許計(jì)數(shù)器1中斷</p><p>
57、; SETB ET0 ;允許計(jì)數(shù)器具0中斷</p><p> CLR PT0 ;計(jì)數(shù)器0為低優(yōu)先級(jí)</p><p> SETB PT1 ;計(jì)數(shù)器1為高優(yōu)先級(jí)</p><p> SETB IT0
58、 ;外部中斷0為跳沿觸發(fā)</p><p> SETB PX0 ;高優(yōu)先級(jí)</p><p> SETB IT1 ;外部中斷1為跳沿觸發(fā)</p><p> SETB PX1
59、 ;高優(yōu)先級(jí)</p><p> SETB EX1 ;允許外部中斷1中斷</p><p> SETB EX0;允許外部中斷定0中斷</p><p> SETB EA ;開(kāi)中斷總開(kāi)關(guān)</p>
60、<p> SETB TR1 ;定時(shí)器1開(kāi)始工作,作中斷用</p><p> SETB OUT;音頻輸出端口初始化</p><p> ;*********************************** ;設(shè)置結(jié)束</p><p> CLR F0
61、 ;設(shè)置F0=0,用來(lái)作暫停/播放的標(biāo)置位用</p><p> MOV 22H,#01H ;22H單元中存放正在播放的歌曲編號(hào)</p><p> MOV DPTR,#OUT_TAB ;將正在播放的歌曲編號(hào)送數(shù)碼管顯視</p><p>&
62、lt;b> MOV A,22H</b></p><p> MOVC A,@A+DPTR</p><p> MOV OUT_NUM,A</p><p> MOV R7,#00H ;R7中存放歌曲總信息的入口地址</p><p> START0:MOV R4,#00
63、H ;R4存放當(dāng)前正在播放歌曲的第幾個(gè)節(jié)拍數(shù)</p><p> MOV R0,#30H ;30H開(kāi)始的單元中存放歌曲的入口信息</p><p> MOV A,R7 ;將歌曲的節(jié)拍表的入口地址送到DPTR</p><p><b&g
64、t; ADD A,R0</b></p><p><b> MOV R0,A</b></p><p> MOV DPH,@R0</p><p><b> INC R0</b></p><p> MOV DPL,@R0</p><p><b>
65、INC R0</b></p><p><b> MOV A,R4</b></p><p><b> INC R4</b></p><p> MOVC A,@A+DPTR ;取出第一節(jié)拍數(shù),其實(shí)第一個(gè)節(jié)拍不是歌曲的第一個(gè)節(jié)拍,而是表示幾分音符</p><p
66、> ;****************************************************</p><p> MOV 26H,A;將取出的音符數(shù)+節(jié)拍數(shù)保存在職26H單元中</p><p> NEXT: MOV R0,#30H ;開(kāi)始取出歌曲的第一個(gè)數(shù)據(jù)</p><p><b> M
67、OV A,R7</b></p><p><b> ADD A,R0</b></p><p><b> MOV R0,A</b></p><p> MOV DPH,@R0</p><p><b> INC R0</b></p><p>
68、 MOV DPL,@R0</p><p><b> INC R0</b></p><p><b> MOV A,R4</b></p><p><b> INC R4</b></p><p> MOVC A,@A+DPTR ;放在A
69、中</p><p> ;****************************************************</p><p> JZ END0 ;若為0,則表示為休止符,不唱,本次音符不唱,</p><p> MOV R1,A ;不為0,取
70、出節(jié)拍數(shù)</p><p> ANL A,#0FH</p><p><b> MOV R2,A</b></p><p><b> MOV A,R1</b></p><p><b> SWAP A</b></p><p> ANL A,#0FH&l
71、t;/p><p> JNZ SING ;音符不為0,唱</p><p> CLR TR0 ;為0,不唱,關(guān)頻率發(fā)生器</p><p> SJMP SING1</p><p> SING: DEC A
72、 ;開(kāi)始唱,進(jìn)行相應(yīng)的數(shù)據(jù)處理</p><p><b> MOV R3,A</b></p><p><b> RL A</b></p><p> MOV DPH,@R0</p><p><b> INC R0</b>&
73、lt;/p><p> MOV DPL,@R0</p><p><b> INC R0</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV 21H,A</b></p><p><b> MOV TH0,A</b>
74、;</p><p><b> MOV A,R3</b></p><p><b> RL A</b></p><p><b> INC A</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV 20H
75、,A</b></p><p><b> MOV TL0,A</b></p><p> SETB TR0 ;開(kāi)唱</p><p> SING1:LCALL DELAY ;每個(gè)音符唱多久</p><
76、p> JB F0,FOR;是否暫停,</p><p> AJMP NEXT ;沒(méi)有暫停,繼續(xù)</p><p> FOR: CLR TR0;暫停,不唱</p><p> JB F0,$;等待播放</p><p> AJMP NEXT
77、 ;開(kāi)始播放</p><p> END0: CLR TR0 ;不唱</p><p> MOV A,22H ;唱完處理</p><p> CJNE A,#N,WW ;是不是全部歌曲都唱完</p&g
78、t;<p> MOV 22H,#01H ;全部唱完,則從第一首開(kāi)始再唱</p><p> MOV R7,#00H</p><p> MOV OUT_NUM,#11111001B ;數(shù)碼管顯視第一首歌曲編號(hào)</p><p><b> AJ
79、MP WWW</b></p><p> WW: MOV A,R7 ;沒(méi)有全部唱完,唱下一首,歌曲的入口信息調(diào)整</p><p><b> ADD A,#4</b></p><p><b> MOV R7,A</b></p><
80、p><b> INC 22H</b></p><p><b> CLR EA</b></p><p><b> PUSH DPH</b></p><p><b> PUSH DPL</b></p><p><b> MOV A,
81、22H</b></p><p> MOV DPTR,#OUT_TAB</p><p> MOVC A,@A+DPTR</p><p> MOV OUT_NUM,A ;數(shù)碼管顯視相應(yīng)的歌曲編號(hào)</p><p><b> POP DPL</b><
82、/p><p><b> POP DPH</b></p><p> WWW: SETB EA</p><p> AJMP START0 ;開(kāi)始下一首的演唱</p><p> F_T0: MOV TH0,21H
83、;定時(shí)器0置初值</p><p> MOV TL0,20H</p><p> CPL OUT ;頻率產(chǎn)生</p><p><b> RETI</b></p><p> NEXT_SONG: PUSH ACC ;下
84、一曲中斷程序處理,保護(hù)現(xiàn)場(chǎng)</p><p><b> PUSH DPH</b></p><p><b> PUSH DPL</b></p><p> CLR EA ;關(guān)中斷</p><p> MOV A,22H</p>
85、<p> CJNE A,#N,Q ;是最后一首嗎?</p><p> MOV R7,#00H ;是最后一首,則R7指向第一首,演唱第一首</p><p> MOV 22H,#01H</p><p><b> AJMP BACK&
86、lt;/b></p><p> Q: INC 22H ;不是最后一首,唱下一首,R7內(nèi)容加4,歌曲數(shù)加1</p><p><b> MOV A,R7</b></p><p><b> ADD A,#4</b></p><
87、p><b> MOV R7,A</b></p><p> BACK: MOV R4,#00H ;數(shù)碼管顯視相應(yīng)的歌曲編號(hào)</p><p><b> MOV A,22H</b></p><p> MOV DPTR,#OUT_TAB</p><
88、;p> MOVC A,@A+DPTR</p><p> MOV OUT_NUM,A</p><p> ;********************************************</p><p> MOV B,R0 ;對(duì)下首要演唱的歌曲的幾分拍進(jìn)行調(diào)整,同時(shí)對(duì)R0中的內(nèi)容進(jìn)行保護(hù)</p&g
89、t;<p> MOV R4,#00H</p><p> MOV R0,#30H</p><p><b> MOV A,R7</b></p><p><b> ADD A,R0</b></p><p><b> MOV R0,A</b></p>
90、<p> MOV DPH,@R0</p><p><b> INC R0</b></p><p> MOV DPL,@R0</p><p><b> INC R0</b></p><p><b> MOV A,R4</b></p><
91、p><b> INC R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV 26H,A ;結(jié)果存入26H單元中</p><p><b> DEC R4</b></p><p> MOV R0,B
92、 ;恢復(fù)R0中的內(nèi)容</p><p> ;********************************************</p><p> POP DPL ;恢復(fù)現(xiàn)場(chǎng)</p><p><b> POP DPH</b></p><p><b> POP ACC&
93、lt;/b></p><p><b> SETB EA</b></p><p> RETI ;中斷返回</p><p> LAST_SONG: PUSH ACC ;上一曲中斷程序處理開(kāi)始,保護(hù)現(xiàn)場(chǎng)</p>
94、<p><b> PUSH DPH</b></p><p><b> PUSH DPL</b></p><p> CLR EA ;關(guān)中斷</p><p> MOV A,22H ;曲目數(shù)送A</p><p> CJNE A,#
95、1,QQ ;是否是第一首</p><p> MOV 22H,#N ;是第一首歌曲</p><p> MOV B,#4 ;將R7指向最后一首歌曲</p><p> MOV A,#N-1</p><p><b> MUL AB</b></p>
96、;<p><b> MOV R7,A</b></p><p> AJMP BACK2 ;處理結(jié)束</p><p> QQ: DEC 22H</p><p> MOV A,R7 ;R7減4</p><p><b> SUBB A,#4<
97、;/b></p><p><b> MOV R7,A</b></p><p> BACK2: MOV R4,#00H</p><p><b> MOV A,22H</b></p><p> MOV DPTR,#OUT_TAB</p><p> MOVC
98、 A,@A+DPTR</p><p> MOV OUT_NUM,A ;數(shù)碼管顯視相應(yīng)歌曲的編號(hào)</p><p> ;********************************************</p><p> MOV B,R0;對(duì)下首要演唱的歌曲的幾分拍進(jìn)行調(diào)整,同時(shí)對(duì)R0中的內(nèi)容進(jìn)行保護(hù)</p><p&
99、gt; MOV R4,#00H</p><p> MOV R0,#30H</p><p><b> MOV A,R7</b></p><p><b> ADD A,R0</b></p><p><b> MOV R0,A</b></p><p>
100、; MOV DPH,@R0</p><p><b> INC R0</b></p><p> MOV DPL,@R0</p><p><b> INC R0</b></p><p><b> MOV A,R4</b></p><p><b
101、> INC R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV 26H,A ;結(jié)果存入26H單元中</p><p><b> DEC R4</b></p><p> MOV R0,B;R0中的內(nèi)容恢復(fù)</p&
102、gt;<p> ;********************************************</p><p> POP DPL ;恢復(fù)現(xiàn)場(chǎng)</p><p><b> POP DPH</b></p><p><b> POP ACC</b></p><p>
103、;<b> SETB EA</b></p><p> RETI ;中斷返回</p><p> START_PAUSE:CPL F0 ;開(kāi)始/暫停中斷處理程序,將標(biāo)置位取反</p><p> JB F0,RETURN ;為1返回</p><p> S
104、ETB TR0 ;為0則播放</p><p> RETURN: RETI ;中斷返回</p><p> DELAY: MOV 27H,26H ;音符演奏時(shí)間控制</p><p> D2: MOV 28H,#125</p><p> D3:
105、 MOV 29H,#248</p><p> DJNZ 29H,$</p><p> DJNZ 28H,D3</p><p> DJNZ 27H,D2</p><p> DJNZ R2,DELAY</p><p><b> RET</b></p><p> ;O
106、UT_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,73H ;共陰數(shù)碼管顯視用</p><p> OUT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH ;共陽(yáng)&
107、lt;/p><p> TABLE: DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5</p><p> TABLE1:DW 64580,64684,64777,64820,64898,64968,65030</p><p> DW 63628,63835,64021,6410
108、3,64260,64400,64524</p><p> SONG1: DB 04H ;1=C 2/4 軍港之夜</p><p> DB 32H,54H,52H,32H,54H,52H,32H,12H,12H,32H,32H,54H,52H,32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H<
109、;/p><p> DB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H</p><p> DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D
110、4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H</p><p> DB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H</p><p> DB 32H,21
111、H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H</p><p> DB 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H</p>
112、<p> DB 32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H</p><p> DB 0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32H,34H,31H,21H,12H,24H,24H</p&g
113、t;<p> DB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4H</p><p> DB 22H,0D1H,11H,0E2H,0D2H,0C4H,0C4H,32H,52H,52H,32H,62H,5H,61H,54H,31
114、H,52H,31H,12H,31H,31H,32H,54H,52H,32H,52H,52H,32H</p><p> DB 32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52H</p><p> DB
115、 32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14H</p><p> DB 32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14H</p><p><b> DB 00H</b></p><
116、;p> TABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777</p><p> DW 64820,64898,64968,65030,65058,65110,65157,65178</p><p> SONG2: DB 02H;1=C 4/4 死了都要愛(ài)</p><p>
117、DB 04H,94H</p><p> DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H</p><p> DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H</p><p> DB 04H,0C2H,0C2H,0
118、D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H</p><p> DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H</p><p> DB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H</p><p> DB 0C8H
119、,0C8H,08H,08H,78H,28H,38H,34H,24H</p><p> DB 24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24H</p><p> DB 24H,64H,64H,24H,64H,72H,72H,72H
120、,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不準(zhǔn)</p><p> DB 58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H</p><p> DB 84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72
121、H,72H,92H,91H,91H,94H,54H,74H,94H</p><p> ;;*************************************************</p><p> DB 0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2
122、H,0B4H,0C4H,84H,82H,92H,94H,0A4H</p><p> DB 04H,0C4H,0D4H,0C4H,0C8H,04H,94H</p><p> DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02</p><p> DB 0A4H,
123、0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H</p><p> DB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02</p><p> DB 0A4H,0A2H,0B2H,0B
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子音樂(lè)盒(單片機(jī)課程設(shè)計(jì))
- 電子音樂(lè)盒單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子音樂(lè)盒的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子音樂(lè)盒的設(shè)計(jì)
- 電子音樂(lè)盒課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)基于單片機(jī)的電子音樂(lè)盒設(shè)計(jì)
- 單片機(jī)電子音樂(lè)盒課程設(shè)計(jì)說(shuō)明書
- 單片機(jī)課程設(shè)計(jì)--電子音樂(lè)設(shè)計(jì)
- 畢業(yè)論文---基于單片機(jī)的電子音樂(lè)盒
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--音樂(lè)盒
- 音樂(lè)盒單片機(jī)課程設(shè)計(jì)
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 電子音樂(lè)盒設(shè)計(jì)【開(kāi)題報(bào)告】
- 單片機(jī)音樂(lè)盒課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--電子音樂(lè)播放器
- 單片機(jī)課程設(shè)計(jì)報(bào)告 音樂(lè)盒設(shè)計(jì)
- 電子音樂(lè)盒的設(shè)計(jì)【任務(wù)書】
- 單片機(jī)原理課程設(shè)計(jì)---音樂(lè)盒的設(shè)計(jì)
- 電子音樂(lè)盒的設(shè)計(jì)【畢業(yè)論文】
評(píng)論
0/150
提交評(píng)論