電子音樂盒說明書_第1頁
電子音樂盒說明書_第2頁
電子音樂盒說明書_第3頁
電子音樂盒說明書_第4頁
電子音樂盒說明書_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(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)行仿真并進(jìn)行

2、軟硬件調(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)及各部分的軟件流程圖,列出程序清單,逐條加以注釋,并在各功能塊前 加程序功能注釋。電子音樂盒 TOC o 1-5 h z HYPERLINK l bookmark32 o Current Document 1設(shè)計(jì)任務(wù)和要求1總體方案設(shè)計(jì) -1 HYPERLINK l bookmark41 o Current Document 硬件設(shè)計(jì) 23.1硬

3、件電路 23.2系統(tǒng)總框圖23.3器件選擇 2 HYPERLINK l bookmark46 o Current Document 3.4原理圖設(shè)計(jì) 3 HYPERLINK l bookmark53 o Current Document 3.5原理說明 6 HYPERLINK l bookmark60 o Current Document 4軟件設(shè)計(jì) 7 HYPERLINK l bookmark63 o Current Document 5仿真、安裝和調(diào)試8收獲與體會10參考文獻(xiàn)11 HYPERLINK l bookmark78 o Current Document 附件1 :元件清單 12

4、HYPERLINK l bookmark81 o Current Document 附件2:總電路圖 .13 HYPERLINK l bookmark84 o Current Document 附件3:音樂程序 141設(shè)計(jì)任務(wù)和要求利用I/O 口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演 樂曲(內(nèi)存六首樂曲)。采用七段數(shù)碼管顯示當(dāng)前播放的歌曲序號??赏ㄟ^功能鍵選擇樂曲,包括暫停和播放,上一曲,下一曲,復(fù)位。2總體方案設(shè)計(jì)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/音頻),然后將此周期除以 2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出 脈沖的I/O反相,然

5、后重復(fù)計(jì)時(shí)此半周期時(shí)間再對I/O 口反相,就可在I/O腳上得 到此頻率的脈沖利用8051的內(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微秒.故其頻率為1MHZFr;要產(chǎn)生的頻率起記數(shù)值的求法如下:T = 65536 N=65536 Fi / 2 / Fr例如:設(shè) K=65536,F(xiàn)=1000000 =

6、 Fi = 1MHZ,求低音 D0 (523HZ),高音的 D0 (1046HZ)的記數(shù)值。T = 65536 N = 65536 Fi /2/Fr = 65536 1000000 / 2 /Fr = 65536 500000 / Fr低音 D0 的 T = 65536 500000 / 262 = 63627中音 D0 的 T = 65536 500000 / 523 = 64580低音 D0 的 T = 65536 500000 / 1047 = 650593系統(tǒng)硬件設(shè)計(jì)3.1硬件電路本設(shè)計(jì)中用到89C51單片機(jī),喇叭,七段顯示數(shù)碼管LED。(硬件電路原理圖如圖1所示)3.2系統(tǒng)總框圖圖1

7、總體方案圖3.3器件選擇1、單片機(jī)的選擇采用ATMEL公司生產(chǎn)的AT89C51單片機(jī)作為電子音樂盒的核心部件, AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含 4k bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機(jī)存取數(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 簡介七段顯示器顯示原理七段顯示器可

8、用來顯示單一的十進(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、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)

9、來為各種操作提供秩序,此電路叫時(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的晶振,一個(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ù)位,如圖

10、2所示。RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效.這次采用的是手動復(fù)位,復(fù)位通過電容C3, C4和電阻R1,R2來實(shí)現(xiàn),按鍵手動復(fù)位是圖中復(fù)位鍵來實(shí)現(xiàn)的。XrAL1PD.D/tCiPD.1/C1P0.2/.i2muPD.3/C3PU.4/.4PU.S/.CtiRSTP0.7/.W7P2.ii/if:P2.2/A1DPSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.5P1.UP3.D/RXDP1.1P3.1/T:DP1.2P3.2/1 MIDP1.3P3.3/irm圖2晶振與復(fù)位電路3、鍵盤部分鍵盤是由一組按壓式或觸摸式開關(guān)構(gòu)成的陣列,是一種常用的

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

12、P3.D/RXDP3.2/I- :P3.3.T海P3.4/1DP/.5EP&.&延而26630901RP2 Exr- P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51圖4 LCD顯示電路5、蜂鳴器部分一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是一類有將壓力與 電流相互轉(zhuǎn)換能力的特殊陶瓷。這種能力緣于其特殊的晶體結(jié)構(gòu)。當(dāng)壓電陶瓷在 一定方向上受到一個(gè)壓力使其晶體結(jié)構(gòu)發(fā)生形變時(shí),它就會在內(nèi)部產(chǎn)生一個(gè)電 流,并且電流的變化與壓力的變化密切相關(guān)。反之亦然。所以利用這一特性,在 壓電陶瓷上通過一定頻率的電流,就會引起壓電陶瓷微小形變,這一形變帶動空 氣發(fā)生振動,如果

13、頻率適當(dāng),就可以被人耳所聽見,也就是產(chǎn)生了蜂鳴聲。由于蜂鳴器的工作電流一般比較大,以致于單片機(jī)的I/O 口是無法直接驅(qū)動 的,所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。 R4HO.IJND.ffi .P0.5/.C6P0.6/.C6P0.7/fi7P3.L 網(wǎng)P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXD m 1 mrn圖5蜂鳴器電路3.5原理說明當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū) 動蜂鳴器,放出樂曲。同時(shí)啟動定時(shí)器T1,顯示歌曲號。(1)硬件電路中用INT0、1NT1分別接S1

14、、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ì)的基本要求,并可以通過按鍵播放歌曲,程序流程 圖如下:5仿真、安裝和調(diào)試按照上面設(shè)計(jì)的電路在proteus軟件內(nèi)畫圖,打開單片機(jī)軟件開發(fā)系統(tǒng) Keil,選擇89c51單片機(jī),在其中編寫程序,運(yùn)行生成一個(gè)后綴名為hex的文件, 然后將該文件下載到proteus中的AT89c51單片機(jī)中進(jìn)行仿真,觀察實(shí)驗(yàn)現(xiàn)象。 仿真能實(shí)現(xiàn)播放音樂,按鍵選擇曲目,暫停、播放,

15、復(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)用JNZ指令時(shí),跳轉(zhuǎn)范圍比較少, 這時(shí)要用一個(gè)標(biāo)號中轉(zhuǎn)。(3)編程時(shí)要注意,在程序開始時(shí),要寫入各定時(shí)器中斷的入口地址。(4)編程過程中要注意加注釋或

16、分割線,否則,在程序過長時(shí)容易變得很 亂,不便于查找或更改。(5)編程前要加流程圖,這樣會使思路清晰,例如數(shù)字音樂盒的設(shè)計(jì)思路 完全可以按著MP3的工作方式列寫流程圖。(6)LCD計(jì)時(shí)正常顯示的解決辦法:兩個(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,效果有很大 改觀。但還有問題。當(dāng)音樂為全4拍起始時(shí),此時(shí)音樂節(jié)奏與定時(shí)器T1中斷頻率錯(cuò)開,LCD 顯示和音樂播放都會好一些。另外,在歌曲中,當(dāng)遇到一個(gè)音符發(fā)音為4

17、拍,在編曲中為*CH,因時(shí) 間較長,當(dāng)定時(shí)器T1此時(shí)來中斷時(shí),就會對歌曲播放產(chǎn)生影響,若改為發(fā)音一 拍,中斷對歌曲播放影響減弱,但音樂效果變差。改進(jìn)方案:若采用可以定時(shí)時(shí)間更長的單片機(jī),可以避免所有問題。收獲與體會上學(xué)期學(xué)習(xí)單片機(jī)的課時(shí)不多,對單片機(jī)的硬件設(shè)計(jì),軟件設(shè)計(jì)掌握的 深度不夠,但通過此次課程設(shè)計(jì),明顯的改善了,首先對于硬件電路的工作原理 有了進(jìn)一步的學(xué)習(xí),同時(shí)有了一個(gè)提升;軟件方面,在程序的設(shè)計(jì),程序的調(diào)試 方面都有了很大的進(jìn)步。在一個(gè)好的氛圍里才能踏下心來做東西,在這一段時(shí)間里,寢室成員都 認(rèn)真對待這次課程設(shè)計(jì),除了自己做好自己的課題外,在遇到不懂的地方互相討 論,查閱資料,互助解

18、決問題。另外在編程中出現(xiàn)問題時(shí),一定要戒驕戒躁,腳 踏實(shí)地,認(rèn)真看書,仔細(xì)分析,仔細(xì)調(diào)試,就一定會發(fā)現(xiàn)錯(cuò)誤。我們也是這么做 的,這一點(diǎn)在這次的課程設(shè)計(jì)中十分重要。通過這次課程設(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)。我明白了 一個(gè)人要想做好一件事,就必須具備自信心,耐心,還要有毅力,要膽大心細(xì), 要勇于嘗試,要手腦并用,最后才能交出一份令人滿意的答卷。附件1 :元件清單名稱數(shù)量(個(gè)

19、)型號備注電阻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:總電路圖PDIYADD PD.VAD1 (口PD.AD* POfVADS F 口 J9AD6 Fn.?AD7PZZfAWP23A11P2.4/A12P2SM3 P2J9A14 P2.T/A15pinP3IVRXDpi.iF3.1iTXDP12P32/WTUP13P3INT1P1.*P3.*hTDP

20、1P3aT1PUSP3jaWRP1.Tpg.TfKFEO UNDER.: TEXTS-OUT BIT P2.0N EQU 6OUT_NUM EQU P1ORG 0000H附件3:音樂程序;定義音頻輸出端口,p2.0;歌曲總數(shù);數(shù)碼管顯視當(dāng)前所放歌曲曲數(shù)AJMP MAINORG 0003HAJMP LAST_SONGORG 000BHAJMP F_T0ORG 0013Hq4: AJMP NEXT_SONGORG 001BH;外部中斷0用于接上一曲歌按鍵;定時(shí)器0用于定時(shí),作音符發(fā)生器用;外部中斷1接下一曲歌按鍵AJMP START_PAUSE ;定時(shí)器1用計(jì)數(shù),這里用作中斷,接開始/暫停鍵,初值

21、為0ffH,方式2ORG 0030HMAIN: MOV SP,#60HMOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。MOV R0,#30H;R0中存入數(shù)據(jù)30H,這里在以30H開始的單元存放每首歌曲的入口地址,其中30H,31H存放歌曲的節(jié)拍入口地址,32H, 33H存放歌曲音符入口地址,每首歌占用四個(gè)存儲存單元。MOV R5,#00HMOV R6,#1SET_TAB: MOV A,R5MOVC A,A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,A+DPTRMOV R0,AINC R5INC R0MOV A,R5MOVC A,A+D

22、PTRMOV R0,AINC R0INC R5MOV A,R5MOVC A,A+DPTRMOV R0,AINC R0INC R5INC R6;R5中存放表TABLE中正在執(zhí)行操作的序號;R6存放正在設(shè)置入口信息的歌曲數(shù);設(shè)置每首歌曲的入口信息,存放在以30H開始的存儲單元中。;設(shè)置完一首歌曲后,歌曲數(shù)加一CJNE R6,#N+1,SET_TAB;是否設(shè)置完,沒有便繼續(xù),否則進(jìn)行下面的操作. -jU* t-4-t 業(yè)4 口口 A A 4-rr4.業(yè)4 44* 乙一、廠l;* 對中斷,計(jì)數(shù)器的相關(guān)參數(shù)進(jìn)彳丁設(shè)置MOV TMOD, #61H;計(jì)數(shù)器0工作方式1,計(jì)數(shù)器1工作方式2MOV TH1,#0

23、FFH;給計(jì)數(shù)器1置初值0FFH,是工作方式2MOV 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)先級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;音頻輸出端口初始化-tZl-ffT;*;設(shè)置結(jié)束CLR F0;

24、設(shè)置F0=0,用來作暫停/播放的標(biāo)置位用MOV 22H,#01H;22H單元中存放正在播放的歌曲編號MOV DPTR,#OUT_TAB;將正在播放的歌曲編號送數(shù)碼管顯視MOV A,22HMOVC A,A+DPTRMOV OUT_NUM,AMOV R7,#00H;R7中存放歌曲總信息的入口地址START0:MOV R4,#00H;R4存放當(dāng)前正在播放歌曲的第幾個(gè)節(jié)拍數(shù)MOV R0,#30H;30H開始的單元中存放歌曲的入口信息MOV A,R7;將歌曲的節(jié)拍表的入口地址送到DPTRADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC

25、 R4MOVC A,A+DPTR;取出第一節(jié)拍數(shù),其實(shí)第一個(gè)節(jié)拍不是歌曲的第個(gè)節(jié)拍,而是表示幾分音符*7MOV 26H,A;將取出的音符數(shù)+節(jié)拍數(shù)保存在職26H單元中NEXT: MOV R0,#30H;開始取出歌曲的第一個(gè)數(shù)據(jù)MOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4;放在A中MOVC A,A+DPTR*7JZ END0;若為0,則表示為休止符,不唱,本次音符不唱,MOV R1,A;不為0,取出節(jié)拍數(shù)ANL A,#0FHMOV R2,AMOV A,R1SWAP AANL A,#0FHJNZ SIN

26、G;音符不為0,唱CLR TR0;為0,不唱,關(guān)頻率發(fā)生器SJMP SING1SING: DEC A;開始唱,進(jìn)行相應(yīng)的數(shù)據(jù)處理MOV R3,ARL AMOV DPH,R0INC R0MOV DPL,R0INC R0MOVC A,A+DPTRMOV 21H,AMOV TH0,AMOV A,R3RL AINC AMOVC A,A+DPTRMOV 20H,AMOV TL0,A;開唱;每個(gè)音符唱多久;是否暫停,;沒有暫停,繼續(xù);暫停,不唱;等待播放;開始播放;不唱;唱完處理SETB TR0SING1:LCALL DELAYJB F0,FORAJMP NEXTFOR: CLR TR0JB F0,$AJ

27、MP NEXTEND0: CLR TR0MOV A,22H;沒有全部唱完,;是最后一首嗎?;是最后一首,則R7指向第一首,演唱第一首MOV R7,#00HMOV 22H,#01HAJMP BACKQ:INC 22H;不是最后一首,唱下一首,R7內(nèi)容加4,歌曲數(shù)加1MOV A,R7ADD A,#4MOV R7,ABACK: MOV R4,#00H;數(shù)碼管顯視相應(yīng)的歌曲編號MOV A,22HMOV DPTR,#OUT_TABMOVC A,A+DPTRMOV OUT_NUM,A*;CJNE A,#N,WWMOV 22H,#01HMOV R7,#00HMOV OUT_NUM,#11111001BAJM

28、P WWWWW: MOV A,R7ADD A,#4MOV R7,AINC 22HCLR EAPUSH DPHPUSH DPLMOV A,22HMOV DPTR,#OUT_TABMOVC A,A+DPTRMOV OUT_NUM,A POP DPL POP DPHWWW: SETB EAAJMP START0F_T0: MOV TH0,21HMOV TL0,20H CPL OUT RETINEXT_SONG: PUSH ACC PUSH DPH PUSH DPLCLR EAMOV A,22HCJNE A,#N,Q;是不是全部歌曲都唱完;全部唱完,則從第一首開始再唱;數(shù)碼管顯視第一首歌曲編號唱下一首

29、,歌曲的入口信息調(diào)整;數(shù)碼管顯視相應(yīng)的歌曲編號;開始下一首的演唱;定時(shí)器0置初值;頻率產(chǎn)生;下一曲中斷程序處理,保護(hù)現(xiàn)場;關(guān)中斷MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,AMOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,ADEC R4MOV R0,B;結(jié)果存入26H單元中;恢復(fù)R0中的內(nèi)容*POP DPL;恢復(fù)現(xiàn)場POP DPHPOP ACCSETB EARETILAST_SONG: PUSH ACCPUSH DPHPUSH DPLCLR EAMOV A,22H

30、CJNE A,#1,QQMOV 22H,#NMOV B,#4MOV A,#N-1MUL ABMOV R7,AAJMP BACK2QQ:DEC 22HMOV A,R7SUBB A,#4MOV R7,ABACK2:MOV R4,#00HMOV A,22HMOV DPTR,#OUT_TABMOVC A,A+DPTRMOV OUT_NUM,A;中斷返回;上一曲中斷程序處理開始,保護(hù)現(xiàn)場;關(guān)中斷;曲目數(shù)送A;是否是第一首;是第一首歌曲;將R7指向最后一首歌曲;處理結(jié)束;R7 減 4;數(shù)碼管顯視相應(yīng)歌曲的編號;*;MOV R4,#00HMOV R0,#30HMOV A,R7ADD A,R0MOV R0,A

31、MOV DPH,R0INC R0MOV DPL,R0INC R0MOV A,R4INC R4MOVC A,A+DPTRMOV 26H,A;結(jié)果存入26H單元中DEC R4MOV R0,B;R0中的內(nèi)容恢復(fù);* ;POP DPL;恢復(fù)現(xiàn)場POP DPHPOP ACCSETB EARETI;中斷返回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,#248DJNZ 29H,$DJ

32、NZ 28H,D3DJNZ 27H,D2DJNZ R2,DELAY RET;OUT_TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,73H;共陰數(shù)碼管顯視用OUT_TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,TABLE:0FFH ;共陽DWSONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5TABLE1:DW 6458

33、0,64684,64777,64820,64898,64968,65030DW 63628,63835,64021,64103,64260,64400,64524SONG1: DB 04H;1=C 2/4 軍港之夜DB32H,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,14HDB0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52

34、H,54H,32H,34H,31H,21H,12H,24H,24HDB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB22H,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,32HDB32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C

35、2H,34H,34H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB32H,52H,52H,31H,31H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB32H,52H,52H,32H,32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,14H,14HDB0C2H,32H,32H,12H,21H,31H,24H,32H,34H,0D2H,0C2H,14H,14H,32H,52H,52H,32H,52H,54H,32

36、H,34H,31H,21H,12H,24H,24HDB34H,0E2H,0C2H,0D1H,0E1H,0D4H,12H,0E2H,32H,32H,0E2H,0D1H,0E1H,0D4H,0D2H,0E2H,32H,32H,0E2H,0E2H,0D1H,0E1H,0D4HDB22H,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,32HDB32H,21H,31H,24H,0E2H,0D1H,0E1H,0D2H,0C2H,34H,3

37、4H,32H,52H,52,32H,62H,51H,61H,54H,31H,52H,31H,12H,32H,12H,32H,32H,54H,52HDB32H,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,64777DW 64820,64898,64968,65030,65058,65110,65157,65178SONG2: DB 02H;1=C 4/4 死了都要愛DB 04H,94HDB0E8

溫馨提示

  • 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

提交評論