2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  一、引言1</b></p><p><b>  二、設(shè)計(jì)任務(wù)1</b></p><p><b>  三、方案論證1</b></p><p>  四.音頻發(fā)聲知識(shí)2</p&

2、gt;<p><b>  1、基本知識(shí)2</b></p><p><b>  2、節(jié)拍3</b></p><p><b>  3、編碼4</b></p><p>  五、音樂盒單路原理分析5</p><p><b>  1、硬件原理5</

3、b></p><p>  2、軟件程序設(shè)計(jì)8</p><p><b>  3、程序調(diào)試9</b></p><p><b>  六、結(jié)論與心得9</b></p><p><b>  七、參考文獻(xiàn)10</b></p><p><b>

4、  八、附錄10</b></p><p><b>  1、程序10</b></p><p>  2、PCB板圖23</p><p><b>  一、引言</b></p><p>  本文是應(yīng)用MCS-51單片機(jī)原理和控制理論設(shè)計(jì)音樂演奏控制器的硬件電路,并利用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)。

5、通過控制單片機(jī)內(nèi)部的定時(shí)器來產(chǎn)生不同頻率的方波,驅(qū)動(dòng)喇叭發(fā)出不同音調(diào)的音樂,再利用延遲來控制發(fā)音時(shí)間的長(zhǎng)短。把樂譜轉(zhuǎn)化成相應(yīng)的定時(shí)常數(shù)就可以從發(fā)音設(shè)備中演奏出悅耳動(dòng)聽的音樂。</p><p>  這種控制電路結(jié)構(gòu)簡(jiǎn)單,可靠性高,應(yīng)用性強(qiáng);軟件程序適應(yīng)范圍廣,對(duì)于不同的音樂只需要改變相應(yīng)的定時(shí)常數(shù)即可。對(duì)單片機(jī)和音樂愛好者有一定的借鑒價(jià)值。</p><p><b>  二、設(shè)計(jì)任務(wù)

6、 </b></p><p>  設(shè)計(jì)題目:  單片機(jī)音樂播放器 </p><p><b>  設(shè)計(jì)要求:</b></p><p>  1、完成89S51的外圍復(fù)位、時(shí)鐘和電源等外圍電路的設(shè)計(jì),完成揚(yáng)聲器驅(qū)動(dòng)設(shè)計(jì)。</p><p>  2、根據(jù)各音階頻率算出定時(shí)器定時(shí)常數(shù),根據(jù)節(jié)拍給出該音階

7、持續(xù)的時(shí)間。 </p><p>  3、完成音樂播放軟件并完成樂譜表的翻譯,最好能編寫一個(gè)播放子程序用于播放。 4、播放音樂片段。</p><p><b>  三、方案論證</b></p><p><b>  設(shè)計(jì)方案: </b></p><p>  設(shè)計(jì)中我們考慮了兩種設(shè)計(jì)方案,兩種設(shè)計(jì)方案中主

8、要去區(qū)別在于硬件電路的不同,對(duì)于本設(shè)計(jì)通過模擬電路和單片機(jī)設(shè)計(jì)均可以實(shí)現(xiàn),最后根據(jù)設(shè)計(jì)要求、可行性和設(shè)計(jì)成本的考慮選擇了單片機(jī)設(shè)計(jì)的方案?,F(xiàn)在一一介紹論證如下:</p><p>  采用單片機(jī)來設(shè)計(jì)電路。此電路包括時(shí)鐘電路、復(fù)位電路、音樂驅(qū)動(dòng)電路和MCS-51單片機(jī)。各部分功能如下:</p><p>  時(shí)鐘電路:由石英晶體振蕩器產(chǎn)生單片機(jī)工作時(shí)所必須的時(shí)鐘信號(hào)。振蕩器采用12M的晶振,使

9、之機(jī)器周期 Tcy=1us,方便發(fā)音程序的計(jì)算和編譯。</p><p>  復(fù)位單路:由復(fù)位按鍵使單片機(jī)的CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。</p><p>  音樂驅(qū)動(dòng)電路:由于單片機(jī)最大灌入電流為3.2mA,所以選用PNP管,并要在PNP的基極和發(fā)射極加限流電阻。</p><p>  顯示電路:使用單片機(jī)P0端口做顯示電路,要

10、在P0口加上拉電阻(5~10kΩ)。</p><p>  還要加限流電阻,保護(hù)單片機(jī)。</p><p>  (5) 按鍵電路:有外部中斷輸入和定時(shí)/計(jì)數(shù)器的外部輸入都是低電平有效,可以和復(fù)位電路相視,只要將復(fù)位電路中的電容去掉即可。</p><p><b>  四.音頻發(fā)聲知識(shí)</b></p><p><b>

11、  1、基本知識(shí)</b></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下,改變計(jì)數(shù)值

12、THO及TLO以產(chǎn)生不同頻率的方法.</p><p>  3. 例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO (523Hz). </p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p>  N=Fi÷2÷Fr

13、N: 計(jì)算值;</p><p>  Fi: 內(nèi)部計(jì)時(shí)一次為1us, 故其頻率為1MHz;</p><p>  4. 其計(jì)數(shù)值的求法如下:</p><p>  T=65536-N=65536-Fi÷2÷Fr</p><p>  例如: 設(shè)K=65536, F=1000000=Fi=1MHz, 求低音DO(261Hz).中音D

14、O (523Hz). 高音的DO (1046Hz)的計(jì)算值.</p><p>  T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr</p><p>  低音DO的 T=65536-500000/262=63627</p><p>  中音DO的 T=65536

15、-500000/523=64580</p><p>  高音DO的 T=65536-500000/1047=65059</p><p>  5. C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表1所示.</p><p><b>  2、節(jié)拍</b></p><p><b>  1相關(guān)知識(shí)</b></p&g

16、t;<p>  每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,表2為節(jié)拍與節(jié)拍碼的對(duì)照.如果1拍為0.4秒,1/4拍是0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間.假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推.所以只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù),如表3為1/4和1/8節(jié)拍的時(shí)間設(shè)定.</p><p><b>  表2

17、節(jié)</b></p><p><b>  拍與節(jié)拍碼對(duì)照</b></p><p>  表3 各調(diào)1/4節(jié)拍的時(shí)間設(shè)定 各調(diào)1/8節(jié)拍的時(shí)間設(shè)定</p><p><b>  3、編碼</b></p><p><b>  建立音樂的步驟:</b></p

18、><p>  1. 先把樂譜的音符找出,然后由表63建立T值表的順序.</p><p>  2. 把T值勤表建立在TABLE1,構(gòu)成發(fā)音符的計(jì)數(shù)值放在"TABLE".</p><p>  3. 簡(jiǎn)譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))為低4位,音符節(jié)拍碼放在程序的"TABLE"處.</p><p>  表4

19、 簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼.T值. 節(jié)拍數(shù)</p><p><b>  原理分析:</b></p><p><b>  (1)原理圖說明:</b></p><p>  當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂曲。同時(shí)啟動(dòng)定時(shí)器T1,顯示歌曲號(hào)。</p><p> 

20、 ①.硬件電路中用、(外部中斷0、1輸入端P3.2 P3.3)分別接S1、S2作為上、下一曲的功能鍵。</p><p>  硬件電路中用T1(外部定時(shí)/計(jì)數(shù)器輸入端P3.5)分別接S3作為暫停的功能鍵。</p><p> ?、?用P0.0-P0.7控制七段碼a,b,c,d,e,f,g,Dp。</p><p>  ③.用P2.3口控制喇叭。</p>

21、<p> ?、?電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf。</p><p><b> ?。?)元件介紹</b></p><p> ?、?AT89S51元件介紹</p><p>  AT89S51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasa

22、ble Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。</p><p>  ②.AT89S51引腳的排列、名稱、功能和用法</p><p>  AT89S51采用標(biāo)準(zhǔn)雙列直插式引腳DIP-40大規(guī)模集成電路封裝。它的引引腳排列如下圖所示:</p><p>  AT89S51的引腳排列</p><p>&l

23、t;b>  引腳介紹:</b></p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)

24、器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p>  P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地

25、址接收。 </p><p>  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)

26、器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為AT89

27、C51的一些特殊功能口,如下表所示:</p><p>  P3口管腳 備選功能:</p><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)</p><p>  P3.2 INT0(外部中斷0)</p><p>  P3.3 INT1(外部中斷1)</p>&l

28、t;p>  P3.4 T0(記時(shí)器0外部輸入)</p><p>  P3.5 T1(記時(shí)器1外部輸入)</p><p>  P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p>  P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><p>  P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p>  

29、RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>  ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如

30、想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p>  EA/V

31、PP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p>  XTAL2:來自反向振蕩器的

32、輸出。</p><p><b>  振蕩器特性:</b></p><p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。</p&g

33、t;<p><b>  表5 元器件清單:</b></p><p><b>  2、軟件程序設(shè)計(jì)</b></p><p><b>  圖2 程序總框圖</b></p><p><b>  3、程序調(diào)試</b></p><p>  程序調(diào)試中出

34、現(xiàn)的問題及解決的辦法:</p><p>  有時(shí)會(huì)出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)現(xiàn)是因?yàn)槌绦蛑杏械闹噶顣鴮懙貌灰?guī)范導(dǎo)致的,例如有的RET返回指令一定要按正確格式書寫或在兩行指令間最好不要留空行。</p><p>  程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見,都用LJMP,我們就遇到過跳轉(zhuǎn)指令用錯(cuò)程序無法正常運(yùn)行的現(xiàn)象。當(dāng)用JNZ指令時(shí),跳轉(zhuǎn)范圍比較少,這時(shí)要用

35、一個(gè)標(biāo)號(hào)中轉(zhuǎn)。</p><p>  編程時(shí)要注意,在程序開始時(shí),要寫入各定時(shí)器中斷的入口地址。</p><p>  編程過程中要注意加注釋或分割線,否則,在程序過長(zhǎng)時(shí)容易變得很亂,不便于查找或更改。</p><p>  編程前要加流程圖,這樣會(huì)使思路清晰,例如數(shù)字音樂盒的設(shè)計(jì)思路完全可以按著MP3的工作方式列寫流程圖。</p><p><

36、;b>  六、結(jié)論與心得</b></p><p>  此次設(shè)計(jì)過程中,我們查了一些相關(guān)資料,使得我們更深層的了解了單片機(jī)芯片的工作原理以及軟件、硬件如何聯(lián)系起來實(shí)現(xiàn)我們的要求。經(jīng)過我們共同努力之下,不僅完成本次設(shè)計(jì)的具體相關(guān)要求,也熟練掌握了AT89C51芯片的具體功能和注意事項(xiàng)。</p><p>  此外,設(shè)計(jì)中所涉及到的元器件還有:三極管、電阻、瓷片電容等,我們通過查

37、了相關(guān)元器件的作用及其工作原理,并對(duì)其進(jìn)行驗(yàn)算,從而進(jìn)一步地減少實(shí)驗(yàn)誤差。在我們的不懈努力下加上老師的些許指導(dǎo),最終還是發(fā)現(xiàn)了問題的原因,我們從而查找相關(guān)資料和不斷地試驗(yàn)最終實(shí)現(xiàn)了樂曲的播放。</p><p>  在整個(gè)設(shè)計(jì)過程中,我們不僅能將書本上學(xué)到的關(guān)于單片機(jī)相關(guān)的知識(shí)于實(shí)踐相結(jié)合,而且還培養(yǎng)了團(tuán)隊(duì)合作精神以及提高了自學(xué)能力。這將對(duì)我們今后的實(shí)踐提供了有很大的基礎(chǔ)。它更加讓我們意識(shí)到:理論和實(shí)踐相結(jié)合的重要

38、性。雖然電路看上比較簡(jiǎn)單,但實(shí)際行動(dòng)起來將會(huì)遇到許多挫折以及其它一些客觀的因素。因此,設(shè)計(jì)過程中要保持一種持之以恒、嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì)作風(fēng)思想,這樣才會(huì)在遇到問題時(shí)能夠發(fā)現(xiàn)和解決問題。</p><p>  設(shè)計(jì)已經(jīng)結(jié)束,但它留給我們的不單是作品,更是一堂生動(dòng)的課程。它教會(huì)我們只有不斷努力、不斷吸取經(jīng)驗(yàn)和教訓(xùn)和團(tuán)結(jié)合作才會(huì)取得最終的成功!我相信經(jīng)過此次設(shè)計(jì),我們今后會(huì)取得更大的成功的!</p><p&g

39、t;<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><b>  八、附錄</b></p>

40、<p><b>  1、程序</b></p><p>  OUT BIT P2.3 ;定義音頻輸出端口,p2.3</p><p>  N EQU 9;歌曲總數(shù)</p><p>  OUT_NUM EQU P0;數(shù)碼管顯視當(dāng)前所放歌曲曲數(shù)</p><

41、;p><b>  ORG 0000H</b></p><p><b>  AJMP MAIN</b></p><p><b>  ORG 0003H</b></p><p>  AJMP LAST_SONG ;外部中斷0用于接上一曲歌按鍵</p><p&

42、gt;<b>  ORG 000BH</b></p><p>  AJMP F_T0 ;定時(shí)器0用于定時(shí),作音符發(fā)生器用</p><p><b>  ORG 0013H</b></p><p>  q4: AJMP NEXT_SONG ;外部中斷1接下一曲歌按鍵&l

43、t;/p><p><b>  ORG 001BH</b></p><p>  AJMP START_PAUSE ;定時(shí)器1用計(jì)數(shù),這里用作中斷,接開始/暫停鍵,初值為0ffH,方式2</p><p><b>  ORG 0030H</b></p><p>  MAIN: MOV SP,

44、#60H</p><p>  MOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。</p><p>  MOV R0,#30H ;R0中存入數(shù)據(jù)30H,這里在以30H開始的單元存放每首歌曲的入口地址,其中30H,31H存放</p><p>  ;歌曲的節(jié)拍入口地址,32H,33H存放歌曲

45、音符入口地址,每首歌占用四個(gè)存儲(chǔ)存單元。</p><p>  MOV R5,#00H ;R5中存放表TABLE中正在執(zhí)行操作的序號(hào)</p><p>  MOV R6,#1 ;R6存放正在設(shè)置入口信息的歌曲數(shù)</p><p>  SET_TAB: MOV A,R5 ;設(shè)置每首歌曲的入口信息,

46、存放在以30H開始的存儲(chǔ)單元中。</p><p>  MOVC A,@A+DPTR</p><p><b>  MOV @R0,A</b></p><p><b>  INC R5</b></p><p><b>  INC R0</b></p><p>

47、;<b>  MOV A,R5</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV @R0,A</b></p><p><b>  INC R5</b></p><p><b>  INC R0</b></p

48、><p><b>  MOV A,R5</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV @R0,A</b></p><p><b>  INC R0</b></p><p><b>  INC R5&l

49、t;/b></p><p><b>  MOV A,R5</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV @R0,A</b></p><p><b>  INC R0</b></p><p><b

50、>  INC R5</b></p><p>  INC R6 ;設(shè)置完一首歌曲后,歌曲數(shù)加一</p><p>  CJNE R6,#N+1,SET_TAB ;是否設(shè)置完,沒有便繼續(xù),否則進(jìn)行下面的操作</p><p>  ;**********************************

51、* 對(duì)中斷,計(jì)數(shù)器的相關(guān)參數(shù)進(jìn)行設(shè)置</p><p>  MOV TMOD, #61H;計(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><

52、;p>  SETB ET1 ;允許計(jì)數(shù)器1中斷</p><p>  SETB ET0 ;允許計(jì)數(shù)器具0中斷</p><p>  CLR PT0 ;計(jì)數(shù)器0為低優(yōu)先級(jí)</p><p>  SETB PT1

53、 ;計(jì)數(shù)器1為高優(yōu)先級(jí)</p><p>  SETB IT0 ;外部中斷0為跳沿觸發(fā)</p><p>  SETB PX0 ;高優(yōu)先級(jí)</p><p>  SETB IT1 ;外部中

54、斷1為跳沿觸發(fā)</p><p>  SETB PX1 ;高優(yōu)先級(jí)</p><p>  SETB EX1 ;允許外部中斷1中斷</p><p>  SETB EX0 ;允許外部中斷定0中斷</p>

55、;<p>  SETB EA ;開中斷總開關(guān)</p><p>  SETB TR1 ;定時(shí)器1開始工作,作中斷用</p><p>  SETB OUT ;音頻輸出端口初始化</p><p>

56、  ;*********************************** ;設(shè)置結(jié)束</p><p>  CLR F0 ;設(shè)置F0=0,用來作暫停/播放的標(biāo)置位用</p><p>  MOV 22H,#01H ;22H單元中存放正在播放的歌曲編號(hào)</p>

57、<p>  MOV DPTR,#OUT_TAB ;將正在播放的歌曲編號(hào)送數(shù)碼管顯視</p><p><b>  MOV A,22H</b></p><p>  MOVC A,@A+DPTR</p><p>  MOV OUT_NUM,A</p><p>  MOV R7,

58、#00H ;R7中存放歌曲總信息的入口地址</p><p>  START0:MOV R4,#00H ;R4存放當(dāng)前正在播放歌曲的第幾個(gè)節(jié)拍數(shù)</p><p>  MOV R0,#30H ;30H開始的單元中存放歌曲的入口信息</p><

59、;p>  MOV A,R7 ;將歌曲的節(jié)拍表的入口地址送到DPTR</p><p><b>  ADD A,R0</b></p><p><b>  MOV R0,A</b></p><p>  MOV DPH,@R0</p><p>

60、<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>  INC R4</b></p>&

61、lt;p>  MOVC A,@A+DPTR ;取出第一節(jié)拍數(shù),其實(shí)第一個(gè)節(jié)拍不是歌曲的第一個(gè)節(jié)拍,而是表示幾分音符</p><p>  ;****************************************************</p><p>  MOV 26H,A ;將取出的音符數(shù)+節(jié)拍數(shù)保存在職26H單元中</p><p> 

62、 NEXT: MOV R0,#30H ;開始取出歌曲的第一個(gè)數(shù)據(jù)</p><p><b>  MOV A,R7</b></p><p><b>  ADD A,R0</b></p><p><b>  MOV R0,A</b></p><p>  MOV DPH,@R

63、0</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>  INC R4&

64、lt;/b></p><p>  MOVC A,@A+DPTR;放在A中</p><p>  ;****************************</p><p>  JZ END0 ;若為0,則表示為休止符,不唱,本次音符不唱,</p><p>  MOV R1,A ;不為0,取出節(jié)拍數(shù)&l

65、t;/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</p&g

66、t;<p>  JNZ SING ;音符不為0,唱</p><p>  CLR TR0 ;為0,不唱,關(guān)頻率發(fā)生器</p><p>  SJMP SING1</p><p>  SING: DEC A ;開始唱,進(jìn)行相應(yīng)的數(shù)據(jù)處理</p><p&g

67、t;<b>  MOV R3,A</b></p><p><b>  RL A</b></p><p>  MOV DPH,@R0</p><p><b>  INC R0</b></p><p>  MOV DPL,@R0</p><p><b&

68、gt;  INC R0</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV 21H,A</b></p><p><b>  MOV TH0,A</b></p><p><b>  MOV A,R3</b></p>

69、;<p><b>  RL A</b></p><p><b>  INC A</b></p><p>  MOVC A,@A+DPTR</p><p><b>  MOV 20H,A</b></p><p><b>  MOV TL0,A</b&

70、gt;</p><p>  SETB TR0 ;開唱</p><p>  SING1:LCALL DELAY ;每個(gè)音符唱多久</p><p>  JB F0,FOR ;是否暫停,</p><p>  AJMP NEXT ;沒有暫停,繼續(xù)</p><p&g

71、t;  FOR: CLR TR0 ;暫停,不唱</p><p>  JB F0,$ ;等待播放</p><p>  AJMP NEXT ;開始播放</p><p>  END0: CLR TR0 ;不唱</p><p>  MOV A,22H

72、 ;唱完處理</p><p>  CJNE A,#N,WW ;是不是全部歌曲都唱完</p><p>  MOV 22H,#01H ;全部唱完,則從第一首開始再唱</p><p>  MOV R7,#00H</p><p>  MOV OUT_NUM,#11111001B;數(shù)碼管顯視第一首歌曲編號(hào)&

73、lt;/p><p><b>  AJMP WWW</b></p><p>  WW: MOV A,R7 ;沒有全部唱完,唱下一首,歌曲的入口信息調(diào)整</p><p><b>  ADD A,#4</b></p><p><b>  MOV R7,A</b><

74、/p><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

75、>  MOV A,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></p>&

76、lt;p><b>  POP DPH</b></p><p>  WWW: SETB EA</p><p>  AJMP START0 ;開始下一首的演唱</p><p>  F_T0: MOV TH0,21H ;定時(shí)器0置初值</p><p>  MOV TL0,20H&

77、lt;/p><p>  CPL OUT ;頻率產(chǎn)生</p><p><b>  RETI</b></p><p>  NEXT_SONG: PUSH ACC ;下一曲中斷程序處理,保護(hù)現(xiàn)場(chǎng)</p><p><b>  PUSH DPH</b></p>&l

78、t;p><b>  PUSH DPL</b></p><p>  CLR EA ;關(guān)中斷</p><p>  MOV A,22H</p><p>  CJNE A,#N,Q ;是最后一首嗎?</p><p>  MOV R7,#00H ;是最后一首,則R7指向

79、第一首,演唱第一首</p><p>  MOV 22H,#01H</p><p><b>  AJMP BACK</b></p><p>  Q: INC 22H ;不是最后一首,唱下一首,R7內(nèi)容加4,歌曲數(shù)加1</p><p><b>  MOV A,R7</b&g

80、t;</p><p><b>  ADD A,#4</b></p><p><b>  MOV R7,A</b></p><p>  BACK: MOV R4,#00H ;數(shù)碼管顯視相應(yīng)的歌曲編號(hào)</p><p><b>  MOV A,22H</b><

81、/p><p>  MOV DPTR,#OUT_TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV OUT_NUM,A</p><p>  ;********************************************</p><p>  MOV B,R0 ;對(duì)下首要演

82、唱的歌曲的幾分拍進(jìn)行調(diào)整,同時(shí)對(duì)R0中的內(nèi)容進(jìn)行保護(hù)</p><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

83、>  MOV R0,A</b></p><p>  MOV DPH,@R0</p><p><b>  INC R0</b></p><p>  MOV DPL,@R0</p><p><b>  INC R0</b></p><p><b>  

84、MOV A,R4</b></p><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>&

85、lt;p>  MOV R0,B;恢復(fù)R0中的內(nèi)容</p><p>  ;********************************************</p><p>  POP DPL;恢復(fù)現(xiàn)場(chǎng)</p><p><b>  POP DPH</b></p><p><b> 

86、 POP ACC</b></p><p><b>  SETB EA</b></p><p>  RETI ;中斷返回</p><p>  LAST_SONG: PUSH ACC ;上一曲中斷程序處理開始,保護(hù)現(xiàn)場(chǎng)</p><p><b>  PUSH

87、 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,#1,QQ ;是否是第一首</p><

88、;p>  MOV 22H,#N ;是第一首歌曲</p><p>  MOV B,#4 ;將R7指向最后一首歌曲</p><p>  MOV A,#N-1</p><p><b>  MUL AB</b></p><p><b>  MOV R7,A</b><

89、/p><p>  AJMP BACK2 ;處理結(jié)束</p><p>  QQ: DEC 22H</p><p>  MOV A,R7 ;R7減4</p><p><b>  SUBB A,#4</b></p><p><b>  MOV R7,A<

90、;/b></p><p>  BACK2: MOV R4,#00H</p><p><b>  MOV A,22H</b></p><p>  MOV DPTR,#OUT_TAB</p><p>  MOVC A,@A+DPTR</p><p>  MOV OUT_NUM,A

91、 ;數(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>  MOV R4,#00H</p><p>  MOV R0,#30H&

92、lt;/p><p><b>  MOV 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 R

93、0</b></p><p>  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

94、,@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><p>  ;**********************************

95、**********</p><p>  POP DPL ;恢復(fù)現(xiàn)場(chǎng)</p><p><b>  POP DPH</b></p><p><b>  POP ACC</b></p><p><b>  SETB EA</b></p><p> 

96、 RETI ;中斷返回</p><p>  START_PAUSE:CPL F0 ;開始/暫停中斷處理程序,將標(biāo)置位取反</p><p>  JB F0,RETURN ;為1返回</p><p>  SETB TR0 ;為0則播放</p><p>  RETU

97、RN: RETI ;中斷返回</p><p>  DELAY: MOV 27H,26H ;音符演奏時(shí)間控制</p><p>  D2: MOV 28H,#125</p><p>  D3: MOV 29H,#248</p><p>  DJNZ 29H,$</

98、p><p>  DJNZ 28H,D3</p><p>  DJNZ 27H,D2</p><p>  DJNZ R2,DELAY</p><p><b>  RET</b></p><p>  ;OUT_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,

99、77H,7CH,39H,5EH,79H,71H,73H </p><p><b>  ;共陰數(shù)碼管顯視用</b></p><p>  OUT_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH </p><p&g

100、t;<b>  ;共陽(yáng)</b></p><p><b>  TABLE: </b></p><p>  DW SONG1,TABLE1,SONG2,TABLE2,SONG3,TABLE3,SONG4,TABLE4 ,SONG5,TABLE5,SONG6,TABLE6,SONG7,TABLE7,SONG8,TABLE8</p><

101、;p>  TABLE1:DW 64580,64684,64777,64820</p><p>  DW 64898,64968,65030,64260</p><p>  DW 64400,64524,65058,63835,64021 </p><p>  SONG1: ;

102、精忠報(bào)國(guó)</p><p>  DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H</p><p>  DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H</p><p>  DB 24H,22H,32H,54H,52H,32H,

103、92H,12H,92H,82H,98H,66H,52H,36H,22H</p><p>  DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H</p><p>  DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H</p>

104、<p>  DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H</p><p>  DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H</p><p>  DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H

105、,52H,38H,22H,22H,22H,32H,52H,52H</p><p>  DB 52H,62H,7FH,74H,04H,58H,6FH</p><p><b>  DB 00</b></p><p>  TABLE2:DW 64580,64684,64777,64820</p><p>  DW 64898,

106、64968,65030,64260</p><p>  DW 64400,64524,65058,63835,64021 </p><p>  SONG2: DB 02H,82H ;月亮代表我的心</p><p>  DB 16H,32H,54H,02H,52H</p><p>  DB 0A6H,32H,54H,02H,52H</

107、p><p>  DB 64H,74H,0B6H,64H</p><p>  DB 52H,5CH,32H,22H</p><p>  DB 16H,12H,14H,32H,22H</p><p>  DB 16H,12H,14H,22H,32H</p><p>  DB 26H,12H,94H,22H,32H</p&

108、gt;<p><b>  DB 2CH</b></p><p>  DB 32H,52H</p><p>  DB 36H,22H,14H,54H</p><p>  DB 0ACH,92H,0A2H</p><p>  DB 96H,0A2H,96H,82H</p><p>  D

109、B 3CH,54H</p><p>  DB 36H,22H,14H,54H</p><p>  DB 0ACH,92H,0A2H</p><p>  DB 16H,12H,14H,22H,32H</p><p>  DB 2CH,02H,82H</p><p>  DB 16H,32H,56H,12H</p&g

110、t;<p>  DB 0A6H,32H,56H,52H</p><p>  DB 66H,72H,0B6H,62H</p><p>  DB 62H,52H,58H,32H,22H</p><p>  DB 16H,12H,14H,32H,22H</p><p>  DB 16H,12H,14H,22H,32H</p>

111、;<p>  DB 26H,92H,0A4H,12H,22H</p><p><b>  DB 1CH</b></p><p><b>  DB 00</b></p><p>  TABLE3: DW 64580,64684,64777,64820</p><p>  DW 64898

112、,64968,65030,64260</p><p>  DW 64400,64524,65058,63835,64021 </p><p>  SONG3: DB 0d4H,84H,94H,82H,92H ;看我七十二變</p><p>  DB 12H,22H,82H,92H,02H,92H,82H,0d2H</p><p>  DB

113、 82H,92H,14H,84H,02H,0d1H,0d1H</p><p>  DB 0c2H,0d2H,84H,0d2H,0d2H,82H,82H</p><p>  DB 84H,82H,82H,94H,82H,0d2H</p><p>  DB 82H,82H,82H,92H,02H,82H,82H,0d2H</p><p>  DB

114、 0c4H,84H,0d4H,92H,0d2H</p><p>  DB 82H,0d2H,82H,92H,98H</p><p>  DB 04H,94H,88H</p><p>  DB 04H,94H,88H</p><p>  DB 04H,94H,88H</p><p>  DB 04H,94H,88H,04

115、H</p><p>  DB 32H,32H,22H,12H,02H,92H,12H,92H</p><p>  DB 32H,32H,22H,12H,02H,92H,12H,92H</p><p>  DB 32H,32H,22H,12H,02H,92H,12H,22H</p><p>  DB 54H,44H,34H,12H,22H<

116、;/p><p>  DB 34H,22H,12H,02H,92H,12H,92H</p><p>  DB 32H,32H,22H,12H,02H,92H,12H,92H</p><p>  DB 32H,32H,22H,12H,02H,92H,12H,22H</p><p>  DB 54H,44H,32H,22H,12H,92H</p&

117、gt;<p><b>  DB 00</b></p><p>  TABLE4:DW 64580,64684,64777,64820</p><p>  DW 64898,64968,65030,64260</p><p>  DW 64400,64524,65058,63835,64021 </p><p&

118、gt;  SONG4:DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H ;大海</p><p>  DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H</p><p>  DB 22H,32H,22H,12H,94H,82H

119、,92H,12H,14H,12H,14H,94H,1cH</p><p>  DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H</p><p>  DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H</p>&l

120、t;p>  DB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52H</p><p>  DB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22H</p><p>  DB 12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,1

121、4H,0b2H,62H,52H,54H,62H,54H,32H,52H</p><p>  DB 66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54H</p><p>  DB 62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H

122、,32H</p><p>  DB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fH</p><p><b>  DB 00</b></p><p>  TABLE5:DW 64021,64103,64260,64400 ,64524,64580,64684,64777,64820,

123、64898,64968,65030,64934</p><p>  SONG5:DB 86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H ;彩云追月</p><p>  DB 62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52

124、H,62H,74H,32H,52H,52H,32H,</p><p>  DB 21H,31H,21H,11H,24H</p><p>  DB 32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,</p><p>  DB 31H,21H,21H,31H,21H,11H,1CH</p>

125、<p>  DB 21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,</p><p>  DB 71H,61H,51H,61H,71H,61H,6FH</p><p>  DB 86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33

126、H,62H,0B2H,0B2H,62H,</p><p>  DB 51H,61H,51H,31H,54H</p><p>  DB 62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,32H,</p><p>  DB 21H,11H,32H,51H,61H,5

127、4H</p><p>  DB 02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61H,</p><p>  DB 51H,31H,32H,52H,52H,32H,62H</p><p>  DB 51H,31H,31H,21H,11H,91H,23H,31H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論