電子音樂盒(單片機(jī)課程設(shè)計(jì))說明書_第1頁
電子音樂盒(單片機(jī)課程設(shè)計(jì))說明書_第2頁
電子音樂盒(單片機(jī)課程設(shè)計(jì))說明書_第3頁
電子音樂盒(單片機(jī)課程設(shè)計(jì))說明書_第4頁
電子音樂盒(單片機(jī)課程設(shè)計(jì))說明書_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì)工作內(nèi)容與基本要求(設(shè)計(jì)要求、設(shè)計(jì)任務(wù)、工作計(jì)劃1設(shè)計(jì)要求 查閱資料,了解單片機(jī)控制單音喇叭發(fā)聲原理;設(shè)計(jì)基于單片機(jī)的電子音樂盒;通過按鈕可選擇不同的音樂。 創(chuàng)新設(shè)計(jì): 1、安裝復(fù)位鍵,暫停、播放鍵; 2、有6首不同的音樂用程序編出可供選擇。2. 設(shè)計(jì)任務(wù)與要求 2.1系統(tǒng)硬件電路設(shè)計(jì)根據(jù)該系統(tǒng)設(shè)計(jì)的功能要求選擇所用元器件,設(shè)計(jì)硬件電路。要求用Proteus繪制整個(gè)系統(tǒng)電路原理圖。 2.2軟件設(shè)計(jì)根據(jù)該系統(tǒng)要求的功能進(jìn)行軟件設(shè)計(jì),繪制整個(gè)系統(tǒng)的軟件流程圖;根據(jù)流程圖編寫程序并匯編調(diào)試通過;列出軟件清單,軟件清單要求逐條加以注釋。 2.3 Proteus仿真用Proteus對系統(tǒng)進(jìn)行仿真

2、并進(jìn)行軟硬件調(diào)試。 2.4 編寫設(shè)計(jì)說明書內(nèi)容包括任務(wù)書、設(shè)計(jì)方案分析、硬件部分設(shè)計(jì)、軟件部分設(shè)計(jì)、調(diào)試結(jié)果整理分析、設(shè)計(jì)調(diào)試的心得體會等,字?jǐn)?shù)不少于4000字;硬件部分設(shè)計(jì)要繪制整個(gè)系統(tǒng)電路原理圖,對各部分電路設(shè)計(jì)原理做出說明;軟件設(shè)計(jì)部分要繪制整個(gè)系統(tǒng)及各部分的軟件流程圖,列出程序清單,逐條加以注釋,并在各功能塊前加程序功能注釋。電子音樂盒1 設(shè)計(jì)任務(wù)和要求 . 12 總體方案設(shè)計(jì) . 13 硬件設(shè)計(jì) . 2 3.1 硬件電路 . 2 3.2 系統(tǒng)總框圖 . 2 3.3 器件選擇 . 2 3.4 原理圖設(shè)計(jì) . 3 3.5 原理說明 . 64 軟件設(shè)計(jì) . 75 仿真、安裝和調(diào)試 . 8收

3、獲與體會 . 10參考文獻(xiàn) .11附件1:元件清單 .12附件2: 總電路圖 .13附件3:音樂程序 .141 設(shè)計(jì)任務(wù)和要求1.利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演樂曲(內(nèi)存六首樂曲)。2.采用七段數(shù)碼管顯示當(dāng)前播放的歌曲序號。3.可通過功能鍵選擇樂曲,包括暫停和播放,上一曲,下一曲,復(fù)位。 2 總體方案設(shè)計(jì)1. 要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I/O口反相,就可在I/O腳上得到此頻率的脈沖2. 利用8051的

4、內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變記數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。例如頻率為523HZ,其周期T=1/523=1912微秒,因此只要令計(jì)數(shù)器定時(shí)956/1=956在每記數(shù)9次時(shí)將I/O口反相,就可得到中音D0(523HZ)。記數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi/2/Fr N:記數(shù)值Fi:內(nèi)部計(jì)時(shí)一次為1微秒故其頻率為1MHZ Fr;要產(chǎn)生的頻率3. 起記數(shù)值的求法如下:T65536N65536Fi2Fr例如:設(shè)K65536,F(xiàn)Fi1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的記數(shù)值。T65536N65536Fi2Fr655362Fr65536Fr低

5、音D0的T6553626263627中音D0的T6553652364580低音D0的T655361047650593 系統(tǒng)硬件設(shè)計(jì)3.1 硬件電路本設(shè)計(jì)中用到89C51單片機(jī),喇叭,七段顯示數(shù)碼管LED。(硬件電路原理圖如圖1所示)3.2 系統(tǒng)總框圖晶振電鍍AT89C51蜂鳴器復(fù)位電路七段顯示數(shù)碼管LED鍵盤電路圖1 總體方案圖3.3 器件選擇1、單片機(jī)的選擇采用ATMEL公司生產(chǎn)的AT89C51單片機(jī)作為電子音樂盒的核心部件,AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機(jī)存取

6、數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大AT89C51單片機(jī)可提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。2、7SEG-DIGITAL簡介七段顯示器顯示原理七段顯示器可用來顯示單一的十進(jìn)制或十六進(jìn)制的數(shù)字,它是由八個(gè)發(fā)光二極管所構(gòu)成的( 每一個(gè)二極管依位置不同而賦予不同的名稱,請參見圖4.1 ) 。我們可以簡單的說,要產(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

7、、F、G等節(jié)段發(fā)光二極管,以此類推,參見圖4.6。因此,以共陽極七段顯示器而言,要產(chǎn)生數(shù)字0,必須控制Cyclone II FPGA芯片接連至A、B、C、D、E、F 等接腳呈現(xiàn)“低電位”,使電路形成通路狀態(tài)。表4.1則為共陽極七段顯示器顯示之?dāng)?shù)字編碼。 3.4 原理圖設(shè)計(jì)1、晶振電路單片機(jī)需要一個(gè)時(shí)間基準(zhǔn)來為各種操作提供秩序,此電路叫時(shí)鐘電路,采用不同的接線方式可以獲得不同時(shí)鐘電路,有內(nèi)部時(shí)鐘電路和外部時(shí)鐘電路,外部時(shí)鐘電路會使電路復(fù)雜,故采用的是內(nèi)部時(shí)鐘電路。時(shí)鐘電路在單片機(jī)的外部通過XTAL1,XTAL2這兩個(gè)引腳跨接晶體振蕩器和微調(diào)電容,構(gòu)成穩(wěn)定的自激振蕩器.本系統(tǒng)采用的為12MHz的晶

8、振,一個(gè)機(jī)器周期為1us,C1,C2為30uF。2、復(fù)位電路復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。復(fù)位電路分為上電自動復(fù)位和按鍵手動復(fù)位,如圖2所示。RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效.這次采用的是手動復(fù)位,復(fù)位通過電容C3,C4和電阻R1,R2來實(shí)現(xiàn),按鍵手動復(fù)位是圖中復(fù)位鍵來實(shí)現(xiàn)的。圖 2 晶振與復(fù)位電路3、鍵盤部分鍵盤是由一組按壓式或觸摸式開關(guān)構(gòu)成的陣列,是一種常用的輸入設(shè)備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。(1)

9、.編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復(fù)雜、價(jià)格昂貴通常不被單片機(jī)系統(tǒng)采用。(2.)非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴(yán)格的對應(yīng)關(guān)系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的CPU時(shí)間,通常采用可編程鍵盤管理芯片來克服這個(gè)缺點(diǎn)。本設(shè)計(jì)使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開關(guān)。圖 3 鍵盤電路4、7SEG-DIGITAL LCD七段顯示器LCD顯示原理用P1.0-P1.6控制七段碼a,b,c,d,e,f,g圖4 LCD顯示電路5、蜂鳴器部分一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是

10、一類有將壓力與電流相互轉(zhuǎn)換能力的特殊陶瓷。這種能力緣于其特殊的晶體結(jié)構(gòu)。當(dāng)壓電陶瓷在一定方向上受到一個(gè)壓力使其晶體結(jié)構(gòu)發(fā)生形變時(shí),它就會在內(nèi)部產(chǎn)生一個(gè)電流,并且電流的變化與壓力的變化密切相關(guān)。反之亦然。所以利用這一特性,在壓電陶瓷上通過一定頻率的電流,就會引起壓電陶瓷微小形變,這一形變帶動空氣發(fā)生振動,如果頻率適當(dāng),就可以被人耳所聽見,也就是產(chǎn)生了蜂鳴聲。由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無法直接驅(qū)動的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。圖5 蜂鳴器電路3.5 原理說明當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動蜂鳴器,

11、放出樂曲。同時(shí)啟動定時(shí)器T1,顯示歌曲號。(1)硬件電路中用、分別接S1、S2作為上、下一曲的功能鍵(2)用P1.0-P1.6控制七段碼a,b,c,d,e,f。(3)用P2.0口控制喇叭。(4)電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf。 圖1 音樂盒原理圖4 軟件設(shè)計(jì)本程序可以實(shí)現(xiàn)課程設(shè)計(jì)的基本要求,并可以通過按鍵播放歌曲,程序流程圖如下:開始初始化設(shè)置音節(jié)起始位置設(shè)置節(jié)拍間距讀取音階,音符顯示當(dāng)前播放歌曲序號節(jié)拍結(jié)束音樂結(jié)束5 仿真、安裝和調(diào)試按照上面設(shè)計(jì)的電路在proteus軟件內(nèi)畫圖, 打開單片機(jī)軟件開發(fā)系統(tǒng)Keil,選擇89c51單片機(jī),在其中編寫程序,運(yùn)行生成一

12、個(gè)后綴名為hex的文件,然后將該文件下載到proteus中的AT89c51單片機(jī)中進(jìn)行仿真,觀察實(shí)驗(yàn)現(xiàn)象。仿真能實(shí)現(xiàn)播放音樂,按鍵選擇曲目,暫停、播放,復(fù)位功能。仿真成功后,安裝好實(shí)驗(yàn)板,然后將音樂程序下載到電路板內(nèi) ,觀察結(jié)果。能實(shí)現(xiàn)播放音樂,按鍵換曲等功能。程序調(diào)試中出現(xiàn)的問題及解決的辦法:(1) 有時(shí)會出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)現(xiàn)是因?yàn)槌绦蛑杏械闹噶顣鴮懙貌灰?guī)范導(dǎo)致的,例如有的RET返回指令一定要按正確格式書寫或在兩行指令間最好不要留空行。(2) 程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見,都用LJMP,我們就遇到過跳轉(zhuǎn)指令用錯(cuò)程序無法正常運(yùn)行的現(xiàn)象。當(dāng)用

13、JNZ指令時(shí),跳轉(zhuǎn)范圍比較少,這時(shí)要用一個(gè)標(biāo)號中轉(zhuǎn)。(3) 編程時(shí)要注意,在程序開始時(shí),要寫入各定時(shí)器中斷的入口地址。(4) 編程過程中要注意加注釋或分割線,否則,在程序過長時(shí)容易變得很亂,不便于查找或更改。(5) 編程前要加流程圖,這樣會使思路清晰,例如數(shù)字音樂盒的設(shè)計(jì)思路完全可以按著MP3的工作方式列寫流程圖。(6) LCD計(jì)時(shí)正常顯示的解決辦法:a. 兩個(gè)定時(shí)器同時(shí)工作,存在中斷時(shí)序問題,剛開始時(shí)我們把定時(shí)器1設(shè)定在方式3,計(jì)250us,由于定時(shí)中斷過于頻繁,使CPU負(fù)載過大,導(dǎo)致音樂不能正常播放,時(shí)間不能正常顯示。解決辦法:將定時(shí)器1設(shè)定在工作方式1,16位計(jì)數(shù),計(jì)50ms,效果有很大

14、改觀。但還有問題。b. 當(dāng)音樂為全4拍起始時(shí),此時(shí)音樂節(jié)奏與定時(shí)器T1中斷頻率錯(cuò)開,LCD顯示和音樂播放都會好一些。c. 另外,在歌曲中,當(dāng)遇到一個(gè)音符發(fā)音為4拍,在編曲中為*CH,因時(shí)間較長,當(dāng)定時(shí)器T1此時(shí)來中斷時(shí),就會對歌曲播放產(chǎn)生影響,若改為發(fā)音一拍,中斷對歌曲播放影響減弱,但音樂效果變差。改進(jìn)方案:若采用可以定時(shí)時(shí)間更長的單片機(jī),可以避免所有問題。收獲與體會 (1) 上學(xué)期學(xué)習(xí)單片機(jī)的課時(shí)不多,對單片機(jī)的硬件設(shè)計(jì),軟件設(shè)計(jì)掌握的深度不夠,但通過此次課程設(shè)計(jì),明顯的改善了,首先對于硬件電路的工作原理有了進(jìn)一步的學(xué)習(xí),同時(shí)有了一個(gè)提升;軟件方面,在程序的設(shè)計(jì),程序的調(diào)試方面都有了很大的進(jìn)

15、步。(2) 在一個(gè)好的氛圍里才能踏下心來做東西,在這一段時(shí)間里,寢室成員都認(rèn)真對待這次課程設(shè)計(jì),除了自己做好自己的課題外,在遇到不懂的地方互相討論,查閱資料,互助解決問題。另外在編程中出現(xiàn)問題時(shí),一定要戒驕戒躁,腳踏實(shí)地,認(rèn)真看書,仔細(xì)分析,仔細(xì)調(diào)試,就一定會發(fā)現(xiàn)錯(cuò)誤。我們也是這么做的,這一點(diǎn)在這次的課程設(shè)計(jì)中十分重要。(3) 通過這次課程設(shè)計(jì),我體會到了成功的喜悅,聽著自己設(shè)計(jì)的程序下載到單片機(jī)中播放出音樂,心理非常自豪。這次的課程設(shè)計(jì)在一定程度上改變了我學(xué)習(xí)單片機(jī)這門課程的態(tài)度,從最初的認(rèn)為學(xué)它沒有什么實(shí)際意義,到如今愛上單片機(jī)學(xué)習(xí),并希望能將理論運(yùn)用到實(shí)踐,設(shè)計(jì)出更好更完整的系統(tǒng)。我明白

16、了一個(gè)人要想做好一件事,就必須具備自信心,耐心,還要有毅力,要膽大心細(xì),要勇于嘗試,要手腦并用,最后才能交出一份令人滿意的答卷。附件1:元件清單名稱數(shù)量(個(gè))型號備注電阻5排阻RX8(1個(gè))1k(2個(gè)),5.5k(1個(gè)),10k(1個(gè)),15(1個(gè))數(shù)碼管17SEG-DIGITAL開關(guān)4BUTTON單片機(jī)1AT89C51三極管12N3906揚(yáng)聲器1SPEAKER電源35V電容330pf(2個(gè)),10uf(1個(gè))晶振1CRYSTAL附件2:總電路圖附件3:音樂程序OUT BIT P2.0 ;定義音頻輸出端口,p2.0N EQU 6 ;歌曲總數(shù)OUT_NUM EQU P1 ;數(shù)碼管顯視當(dāng)前所放歌曲

17、曲數(shù) ORG 0000H AJMP MAIN ORG 0003H AJMP LAST_SONG ;外部中斷0用于接上一曲歌按鍵 ORG 000BH AJMP F_T0 ;定時(shí)器0用于定時(shí),作音符發(fā)生器用 ORG 0013Hq4: AJMP NEXT_SONG ;外部中斷1接下一曲歌按鍵 ORG 001BH AJMP START_PAUSE ;定時(shí)器1用計(jì)數(shù),這里用作中斷,接開始/暫停鍵,初值為0ffH,方式2 ORG 0030HMAIN: MOV SP,#60H MOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。 MOV R0,#30H ;R0中存入數(shù)據(jù)30H,這里在以3

18、0H開始的單元存放每首歌曲的入口地址,其中30H,31H存放歌曲的節(jié)拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四個(gè)存儲存單元。 MOV R5,#00H;R5中存放表TABLE中正在執(zhí)行操作的序號 MOV R6,#1;R6存放正在設(shè)置入口信息的歌曲數(shù)SET_TAB: MOV A,R5 ;設(shè)置每首歌曲的入口信息,存放在以30H開始的存儲單元中。 MOVC A,A+DPTR MOV R0,A INC R5 INC R0 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R5 INC R0 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R

19、0 INC R5 MOV A,R5 MOVC A,A+DPTR MOV R0,A INC R0 INC R5 INC R6 ;設(shè)置完一首歌曲后,歌曲數(shù)加一 CJNE R6,#N+1,SET_TAB ;是否設(shè)置完,沒有便繼續(xù),否則進(jìn)行下面的操作 ;* 對中斷,計(jì)數(shù)器的相關(guān)參數(shù)進(jìn)行設(shè)置 MOV TMOD, #61H;計(jì)數(shù)器0工作方式1,計(jì)數(shù)器1工作方式2 MOV TH1,#0FFH ;給計(jì)數(shù)器1置初值0FFH,是工作方式2 MOV TL1,#0FFH;計(jì)數(shù)器計(jì)數(shù)為1,相當(dāng)于一外部中斷。 SETB ET1 ;允許計(jì)數(shù)器1中斷 SETB ET0 ;允許計(jì)數(shù)器具0中斷 CLR PT0 ;計(jì)數(shù)器0為低優(yōu)先

20、級 SETB PT1;計(jì)數(shù)器1為高優(yōu)先級 SETB IT0 ;外部中斷0為跳沿觸發(fā) SETB PX0 ;高優(yōu)先級 SETB IT1 ;外部中斷1為跳沿觸發(fā) SETB PX1 ;高優(yōu)先級 SETB EX1 ;允許外部中斷1中斷 SETB EX0 ;允許外部中斷定0中斷 SETB EA ;開中斷總開關(guān) SETB TR1 ;定時(shí)器1開始工作,作中斷用 SETB OUT;音頻輸出端口初始化 ;* ;設(shè)置結(jié)束 CLR F0 ;設(shè)置F0=0,用來作暫停/播放的標(biāo)置位用 MOV 22H,#01H ;22H單元中存放正在播放的歌曲編號 MOV DPTR,#OUT_TAB ;將正在播放的歌曲編號送數(shù)碼管顯視 M

21、OV A,22H MOVC A,A+DPTR MOV OUT_NUM,A MOV R7,#00H ;R7中存放歌曲總信息的入口地址START0:MOV R4,#00H ;R4存放當(dāng)前正在播放歌曲的第幾個(gè)節(jié)拍數(shù) MOV R0,#30H ;30H開始的單元中存放歌曲的入口信息 MOV A,R7 ;將歌曲的節(jié)拍表的入口地址送到DPTR ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4 MOVC A,A+DPTR ;取出第一節(jié)拍數(shù),其實(shí)第一個(gè)節(jié)拍不是歌曲的第一個(gè)節(jié)拍,而是表示幾分音符;* MOV 26H,A ;將

22、取出的音符數(shù)+節(jié)拍數(shù)保存在職26H單元中NEXT: MOV R0,#30H ;開始取出歌曲的第一個(gè)數(shù)據(jù) MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4 MOVC A,A+DPTR ;放在A中;* JZ END0 ;若為0,則表示為休止符,不唱,本次音符不唱, MOV R1,A ;不為0,取出節(jié)拍數(shù) ANL A,#0FH MOV R2,A MOV A,R1 SWAP A ANL A,#0FH JNZ SING ;音符不為0,唱 CLR TR0 ;為0,不唱,關(guān)頻率發(fā)生器 SJMP SIN

23、G1SING: DEC A ;開始唱,進(jìn)行相應(yīng)的數(shù)據(jù)處理 MOV R3,A RL A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOVC A,A+DPTR MOV 21H,A MOV TH0,A MOV A,R3 RL A INC A MOVC A,A+DPTR MOV 20H,A MOV TL0,A SETB TR0 ;開唱SING1:LCALL DELAY ;每個(gè)音符唱多久 JB F0,FOR ;是否暫停, AJMP NEXT ;沒有暫停,繼續(xù)FOR: CLR TR0 ;暫停,不唱 JB F0,$ ;等待播放 AJMP NEXT ;開始播放END0: CLR

24、TR0 ;不唱 MOV A,22H ;唱完處理 CJNE A,#N,WW ;是不是全部歌曲都唱完 MOV 22H,#01H ;全部唱完,則從第一首開始再唱 MOV R7,#00H MOV OUT_NUM,#B ;數(shù)碼管顯視第一首歌曲編號 AJMP WWWWW: MOV A,R7 ;沒有全部唱完,唱下一首,歌曲的入口信息調(diào)整 ADD A,#4 MOV R7,A INC 22H CLR EA PUSH DPH PUSH DPL MOV A,22H MOV DPTR,#OUT_TAB MOVC A,A+DPTR MOV OUT_NUM,A ;數(shù)碼管顯視相應(yīng)的歌曲編號 POP DPL POP DPHW

25、WW: SETB EA AJMP START0 ;開始下一首的演唱F_T0: MOV TH0,21H ;定時(shí)器0置初值 MOV TL0,20H CPL OUT ;頻率產(chǎn)生 RETINEXT_SONG: PUSH ACC ;下一曲中斷程序處理,保護(hù)現(xiàn)場 PUSH DPH PUSH DPL CLR EA ;關(guān)中斷 MOV A,22H CJNE A,#N,Q ;是最后一首嗎? MOV R7,#00H ;是最后一首,則R7指向第一首,演唱第一首 MOV 22H,#01H AJMP BACKQ: INC 22H ;不是最后一首,唱下一首,R7內(nèi)容加4,歌曲數(shù)加1 MOV A,R7 ADD A,#4 MO

26、V R7,ABACK: MOV R4,#00H ;數(shù)碼管顯視相應(yīng)的歌曲編號 MOV A,22H MOV DPTR,#OUT_TAB MOVC A,A+DPTR MOV OUT_NUM,A;* MOV B,R0 ;對下首要演唱的歌曲的幾分拍進(jìn)行調(diào)整,同時(shí)對R0中的內(nèi)容進(jìn)行保護(hù) MOV R4,#00H MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4 MOVC A,A+DPTR MOV 26H,A ;結(jié)果存入26H單元中 DEC R4 MOV R0,B ;恢復(fù)R0中的

27、內(nèi)容;* POP DPL ;恢復(fù)現(xiàn)場 POP DPH POP ACC SETB EA RETI ;中斷返回LAST_SONG: PUSH ACC ;上一曲中斷程序處理開始,保護(hù)現(xiàn)場 PUSH DPH PUSH DPL CLR EA ;關(guān)中斷 MOV A,22H ;曲目數(shù)送A CJNE A,#1,QQ ;是否是第一首 MOV 22H,#N ;是第一首歌曲 MOV B,#4 ;將R7指向最后一首歌曲 MOV A,#N-1 MUL AB MOV R7,A AJMP BACK2 ;處理結(jié)束QQ: DEC 22H MOV A,R7 ;R7減4 SUBB A,#4 MOV R7,ABACK2: MOV R

28、4,#00H MOV A,22H MOV DPTR,#OUT_TAB MOVC A,A+DPTR MOV OUT_NUM,A ;數(shù)碼管顯視相應(yīng)歌曲的編號;* MOV B,R0;對下首要演唱的歌曲的幾分拍進(jìn)行調(diào)整,同時(shí)對R0中的內(nèi)容進(jìn)行保護(hù) MOV R4,#00H MOV R0,#30H MOV A,R7 ADD A,R0 MOV R0,A MOV DPH,R0 INC R0 MOV DPL,R0 INC R0 MOV A,R4 INC R4 MOVC A,A+DPTR MOV 26H,A ;結(jié)果存入26H單元中 DEC R4 MOV R0,B;R0中的內(nèi)容恢復(fù);* POP DPL ;恢復(fù)現(xiàn)場

29、POP DPH POP ACC SETB EA RETI ;中斷返回START_PAUSE:CPL F0 ;開始/暫停中斷處理程序,將標(biāo)置位取反 JB F0,RETURN ;為1返回 SETB TR0 ;為0則播放RETURN: RETI ;中斷返回DELAY: MOV 27H,26H ;音符演奏時(shí)間控制D2: MOV 28H,#125D3: MOV 29H,#248 DJNZ 29H,$ DJNZ 28H,D3 DJNZ 27H,D2 DJNZ R2,DELAY RET;OUT_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,3

30、9H,5EH,79H,71H,73H ;共陰數(shù)碼管顯視用OUT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH ;共陽TABLE: DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5TABLE1:DW 64580,64684,64777,64820,64898,64968,65030 DW 63628,63835,64021,64103,64260,64400,64524SONG1: DB

31、04H ;1=C 2/4 軍港之夜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,14HDB 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,24HDB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0

32、D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB 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,32HDB 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,52HDB 3

33、2H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 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,24HDB 34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1

34、H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB 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,32HDB 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,52HDB 32H

35、,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB 32H,52H,52H,32H,32H,21H,31H,24H,74H,0D2H,0C2H,14H,14H,14H,14HDB 00HTABLE2:DW 63835,64021,64103,64260,64400,64524,64580,64684,64777 DW 64820,64898,64968,65030,65058,65110,65157,65178SONG2: DB 02H;1=C 4/4 死了都要愛DB 04H,94HDB 0E8H,0E4H,0

36、E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02HDB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8HDB 0C8H,0C8H,08H,08H,78H,28H,

37、38H,34H,24HDB 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,24HDB 24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不準(zhǔn)DB 58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08HDB 84H,82H,82H,82H,82H,94H,0A2H,94H,92H,8

38、2H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H;*DB 0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4HDB 04H,0C4H,0D4H,0C4H,0C8H,04H,94HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB 0A4H,0A2

39、H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92HDB 0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H;*DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8HDB 0C8H,0C8H,0C8H,08HDB 00

40、HTABLE3: DW 64898,64968,65030,65086,65135,65158,65199,64260,64400,64524,64580,64684,64777,64862SONG3: DB 03H ;G=2/4 中華人民共和國國歌DB 04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54HDB 32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52

41、H,32H,21H,31H,12H,11H,21H,34H,04HDB 52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54HDB 12H,11H,31H,52H,51H,51H,64H,54H,32H,31H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14HDB 0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4

42、H,14H,0C4H,14H,14H,04HDB 04H,04H,04H,04HDB 00HTABLE4:DW 64260,64400,64524,64580 ,64684,64777,64280,64898,64968,65030,65058,65110,65157,65178,65217SONG4:DB 04H ;生日快樂 ;1 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H ;2 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H ;3 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H ;4 DB 82H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論