版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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> 第1章 緒論2</b></p><p> 第2章 音樂(lè)基礎(chǔ)知識(shí)3</p><p> 2.1 音樂(lè)基礎(chǔ)3</p><p>
2、 2.2 音頻脈沖和音樂(lè)節(jié)拍的實(shí)現(xiàn)3</p><p> 2.2.1 音頻脈沖的產(chǎn)生3</p><p> 2.2.2 音樂(lè)節(jié)拍的產(chǎn)生5</p><p> 第3章 系統(tǒng)方案設(shè)計(jì)6</p><p><b> 3.1設(shè)計(jì)任務(wù)6</b></p><p> 3.2 設(shè)計(jì)目的6</
3、p><p> 3.3 設(shè)計(jì)過(guò)程6</p><p> 3.4 設(shè)計(jì)思想6</p><p> 3.4.1 方案設(shè)計(jì)與選擇7</p><p> 第4章 硬件電路設(shè)計(jì)9</p><p> 4.1 電路組成及工作原理9</p><p> 4.1.2 工作原理9</p>&
4、lt;p> 4.2 AT89C52單片機(jī)介紹9</p><p> 4.4 發(fā)聲驅(qū)動(dòng)電路12</p><p> 4.5 顯示電路12</p><p> 4.6 控制電路13</p><p> 第5章 軟件設(shè)計(jì)14</p><p> 5.1程序設(shè)計(jì)14</p><p>
5、 5.2 程序流程圖14</p><p> 第6章 系統(tǒng)調(diào)試15</p><p> 6.1 常用調(diào)試工具15</p><p> 6.1.1 Proteu仿真軟件介紹15</p><p> 6.1.2 Keil編譯環(huán)境介紹15</p><p> 6.2 系統(tǒng)調(diào)試方法15</p>&
6、lt;p><b> 結(jié) 論17</b></p><p><b> 致 謝18</b></p><p><b> 參考文獻(xiàn)19</b></p><p><b> 附 錄20</b></p><p> 附錄1 程序清單20<
7、;/p><p> 附錄2 單片機(jī)音樂(lè)發(fā)生器電路原理圖32</p><p><b> 摘 要</b></p><p> 在電子技術(shù)日月更新、不斷換代,計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言應(yīng)用廣泛,特別是單片機(jī)技術(shù)日趨發(fā)達(dá)的情況下,為了培養(yǎng)并增強(qiáng)設(shè)計(jì)自主性和動(dòng)手能力強(qiáng)的人才,了解單片機(jī)強(qiáng)大的設(shè)計(jì)功能,我們進(jìn)行了此次設(shè)計(jì)。為了實(shí)現(xiàn)一首音樂(lè)的播放,選擇了用單片機(jī)來(lái)
8、實(shí)現(xiàn)音樂(lè)的播放,因?yàn)樗泻芏鄡?yōu)點(diǎn),如:外部結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)起來(lái)比較方便等。對(duì)于單片機(jī)產(chǎn)生音樂(lè),關(guān)鍵是控制頻率的輸出。我們知道,不同的聲音對(duì)應(yīng)不同的頻率,產(chǎn)生有規(guī)律的頻率輸出就可以得到相應(yīng)規(guī)律的聲音。音樂(lè)中,有7個(gè)基本音符:do﹑re﹑mi﹑fa﹑so﹑la﹑si,七個(gè)不同的音符對(duì)應(yīng)著不同的頻率。只要我們對(duì)照音符輸出相對(duì)應(yīng)的頻率,就可以產(chǎn)生美妙的音樂(lè)了。在此次設(shè)計(jì)中主要采用單片機(jī)AT89C52和一個(gè)SOUNDER(喇叭)來(lái)實(shí)現(xiàn)音樂(lè)的播放,在
9、單片機(jī)AT89C52的18號(hào)和19號(hào)引腳(外接晶振端子,分別是片內(nèi)反相放大器輸入端、片內(nèi)反相放大器輸出端)上外接振蕩電路,以此來(lái)提供時(shí)鐘頻率(時(shí)鐘頻率為12MHz);而P3口中的P2.0端口作為音頻輸出口;并同時(shí)利用P3口中P3.2、P3.3、P3.5端口來(lái)控制音樂(lè)選擇上一曲、下一曲及音樂(lè)播放的開(kāi)始或暫停;與此同時(shí)我們還在P1口端接一個(gè)</p><p> 關(guān)鍵詞:音樂(lè)發(fā)生器;單片機(jī)音樂(lè)發(fā)生器;音樂(lè)播放器<
10、/p><p><b> 第1章 緒論</b></p><p> 現(xiàn)在各種各樣的音樂(lè)播放器呈現(xiàn)在我們面前,外觀(guān)越來(lái)越精美,功能越來(lái)越多,體積越來(lái)越小,重量也越來(lái)越小、價(jià)格越來(lái)越便宜。同時(shí),隨著當(dāng)代手機(jī)行業(yè)的快速發(fā)展,許多手機(jī)廠(chǎng)商為了能夠吸引廣大的客戶(hù)受到消費(fèi)者的青睞,致此他們開(kāi)始研究在手機(jī)上實(shí)現(xiàn)音樂(lè)和視頻的播放,因此現(xiàn)在的手機(jī)都能夠輕松的播放音樂(lè)了。這樣人們就更很容易攜
11、帶,隨時(shí)隨地都可以聽(tīng),以便來(lái)緩解人們的疲勞、壓抑、愉快人們的心情等,甚至有時(shí)還可以借著音樂(lè)來(lái)抒發(fā)自己的感情,傳達(dá)我們對(duì)朋友的祝福。因此,在不知不覺(jué)中它成為了人們生活的一樣必需品,無(wú)論到哪里、無(wú)論什么時(shí)候都可以聽(tīng)到我們想聽(tīng)的音樂(lè)。</p><p> 根據(jù)現(xiàn)在各大學(xué)教學(xué)計(jì)劃的要求,并培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)的專(zhuān)業(yè)知識(shí)和基本技能、培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題能力的教育過(guò)程。要求即將畢業(yè)的學(xué)生必須根據(jù)學(xué)院要求獨(dú)立的做出一個(gè)畢
12、業(yè)設(shè)計(jì),而不同專(zhuān)業(yè)的學(xué)生有不同的設(shè)計(jì)題目。我們學(xué)院也不例外,由各個(gè)專(zhuān)業(yè)的老師出題(本專(zhuān)業(yè)范圍內(nèi)),再由學(xué)生(學(xué)生根據(jù)自身學(xué)習(xí)情況綜合考慮)進(jìn)行選擇設(shè)計(jì)題目(同時(shí)也確定了該學(xué)生的畢業(yè)設(shè)計(jì)的指導(dǎo)老師),然后由獨(dú)立的(可以向指導(dǎo)老師詢(xún)問(wèn))完成。在本設(shè)計(jì)中要求用單片機(jī)實(shí)現(xiàn)音樂(lè)發(fā)生器,主要是利用我們常見(jiàn)的或是比較熟悉的單片機(jī)來(lái)實(shí)現(xiàn)音樂(lè)的播放。而本設(shè)計(jì)主要是利用單片機(jī)AT89C52(51系列單片機(jī))來(lái)實(shí)現(xiàn)的,同是時(shí)也利用了共陰極的八段數(shù)碼管及揚(yáng)聲器
13、(喇叭),共同來(lái)實(shí)現(xiàn)音樂(lè)的播放。</p><p> 本設(shè)計(jì)共分為六章,第1章是緒論,第2章是音樂(lè)基礎(chǔ)知識(shí),第3章是系統(tǒng)方案設(shè)計(jì),第4章是硬件電路設(shè)計(jì),第5章軟件設(shè)計(jì),第6章是系統(tǒng)調(diào)試。</p><p> 在實(shí)際中參照單片機(jī)相關(guān)資料,就可容易的利用單片機(jī)設(shè)計(jì)出一個(gè)音樂(lè)發(fā)生器。在設(shè)計(jì)過(guò)程中人們還可考慮用多種方法進(jìn)行實(shí)現(xiàn),這樣不但很好的發(fā)揮了人們的創(chuàng)新精神,還提高了動(dòng)手能力、綜合分析能力及專(zhuān)
14、業(yè)知識(shí)運(yùn)用能力。</p><p> 第2章 音樂(lè)基礎(chǔ)知識(shí)</p><p><b> 2.1 音樂(lè)基礎(chǔ)</b></p><p> 音作為一種物理現(xiàn)象,是由于物體振動(dòng)而產(chǎn)生的,振動(dòng)產(chǎn)生的聲波作用于人耳,聽(tīng)覺(jué)系統(tǒng)將神經(jīng)沖動(dòng)傳達(dá)給大腦,進(jìn)而產(chǎn)生聽(tīng)覺(jué)。人耳能聽(tīng)到的聲音頻率大約在11—20000Hz,而音樂(lè)使用的音一般在27—4100Hz。</
15、p><p> 樂(lè)音體系中各音級(jí)的名稱(chēng)叫做音名,被廣泛采用的是C D E F G A B (do re mi fa so la si則多用于歌唱,稱(chēng)為唱名)。樂(lè)音體系中音高關(guān)系的最小計(jì)量單位叫做半音,兩個(gè)半音構(gòu)成一個(gè)全音。樂(lè)音中有幾十個(gè)高低不同的音,但是最基本只有這七個(gè)音,其他高、低音名都是在這個(gè)基礎(chǔ)上變化出來(lái)的。</p><p> 樂(lè)譜表上用來(lái)表示正在進(jìn)行的音的長(zhǎng)短的符號(hào),叫做音符。不同的
16、音符代表不同的長(zhǎng)度。音符有以下幾種:全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符、六十四分音符。此外,還有附點(diǎn)音符,它就是指帶附點(diǎn)的音符,所謂附點(diǎn)就是記在音符右邊的小圓點(diǎn),表示增加前面音符時(shí)值的一半。音持續(xù)的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示,休止符表示暫停發(fā)音。</p><p> 一首音樂(lè)就是由許多不同的音符組成的,而每一個(gè)音符對(duì)應(yīng)著不同的頻率,這樣就可以利用不同的頻率的組合,加以拍數(shù)對(duì)應(yīng)的延時(shí)來(lái)構(gòu)
17、成不同的音樂(lè)。</p><p> 2.2 音頻脈沖和音樂(lè)節(jié)拍的實(shí)現(xiàn)</p><p> 2.2.1 音頻脈沖的產(chǎn)生</p><p> 音樂(lè)的產(chǎn)生需要不同頻率的音頻脈沖,對(duì)于單片機(jī)而言,可以利用它的定時(shí)/計(jì)數(shù)器產(chǎn)生這樣的方波頻率信號(hào)。在本設(shè)計(jì)中,單片機(jī)工作在12MHz時(shí)鐘頻率下,其時(shí)鐘周期為1us,因此可以利用AT89C52的內(nèi)部定時(shí)/計(jì)數(shù)器T0,使其工作模式為1
18、,根據(jù)對(duì)應(yīng)音符的不同頻率求出計(jì)數(shù)器的初值T(即是TH0和TL0的值),則TH0=T/256,TL0=T%256。</p><p> C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照如下表2-1所示。</p><p> 表2-1 C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表</p><p> 2.2.2 音樂(lè)節(jié)拍的產(chǎn)生</p><p> 節(jié)拍是指音樂(lè)持續(xù)的長(zhǎng)短
19、,是除音符之外音樂(lè)的另一關(guān)鍵組成部分,在單片機(jī)系統(tǒng)中可以通過(guò)延時(shí)來(lái)實(shí)現(xiàn)。</p><p> 如果1/4拍的延時(shí)設(shè)為0.2s,則1拍的時(shí)間為0.8s,依次類(lèi)推,可以求出其余節(jié)拍的值,節(jié)拍的延時(shí)時(shí)間與音樂(lè)的曲調(diào)值有相對(duì)應(yīng)的關(guān)系,下面為不同曲調(diào)下的1/4和1/8節(jié)拍的時(shí)間設(shè)定,如下表2-2所示。</p><p> 表2-2 不同曲調(diào)下1/4和1/8節(jié)拍的延時(shí)表</p><
20、;p> 第3章 系統(tǒng)方案設(shè)計(jì)</p><p><b> 3.1設(shè)計(jì)任務(wù)</b></p><p><b> 設(shè)計(jì)一音樂(lè)發(fā)生器:</b></p><p> (1)用單片機(jī)作為開(kāi)發(fā)工具,至少能儲(chǔ)存3首樂(lè)曲;</p><p> ?。?)能按鍵選擇樂(lè)曲序號(hào),每按一次加1鍵樂(lè)曲序號(hào)加1,每按一次減
21、1鍵樂(lè)曲序號(hào)減1;</p><p> (3)用LED數(shù)碼管顯示正在播放的樂(lè)曲序號(hào);</p><p> ?。?)能進(jìn)行仿真音樂(lè)發(fā)生器。</p><p><b> 3.2 設(shè)計(jì)目的</b></p><p> ?。?)培養(yǎng)學(xué)生怎樣將綜合的理論知識(shí)與實(shí)際相結(jié)合起來(lái)的能力</p><p> ?。?)培養(yǎng)
22、學(xué)生分析問(wèn)題、解決問(wèn)題的能力</p><p> ?。?)鍛煉學(xué)生獨(dú)立、自學(xué)的能力及其動(dòng)手能力</p><p><b> 3.3 設(shè)計(jì)過(guò)程</b></p><p> 在畢業(yè)設(shè)計(jì)題目選擇后,我積極的查閱相關(guān)資料。經(jīng)過(guò)分析、思考及其指導(dǎo)老師的悉心的指導(dǎo),我最終設(shè)計(jì)出了三種方案,并對(duì)每一種方案進(jìn)行分析與考慮及各個(gè)方案的比較,選擇了第一種方案——用A
23、T89C52單片機(jī)、一個(gè)共陰極的八段數(shù)碼管及揚(yáng)聲器來(lái)實(shí)現(xiàn)音樂(lè)的播放。確定好設(shè)計(jì)方案后,將整個(gè)設(shè)計(jì)分成了三個(gè)步驟:一是,設(shè)計(jì)的硬件電路圖的繪制;二是,程序的設(shè)計(jì);三是,硬件電路仿真與程序的編譯、連接及運(yùn)行。</p><p><b> 3.4 設(shè)計(jì)思想</b></p><p> 在此次設(shè)計(jì)中,我查閱了很多相關(guān)資料并經(jīng)過(guò)分析、思考得到了以下三種方案。它們分別是:用AT8
24、9C52單片機(jī)、一個(gè)共陰極的八段數(shù)碼管及揚(yáng)聲器實(shí)現(xiàn)音樂(lè)發(fā)生器,用單片機(jī)AT89C51、LM386(音頻功放)和揚(yáng)聲器實(shí)現(xiàn)音樂(lè)發(fā)生器,用單片機(jī)AT89C52和揚(yáng)聲器實(shí)現(xiàn)音樂(lè)發(fā)生器,但經(jīng)過(guò)我自己的分析總結(jié),最后選擇了第一種方案。</p><p> 3.4.1 方案設(shè)計(jì)與選擇 </p><p> 方案一 用單片機(jī)AT89C52實(shí)現(xiàn)音樂(lè)發(fā)生器</p><p> 主要運(yùn)
25、用AT89C52單片機(jī)和一個(gè)揚(yáng)聲器兩個(gè)器件組成。在AT89C51單片機(jī)外部端子上接晶振電路,單片機(jī)的工作時(shí)鐘為12MHz,將P3口的P3.7引腳作為音頻輸出口直接送給喇叭,再通過(guò)程序設(shè)計(jì)的來(lái)計(jì)算出將要播放的歌曲的長(zhǎng)度,然后在計(jì)算出從該首歌中所取出來(lái)的音符的長(zhǎng)度,在將該音符通過(guò)一系列的控制后實(shí)現(xiàn)了該音符的播放,在利用延時(shí)來(lái)實(shí)現(xiàn)該音符播放的長(zhǎng)度,在該音符播放完后接著取下一個(gè)音符,就這樣反復(fù)的取出下一個(gè)音符,從而實(shí)現(xiàn)了樂(lè)曲的播放。該方案具體的
26、、詳細(xì)的電路圖設(shè)計(jì)如圖3-1所示。</p><p> 圖3-1 方案三的電路圖</p><p> 方案二 用單片機(jī)AT89C51和LM386(音頻功放)實(shí)現(xiàn)音樂(lè)發(fā)生器</p><p> 主要運(yùn)用AT89C51單片機(jī)、音頻功放芯片(LM386)和揚(yáng)聲器三部分組成。此方案中電路原理圖也是由兩部分組成:一是ATMEL公司的AT89C51單片機(jī)外接晶振電路(單片機(jī)的工
27、作時(shí)鐘12MHz)及復(fù)位電路來(lái)實(shí)現(xiàn)的;二是美國(guó)國(guó)家半導(dǎo)體公司的音頻功率放大器(LM386)電路。將單片機(jī)AT89C51的P0.0作為音頻脈沖輸出腳,輸入到由LM386組成的音頻功放電路中,經(jīng)過(guò)處LM386處理后,從LM386的輸出引腳,經(jīng)過(guò)補(bǔ)償網(wǎng)絡(luò)(與揚(yáng)聲器相并)主要是為了防止高頻自激和過(guò)壓現(xiàn)象,再輸入到揚(yáng)聲器中,這樣單片機(jī)發(fā)出的不同頻率的音頻信號(hào)就可以通過(guò)揚(yáng)聲器發(fā)出我們所想要的樂(lè)曲。該設(shè)計(jì)方案的硬件電路圖的設(shè)計(jì)如下所示,如圖3-2所示
28、。</p><p> 圖3-2 方案二的電路圖</p><p> 方案三 用AT89C52單片機(jī)、八段數(shù)碼管及揚(yáng)聲器來(lái)實(shí)現(xiàn)音樂(lè)發(fā)生器</p><p> 主要運(yùn)用單片機(jī)AT89C52、一個(gè)共陰極的八段數(shù)管及揚(yáng)聲器三部分組成。它的主要思想就是將定時(shí)器0用于定時(shí),作音符發(fā)生器用;定時(shí)器1用計(jì)數(shù),這里用作中斷;同時(shí)將所要播放的歌曲存放在指定的地址單元中,單片機(jī)來(lái)直接驅(qū)
29、動(dòng)揚(yáng)聲器來(lái)實(shí)現(xiàn)音樂(lè)的播放。同時(shí)還添加了數(shù)碼管顯示即所播放的歌曲的曲目數(shù)顯示,還添加了實(shí)現(xiàn)上一曲、下一曲、開(kāi)始/暫停的功能,就能夠選擇所要的樂(lè)曲了。</p><p> 綜合以上三種方案都可以實(shí)現(xiàn)音樂(lè)的播放,比較三種設(shè)計(jì)方案來(lái)說(shuō):從電路原理圖實(shí)現(xiàn)相對(duì)來(lái)說(shuō)三種方案之中的第一方案比較簡(jiǎn)單,但是它沒(méi)有實(shí)現(xiàn)音樂(lè)播放的其他功能,只能夠循環(huán)的播放你所存儲(chǔ)的音樂(lè)。而第二方案與第一方案大同小異,用的單片機(jī)不同一個(gè)是AT89C51、
30、另一個(gè)是AT89C52,并同時(shí)方案了利用了一個(gè)音頻功放電路來(lái)放大輸入的脈沖信號(hào),這樣就比第一方案中產(chǎn)生的音樂(lè)好聽(tīng)了。第三方案是用單片機(jī)AT89C52、一個(gè)共陰極的八段數(shù)碼管及揚(yáng)聲器,再利用開(kāi)關(guān)按鈕來(lái)控制音樂(lè)播放的開(kāi)始/暫停、上一曲及下一曲,同時(shí)將所播放的樂(lè)曲的曲目在八段數(shù)管電理工作顯示。因此,在此次設(shè)計(jì)中我選擇了第三種方案來(lái)實(shí)現(xiàn)音樂(lè)發(fā)生器,單片機(jī)音樂(lè)發(fā)生器電路圖見(jiàn)附錄2所示。</p><p> 第4章 硬件電路
31、設(shè)計(jì)</p><p> 4.1 電路組成及工作原理</p><p> 4.1.1 電路組成</p><p> 對(duì)于整個(gè)設(shè)計(jì)的電路由單片機(jī)、顯示電路、驅(qū)動(dòng)發(fā)聲電路及歌曲播放控制電路等部分組成,其組成框圖如圖4-1所示,其中單片機(jī)AT89C52主要是將各個(gè)模塊連接起來(lái)并控制各個(gè)模塊;時(shí)鐘電路則是用來(lái)產(chǎn)生時(shí)鐘頻率,一般是12MHz;復(fù)位電路則是能夠?qū)?dāng)前狀態(tài)變?yōu)槌跏?/p>
32、狀態(tài);歌曲的曲數(shù)顯示電路主要是顯示當(dāng)前所播放的歌曲的曲目數(shù);驅(qū)動(dòng)發(fā)聲電路則是來(lái)播放音樂(lè)的;歌曲播放控制電路則是來(lái)控制歌曲的播放/暫停和選擇歌曲;而整個(gè)電路組成框圖則是用來(lái)顯示播放歌曲的曲目數(shù)同是控制歌曲的選擇及音樂(lè)的播放。</p><p> 圖4-1 電路組成框圖</p><p> 4.1.2 工作原理</p><p> 利用單片機(jī)AT89C52直接來(lái)產(chǎn)生音頻
33、脈沖來(lái)驅(qū)動(dòng)喇叭來(lái)完成音樂(lè)的播放 。利用了該單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器T0來(lái)定進(jìn)行定時(shí),同時(shí)利用定時(shí)器/計(jì)數(shù)器T1用業(yè)計(jì)數(shù),并同時(shí)利用了該單片機(jī)的P2口的P2.0來(lái)作為音頻脈沖的輸出端。</p><p> 4.2 AT89C52單片機(jī)介紹 </p><p> AT89C52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PE
34、ROM)和藹可親256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng)合,如圖4-2所示。</p><p> 圖4-2 AT89C52引腳圖</p><p><b>
35、 1、主要性能參數(shù)</b></p><p> 與MCS-51產(chǎn)品指令和引腳完全兼容</p><p> 8k字節(jié)可重擦寫(xiě)Flash閃速存儲(chǔ)器</p><p><b> 1000次擦寫(xiě)周期</b></p><p> 全靜態(tài)操作:0Hz—24MHz</p><p><b>
36、; 三級(jí)加密程序存儲(chǔ)器</b></p><p> 256×8字節(jié)內(nèi)部RAM</p><p> 32個(gè)可編程I/O口線(xiàn)</p><p> 3個(gè)16位定時(shí)/計(jì)數(shù)器</p><p><b> 8個(gè)中斷源</b></p><p> 可編程串行UART通道低功耗空閑和掉電模
37、式</p><p><b> 2、引腳功能</b></p><p><b> Vcc:電源電壓</b></p><p><b> GND:接地</b></p><p> P0口:P0口是一個(gè)8位雙向I/O接口,也即地址/數(shù)據(jù)總線(xiàn)復(fù)用口。在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線(xiàn)分
38、時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線(xiàn)復(fù)用。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路,對(duì)端口寫(xiě)“1”通過(guò)內(nèi)部的上拉電阻把端口拉到高電平時(shí),此時(shí)可作輸入口。</p><p> P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。在訪(fǎng)問(wèn)外部存儲(chǔ)
39、器時(shí),P2口送出高8位地址數(shù)據(jù)。</p><p> P3口:P3口除了作為一般的I/O口線(xiàn)外,更重要的用途是它的第二功能,如下表4-1所示。</p><p> 表4-1 P3口的第二功能表</p><p> RST:復(fù)位信號(hào)輸入端。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。</p><p> /PROG:地址
40、鎖存有效信號(hào)輸出端。當(dāng)訪(fǎng)問(wèn)片外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于位鎖存低8地址</p><p> ?。撼绦虼鎯?chǔ)允許輸出端。是片外程序存儲(chǔ)器的讀選通信號(hào)。</p><p> /Vpp:行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,這必須是該器件是使用12V編程電壓Vpp。</p><p> XTAL1:振蕩器
41、反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。通過(guò)XTAL1、XTAL2外接晶振后,即可構(gòu)成自激振蕩器,驅(qū)動(dòng)內(nèi)部時(shí)鐘發(fā)生器向主機(jī)提供時(shí)鐘信號(hào)。</p><p> 在AT89C52片內(nèi)存儲(chǔ)器中,80H-FFH共128個(gè)單元為特殊功能寄存器(SFR),其中包括B寄存器、累加器、程序狀態(tài)寄存器(PSW)、定時(shí)/計(jì)數(shù)器控制、中斷優(yōu)級(jí)控制寄存器(
42、IP)、P3口鎖存寄存器、中斷允許控制寄存器(IE)、串行口控制寄存器等。它們可運(yùn)用來(lái)設(shè)置片內(nèi)電路的運(yùn)行方式,記錄電路的運(yùn)行狀態(tài),MCS-51單片機(jī)對(duì)特殊功能寄存器采取與片內(nèi)RAM統(tǒng)一編址的方法,可按字節(jié)地址直接尋址。</p><p> 4.4 發(fā)聲驅(qū)動(dòng)電路</p><p> 主要是采用一個(gè)三極管來(lái)驅(qū)動(dòng)揚(yáng)聲器來(lái)產(chǎn)生音樂(lè)。在單片機(jī)的P2口上的P2.0的端子上連接發(fā)聲驅(qū)動(dòng)電路,其中要先連接
43、一個(gè)10k的電阻主要是用業(yè)限制電流過(guò)大,然后連接一個(gè)三極管來(lái)驅(qū)動(dòng)揚(yáng)聲器以致放出的音質(zhì)較好,再連接揚(yáng)聲器,因?yàn)橛玫揭粋€(gè)揚(yáng)聲器所以就可以不能區(qū)分它的正負(fù)極性了,它的電路框圖如4-3圖所示。</p><p> 圖4-3 發(fā)聲驅(qū)動(dòng)電路</p><p><b> 4.5 顯示電路</b></p><p> 顯示部分主要是由一個(gè)共陰極的八段數(shù)碼管和
44、八個(gè)限流電阻共同來(lái)組成的。它們接在AT89C52單片機(jī)P1口上,用一組電阻都為220、330或100來(lái)對(duì)P1口輸出的電壓進(jìn)行分流,從而來(lái)確定了八段數(shù)碼管擁有正常的電壓,不會(huì)因電流過(guò)大而被燒壞。這樣數(shù)碼管就可以正常顯示所播放的歌曲的曲目數(shù)了,具體的顯示器電路圖如圖4-4所示。</p><p> 圖 4-4 顯示電路</p><p><b> 4.6 控制電路</b>
45、</p><p> 這部分電路主要是用來(lái)控制歌曲的播放/暫停及選擇。采用了三個(gè)按鈕來(lái)進(jìn)行控制來(lái)實(shí)現(xiàn)歌曲播放的上一曲、下一曲及開(kāi)始/暫停的功能,同時(shí)還接一個(gè)上拉電阻,它的阻值一般是5.1k、4.7k、10k三個(gè)阻值,共同實(shí)現(xiàn)了音樂(lè)播放歌曲的控制。如圖4-5所示。</p><p> 圖4-5 控制電路圖</p><p><b> 第5章 軟件設(shè)計(jì)<
46、;/b></p><p><b> 5.1程序設(shè)計(jì)</b></p><p> 詳細(xì)的程序設(shè)計(jì)見(jiàn)附錄1</p><p><b> 5.2 程序流程圖</b></p><p><b> 如圖5-1所示。</b></p><p><b>
47、; 圖5-1 主程序圖</b></p><p><b> 第6章 系統(tǒng)調(diào)試</b></p><p> 6.1 常用調(diào)試工具</p><p> 6.1.1 Proteu仿真軟件介紹</p><p> Proteu仿真軟件用來(lái)畫(huà)硬件電路原理圖,在其中我們可以同時(shí)調(diào)用各樣的單片機(jī),但是其中存放的是普通的
48、單片機(jī)可能不存在我們所要的芯片,因此我們也可以用Auto CAD或protel 99來(lái)畫(huà)此硬件電路圖,而我在此次設(shè)計(jì)中采用了Proteu這個(gè)軟件。在畫(huà)圖過(guò)程中一定要注意的是,元器件之間的連接線(xiàn)不可以是非線(xiàn)一定要導(dǎo)線(xiàn),因此完成電路圖后再調(diào)試這個(gè)硬件電路是否能實(shí)現(xiàn)它的功能。具體的操作是打開(kāi)電路原理圖后雙擊單片機(jī)芯片在彈出的對(duì)話(huà)窗口中把我們?cè)趉eil編譯軟件中編譯生成的后綴名為.hex文件調(diào)入其中,而該單片機(jī)的工作時(shí)鐘頻率我們可以在此改變,設(shè)
49、置好后點(diǎn)擊OK就可以了,再點(diǎn)擊原理圖左下角的運(yùn)行就可以正常運(yùn)行了,若要暫停或是恢復(fù)則點(diǎn)擊相應(yīng)的按鈕就好了。</p><p> 6.1.2 Keil編譯環(huán)境介紹</p><p> Keil編譯軟件用來(lái)編程,可以用匯編語(yǔ)言也可以用C語(yǔ)言來(lái)進(jìn)行編程實(shí)現(xiàn)某些功能。當(dāng)打開(kāi)keil后,首先新建一個(gè)項(xiàng)目保存在相應(yīng)位置,后再新建一個(gè)文本,將你已經(jīng)編好的程序復(fù)制到這個(gè)文本中或是在這個(gè)文本進(jìn)行編寫(xiě)程序,之
50、后一再將其保存為一個(gè)以.Asm或是.c作為后綴名的文本,再在我們建立的組中將程序文件添加到工程中,再經(jīng)過(guò)編譯,然后生成.Hex文件再編譯,若提示沒(méi)有出現(xiàn)錯(cuò)誤errors(不含警告warnings)則說(shuō)明調(diào)試成功,反之則應(yīng)該對(duì)程序進(jìn)行檢查分析,直到調(diào)試成功為止。</p><p> 6.2 系統(tǒng)調(diào)試方法</p><p> ?。?)打開(kāi)電路仿真的應(yīng)用程序ISIS Professional,在其
51、中選擇該設(shè)計(jì)所需的的單片機(jī)或是元件,然后將其放置到要畫(huà)圖的區(qū)域中,你可以雙擊該元件改變它相應(yīng)的屬性及參數(shù)。</p><p> 2、用帶電氣性的連接線(xiàn)來(lái)連接各個(gè)元件,從而構(gòu)成了完整的電路圖并保存在為.DSN為后綴名的文件,放在你所需的地方。</p><p> 3、打開(kāi)程序仿真或調(diào)試應(yīng)用程序Keil uVision2, 首先要建一個(gè)工程,再將程序添加到該工程中,再保存。</p>
52、<p> 4、再進(jìn)行程序的編譯與連接,檢查程序是否正確,如果不正確,則進(jìn)行分析直到正確為止;如果正確,則可以生成.hex文件。</p><p> 5、點(diǎn)擊project菜單,選擇options for target項(xiàng)或是直接點(diǎn)擊常用工具欄中的圖標(biāo)打開(kāi)對(duì)話(huà)框進(jìn)行設(shè)置, 則就可以生成.hex文件了。</p><p> 6、再打開(kāi)電路仿真的應(yīng)用程序ISIS Professio
53、nal,然后雙擊該電路圖中的主的單片機(jī),同時(shí)彈出一個(gè)對(duì)話(huà)框,在對(duì)話(huà)框中進(jìn)行選擇所生成的.hex文件,并還可以進(jìn)行單片機(jī)的頻率設(shè)置,再單擊確定。</p><p> 7、點(diǎn)擊運(yùn)行檢查是否可以運(yùn)行正確。</p><p><b> 結(jié) 論</b></p><p> 通過(guò)這次比較完整的單片機(jī)音樂(lè)發(fā)生器的設(shè)計(jì),我擺脫了單純的理論知識(shí)學(xué)習(xí)狀態(tài),和實(shí)際
54、設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的專(zhuān)業(yè)基礎(chǔ)知識(shí),同時(shí)也提高我查閱文獻(xiàn)資料、設(shè)計(jì)規(guī)范以及電腦畫(huà)圖等其他專(zhuān)業(yè)能力水平,而且通過(guò)對(duì)整體的掌控,對(duì)局部的取舍,以及對(duì)細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗(yàn)得到了豐富,并且意志品質(zhì)力。這是我們都希望看到的也正是我們進(jìn)行畢業(yè)設(shè)計(jì)的目的所在。</p><p> 在此次設(shè)計(jì)中我學(xué)到了很多東西,包括對(duì)單片機(jī)的更進(jìn)一步的認(rèn)識(shí)、一些關(guān)于音樂(lè)的基礎(chǔ)知識(shí)的了解、匯編語(yǔ)言的應(yīng)用的學(xué)習(xí)等
55、等。</p><p> 首先,在這次畢業(yè)設(shè)計(jì)中,通過(guò)上網(wǎng)或、圖書(shū)館或是上書(shū)店翻閱相關(guān)的單片機(jī)資料,同時(shí)也在幫同學(xué)查看和解決一些問(wèn)題(畢業(yè)設(shè)計(jì)中的硬件問(wèn)題)時(shí),更加清楚地認(rèn)識(shí)了單片機(jī),讓在我原來(lái)的硬件基礎(chǔ)知識(shí)的基礎(chǔ)上又認(rèn)識(shí)了解幾款單片機(jī)(AT89S52)及它的原理。</p><p> 其次,就是在此次畢業(yè)設(shè)計(jì)中關(guān)系到了音樂(lè)的一些基礎(chǔ)知識(shí),音樂(lè)是由不同的音符組成,不同的音符對(duì)應(yīng)著不同的頻率
56、產(chǎn)生,產(chǎn)生有規(guī)律的頻率樂(lè)音。了解音樂(lè)的產(chǎn)生,音樂(lè)體系中中音高關(guān)系的最小計(jì)量單位及音符的定義,同時(shí)也知道了音符又分為了以下幾種:全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符、六十四分符。</p><p> 最后,讓我感受最大的是將理論和實(shí)踐相結(jié)是要解決很多問(wèn)題經(jīng)過(guò)一定的挫折才能很好的完成任務(wù),因此在其過(guò)程中考慮問(wèn)題時(shí)一定要謹(jǐn)慎、全面,出現(xiàn)問(wèn)題時(shí)不應(yīng)該氣餒,要沉著思考或是向同學(xué)、老師請(qǐng)求幫忙。只要
57、堅(jiān)持不懈我們就一定能克服任何困難完成任務(wù)。</p><p><b> 致 謝</b></p><p> 經(jīng)過(guò)兩個(gè)多月的努力,我的畢業(yè)設(shè)計(jì)順利完成了。在這里,我向所有指導(dǎo)過(guò)我的老師、幫助過(guò)我的同學(xué)和一直關(guān)心支持著我的家人,對(duì)他們表示深深的謝意。</p><p> 在畢業(yè)設(shè)計(jì)選題后,*老師要求我們一定要抓緊時(shí)間積極地查詢(xún)、搜索畢業(yè)設(shè)計(jì)相關(guān)資
58、料。*老師不畏工作的繁榮,要求他指導(dǎo)的學(xué)生定時(shí)的到他那里給他說(shuō)明下畢業(yè)設(shè)計(jì)的進(jìn)展及在此過(guò)程中我們遇到的困難與疑惑,并且他會(huì)給我們一一耐心的講解。</p><p> 在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,*老師不斷對(duì)我得到的結(jié)論進(jìn)行總結(jié),并提出新的問(wèn)題,使得我的畢業(yè)設(shè)計(jì)課題能夠深入地進(jìn)行下去,也使我接觸到了許多理論和實(shí)際上的新問(wèn)題,使我做了許多有益的思考。正如古人云:“師者傳道授業(yè)解惑者也”,這正是*老師的寫(xiě)照,對(duì)于導(dǎo)師授予的做
59、學(xué)術(shù)和做人的道理,我將會(huì)銘記在心對(duì)今后學(xué)習(xí)和生活中定會(huì)大有裨益 在此謹(jǐn)向尊敬的導(dǎo)師致以由衷的感謝和崇高的敬意。</p><p> 畢業(yè)設(shè)計(jì)到最后的成稿,都得到了指導(dǎo)老師的熱情鼓勵(lì)和悉心指導(dǎo),凝聚了導(dǎo)師許多心血。他淵博的學(xué)識(shí),嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。在老師的精心指導(dǎo)和幫助下,開(kāi)闊了視野,分析和解決問(wèn)題等方面的能力有了長(zhǎng)足的進(jìn)步。</p><p&
60、gt; 此次畢業(yè)設(shè)計(jì)很好的運(yùn)用了我三年來(lái)所學(xué)的專(zhuān)業(yè)知識(shí)和基本技能,讓我體會(huì)了學(xué)以致用的道理,真真的感受到了無(wú)論我們學(xué)什么,無(wú)論它是否現(xiàn)在對(duì)我們有幫助,但它終究會(huì)有一天它都會(huì)成為我們前進(jìn)的力量,它就像一支無(wú)形的手在你的背后推動(dòng)著你前進(jìn)。更是讓我深深的體會(huì)到理論聯(lián)系實(shí)際的復(fù)雜,其實(shí)我們平時(shí)學(xué)習(xí)理論知識(shí)時(shí),老師要求我們聯(lián)系實(shí)際去想一想,但大多數(shù)人都不會(huì)去思考。經(jīng)過(guò)這次畢業(yè)設(shè)計(jì)后,讓我學(xué)會(huì)了更加全面性的考慮問(wèn)題、分析問(wèn)題、解決問(wèn)題,讓我們?cè)谶@
61、個(gè)過(guò)程中學(xué)到更多的東西。</p><p> 感謝大學(xué)期間授我業(yè)、解我惑的全體老師。沒(méi)有你們的諄諄教導(dǎo),我就不可能具備扎實(shí)的道路與橋梁工程的專(zhuān)業(yè)知識(shí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 樊明龍、任麗靜.《單片機(jī)原理與應(yīng)用》.化學(xué)工業(yè)出版社,2001</p><p> [2] 謝嘉
62、奎.《電子線(xiàn)路》.高等教育出版社,2002</p><p> [3] 馬家辰、孫玉德.《MCS-51單片機(jī)原理及接口技術(shù)》. </p><p> 哈爾濱工業(yè)大學(xué)出版社,2001[4] 李華.《MCS-51單片機(jī)接口技術(shù)與運(yùn)用》.</p><p> 北京航天航空大學(xué)出版社,2003[5] 胡漢才.《單片機(jī)接口技術(shù)與運(yùn)用》.清華大學(xué)出版社,2001</p
63、><p> [6] 何立民.《單片機(jī)高級(jí)教程》.北京航空航天大學(xué)出版社,2001 </p><p> [7] 趙曉安.《MCS-51單片機(jī)原理及應(yīng)用》.天津大學(xué)出版社,2001.3 </p><p> [8] 李廣第.《單片機(jī)基礎(chǔ)》.北京航空航天大學(xué)出版社,1999 </p><p> [9] 徐惠民、安德寧.《單片微型計(jì)算機(jī)原理接口與應(yīng)
64、用》. </p><p> 北京郵電大學(xué)出版社,1996 </p><p> [10] 夏繼強(qiáng).《單片機(jī)實(shí)驗(yàn)與實(shí)踐教程》.北京航空航天大學(xué)出版社,2001 </p><p><b> 附 錄</b></p><p><b> 附錄1 程序清單</b></p><p>
65、; OUT BIT P2.0 ;定義音頻輸出端口,p2.0</p><p> N EQU 3 ;歌曲總數(shù)</p><p> OUT_NUM EQU P1 ;數(shù)碼管顯視當(dāng)前所放歌曲曲數(shù)</p><p><b> ORG 0000H</b></p><p
66、><b> AJMP MAIN</b></p><p><b> ORG 0003H</b></p><p> AJMP LAST_SONG ;外部中斷0用于接上一曲歌按鍵</p><p> ORG 000BH </p><p> AJMP F_T0
67、 ;定時(shí)器0用于定時(shí),作音符發(fā)生器用</p><p><b> ORG 0013H</b></p><p> q4: AJMP NEXT_SONG ;外部中斷1接下一曲歌按鍵</p><p><b> ORG 001BH</b></p><p> AJMP START_PAU
68、SE ;定時(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 ;DPRT指向每首歌曲的入口地址的地址。</p><
69、;p> MOV R0,#30H ;R0中存入數(shù)據(jù)30H,這里在以30H開(kāi)始的單元存放每首歌曲的入口地址,其中30H,31H存放歌曲的節(jié)拍入口地址,32H,33H存放歌曲音符入口地址,每首歌占用四個(gè)存儲(chǔ)存單元。</p><p> MOV R5,#00H ;R5中存放表TABLE中正在執(zhí)行操作的序號(hào)</p><p> MOV R6,#1 ;R
70、6存放正在設(shè)置入口信息的歌曲數(shù)</p><p> SET_TAB: MOV A,R5;設(shè)置每首歌曲的入口信息,存放在以30H開(kāi)始的存儲(chǔ)單元中。</p><p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p><b> INC R5</b>
71、</p><p><b> INC R0</b></p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p><b> IN
72、C R5</b></p><p><b> INC R0</b></p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p><p>
73、;<b> INC R0</b></p><p><b> INC R5</b></p><p><b> MOV A,R5</b></p><p> MOVC A,@A+DPTR</p><p><b> MOV @R0,A</b></p
74、><p><b> INC R0</b></p><p><b> INC R5</b></p><p> INC R6 ;設(shè)置完一首歌曲后,歌曲數(shù)加一</p><p> CJNE R6,#N+1,SET_TAB是否設(shè)置完,沒(méi)有便繼續(xù),否則進(jìn)行下面
75、的操作</p><p> ;***********************************對(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&g
76、t; MOV TL1,#0FFH;計(jì)數(shù)器計(jì)數(shù)為1,相當(dāng)于一外部中斷。</p><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
77、> SETB PT1;計(jì)數(shù)器1為高優(yōu)先級(jí)</p><p> SETB IT0 ;外部中斷0為跳沿觸發(fā)</p><p> SETB PX0 ;高優(yōu)先級(jí)</p><p> SETB IT1 ;外部中斷1為跳沿觸發(fā)</p><
78、;p> SETB PX1 ;高優(yōu)先級(jí)</p><p> SETB EX1 ;允許外部中斷1中斷</p><p> SETB EX0 ;允許外部中斷定0中斷</p><p> SETB EA ;開(kāi)中斷總開(kāi)關(guān)</p>
79、<p> SETB TR1 ;定時(shí)器1開(kāi)始工作,作中斷用</p><p> SETB OUT ;音頻輸出端口初始化</p><p> ;*********************************** ;設(shè)置結(jié)束</p><p> CLR F0 ;
80、設(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><b> MOV A,22H</b></p><p&g
81、t; MOVC A,@A+DPTR</p><p> MOV OUT_NUM,A</p><p> MOV R7,#00H ;R7中存放歌曲總信息的入口地址 </p><p> START0:MOV R4,#00H ;R4存放當(dāng)前正在播放歌曲的第幾個(gè)節(jié)拍數(shù)</p><p> MOV
82、 R0,#30H ;30H開(kāi)始的單元中存放歌曲的入口信息</p><p> MOV A,R7 ;將歌曲的節(jié)拍表的入口地址送到DPTR</p><p><b> ADD A,R0</b></p><p><b> MOV R0,A</b></p><p>
83、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>
84、; INC R4</b></p><p> MOVC A,@A+DPTR ;取出第一節(jié)拍數(shù),其實(shí)第一個(gè)節(jié)拍不是歌曲的第一個(gè)節(jié)拍,而是表示幾分音符</p><p> ;****************************************************</p><p> MOV 26H,A;將取出
85、的音符數(shù)+節(jié)拍數(shù)保存在職26H單元中</p><p> NEXT: MOV R0,#30H ;開(kāi)始取出歌曲的第一個(gè)數(shù)據(jù)</p><p><b> MOV A,R7</b></p><p><b> ADD A,R0</b></p><p><b> MO
86、V 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> MOV A,R4
87、</b></p><p><b> INC R4</b></p><p> MOVC A,@A+DPTR ;放在A中</p><p> ;**************************************************** </p><p> JZ E
88、ND0 ;若為0,則表示為休止符,不唱,本次音符不唱, </p><p> MOV R1,A ;不為0,取出節(jié)拍數(shù)</p><p> ANL A,#0FH</p><p><b> MOV R2,A</b></p><p><b> MOV A
89、,R1</b></p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p> JNZ SING ;音符不為0,唱</p><p> CLR TR0 ;為0,不唱,關(guān)頻率發(fā)生器<
90、/p><p> SJMP SING1 </p><p> SING: DEC A ;開(kāi)始唱,進(jìn)行相應(yīng)的數(shù)據(jù)處理</p><p><b> MOV R3,A</b></p><p><b> RL A</b&g
91、t;</p><p> MOV DPH,@R0</p><p><b> INC R0</b></p><p> MOV DPL,@R0</p><p><b> INC R0</b></p><p> MOVC A,@A+DPTR</p><
92、p><b> MOV 21H,A</b></p><p><b> MOV TH0,A</b></p><p><b> MOV A,R3</b></p><p><b> RL A</b></p><p><b> INC A&
93、lt;/b></p><p> MOVC A,@A+DPTR</p><p><b> MOV 20H,A</b></p><p><b> MOV TL0,A</b></p><p> SETB TR0 ;開(kāi)唱</p><p&
94、gt; SING1:LCALL DELAY ;每個(gè)音符唱多久</p><p> JB F0,FOR ;是否暫停,</p><p> AJMP NEXT ;沒(méi)有暫停,繼續(xù)</p><p> FOR: CLR TR0 ;暫停,不唱</p><
95、;p> JB F0,$ ;等待播放</p><p> AJMP NEXT ;開(kāi)始播放</p><p> END0: CLR TR0 ;不唱 </p><p> MOV A,22H ;唱完處
96、理</p><p> CJNE A,#N,WW ;是不是全部歌曲都唱完</p><p> MOV 22H,#01H ;全部唱完,則從第一首開(kāi)始再唱</p><p> MOV R7,#00H</p><p> MOV OUT_NUM,#06H ;數(shù)碼管
97、顯視第一首歌曲編號(hào) </p><p><b> AJMP WWW</b></p><p> WW: MOV A,R7 ;沒(méi)有全部唱完,唱下一首,歌曲的入口信息調(diào)整</p><p><b> ADD A,#4</b></p><p>
98、<b> MOV R7,A</b></p><p><b> INC 22H</b></p><p><b> CLR EA</b></p><p><b> PUSH DPH</b></p><p> PUSH DPL </p>
99、<p><b> 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>
100、 POP DPL</b></p><p><b> POP DPH</b></p><p> WWW: SETB EA</p><p> AJMP START0 ;開(kāi)始下一首的演唱</p><p> F_T0: MOV TH0,21H
101、 ;定時(shí)器0置初值</p><p> MOV TL0,20H</p><p> CPL OUT ;頻率產(chǎn)生</p><p><b> RETI</b></p><p> NEXT_SONG: PUSH ACC ;下一曲中斷
102、程序處理,保護(hù)現(xiàn)場(chǎng)</p><p><b> PUSH DPH</b></p><p> PUSH DPL </p><p> CLR EA ;關(guān)中斷</p><p> MOV A,22H</p><p> CJNE A,#N,Q
103、 ;是最后一首嗎?</p><p> MOV R7,#00H ;是最后一首,則R7指向第一首,演唱第一首</p><p> MOV 22H,#01H</p><p> AJMP BACK </p><p> Q:
104、 INC 22H ;不是最后一首,唱下一首,R7內(nèi)容加4,歌曲數(shù)加1</p><p><b> MOV A,R7</b></p><p><b> ADD A,#4</b></p><p><b> MOV R7,A</b></p><p> BACK:
105、 MOV R4,#00H ;數(shù)碼管顯視相應(yīng)的歌曲編號(hào)</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</p><p>
106、 ;********************************************</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 </p><p><b> MOV A,R7
107、</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> MOV D
108、PL,@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</p><p> MOV 26H
109、,A ;結(jié)果存入26H單元中</p><p><b> DEC R4</b></p><p> MOV R0,B ;恢復(fù)R0中的內(nèi)容</p><p> ;******************************************** </p><
110、;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> RETI
111、 ;中斷返回</p><p> LAST_SONG: PUSH ACC ;上一曲中斷程序處理開(kāi)始,保護(hù)現(xiàn)場(chǎng) </p><p><b> PUSH DPH</b></p><p> PUSH DPL </p><p> CLR
112、 EA ;關(guān)中斷</p><p> MOV A,22H ;曲目數(shù)送A</p><p> CJNE A,#1,QQ ;是否是第一首</p><p> MOV 22H,#N ;是第一首歌曲</p><p> MOV B,#4
113、 ;將R7指向最后一首歌曲</p><p> MOV A,#N-1</p><p><b> MUL AB</b></p><p><b> MOV R7,A</b></p><p> AJMP BACK2 ;處理結(jié)束</p><p>
114、 QQ: DEC 22H </p><p> MOV A,R7 ;R7減4</p><p><b> SUBB A,#4</b></p><p><b> MOV R7,A</b></p><p> BACK2: MOV R4,#00H </p>
115、;<p><b> 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> ;**********************
116、**********************</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 </p><p><b> MOV A,R7</b></p>
117、;<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> MOV DPL,@R0</p>&
118、lt;p><b> INC R0</b></p><p><b> MOV A,R4</b></p><p><b> INC R4</b></p><p> MOVC A,@A+DPTR</p><p> MOV 26H,A ;結(jié)
119、果存入26H單元中</p><p><b> DEC R4</b></p><p> MOV R0,B ;R0中的內(nèi)容恢復(fù)</p><p> ;******************************************** </p><p> POP DPL
120、 ;恢復(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> RETI ;中斷返回</p>&
121、lt;p> START_PAUSE:CPL F0 ;開(kāi)始/暫停中斷處理程序,將標(biāo)置位取反</p><p> JB F0,RETURN ;為1返回</p><p> SETB TR0 ;為0則播放</p><p> RETURN: RETI ;中斷返回</
122、p><p> DELAY: MOV 27H,26H ;音符演奏時(shí)間控制</p><p> D2: MOV 28H,#125</p><p> D3: MOV 29H,#248 </p><p> DJNZ 29H,$</p><p> DJNZ 28H,D3 <
123、/p><p> DJNZ 27H,D2 </p><p> DJNZ R2,DELAY</p><p><b> RET</b></p><p><b> OUT_TAB:</b></p><p> DB 3FH,06H,5BH,4FH,66H,6DH,7DH,0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)音樂(lè)發(fā)生器畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的音樂(lè)發(fā)生器設(shè)計(jì)
- 單片機(jī)函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的信號(hào)發(fā)生器
- 單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)函數(shù)發(fā)生器系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)函數(shù)發(fā)生器系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的信號(hào)發(fā)生器設(shè)計(jì)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--基于單片機(jī)的函數(shù)信號(hào)發(fā)生器
- 單片機(jī)多功能函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----基于單片機(jī)的函數(shù)信號(hào)發(fā)生器
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的函數(shù)信號(hào)發(fā)生器畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的方波信號(hào)發(fā)生器
- 基于單片機(jī)的波形發(fā)生器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的波形發(fā)生器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的波形發(fā)生器的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的受控正弦信號(hào)發(fā)生器設(shè)計(jì)說(shuō)明
評(píng)論
0/150
提交評(píng)論