單片機(jī)音樂播放器畢業(yè)論文_第1頁(yè)
單片機(jī)音樂播放器畢業(yè)論文_第2頁(yè)
單片機(jī)音樂播放器畢業(yè)論文_第3頁(yè)
單片機(jī)音樂播放器畢業(yè)論文_第4頁(yè)
單片機(jī)音樂播放器畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩33頁(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、目 錄 摘 要.1 前 言.2 第 1 章 設(shè)計(jì)綜述 .3 1.1 單片機(jī)產(chǎn)生音調(diào)的基本原理 .3 1.2 開發(fā)環(huán)境簡(jiǎn)介 .3 1.3 設(shè)計(jì)內(nèi)容與目標(biāo) .4 第 2 章 音樂播放器的功能與組成.5 2.1 音樂播放器的功能 .5 2.2 音樂播放器的組成 .5 第 3 章 系統(tǒng)總體設(shè)計(jì)與關(guān)鍵技術(shù).7 3.1 系統(tǒng)總體設(shè)計(jì) .7 音樂播放器的工作原理.7 音階對(duì)應(yīng)頻率計(jì)數(shù)初值的計(jì)算.8 樂曲節(jié)拍的計(jì)算.8 樂譜在程序中的編制.9 3.2 系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù) .9 第 4 章音樂播放器的硬件設(shè)計(jì).10 4.1 單片機(jī)最小系統(tǒng) .10 單片機(jī)復(fù)位電路.10 單片機(jī)晶振電路.10 4.2 鍵盤接口電

2、路的設(shè)計(jì).11 4.3 LED 顯示接口電路的設(shè)計(jì) .12 4.4 揚(yáng)聲器控制電路的設(shè)計(jì).13 4.5 硬件原理圖 .13 第 5 章 音樂播放器的軟件設(shè)計(jì).15 5.1 主控軟件的設(shè)計(jì)與流程圖 .15 5.2 定時(shí)中斷服務(wù)子程序的設(shè)計(jì)與流程圖 .16 5.3 鍵盤控制模塊的設(shè)計(jì)與流程圖 .17 5.4 演奏樂曲模塊的設(shè)計(jì)與流程圖 .22 第 6 章 系統(tǒng)的實(shí)現(xiàn)與調(diào)試.25 6.1 硬件系統(tǒng)的焊接與調(diào)試 .25 6.2 軟件調(diào)試 .26 測(cè)試 LED 顯示模塊.26 測(cè)試鍵盤控制模塊.27 測(cè)試 P3.0 口輸出.28 6.3 調(diào)試中遇到的問題及解決 .28 第 7 章 結(jié) 論.30 參 考

3、文 獻(xiàn).34 致 謝.35 摘摘 要要 隨著科技的不斷發(fā)展,目前市場(chǎng)上出現(xiàn)了許許多多的音樂播放器,人們對(duì)播放器的 需求也越來(lái)越廣泛,對(duì)其要求也越來(lái)越高。 本文分析了基于單片機(jī)的音樂播放器的工作原理,詳細(xì)介紹了音樂播放器的功能及 其硬件設(shè)計(jì)和軟件設(shè)計(jì)的方法,給出了基于 MCS-51 單片機(jī)的音樂播放器的具體實(shí)現(xiàn)方案 并重點(diǎn)講述了其硬件實(shí)現(xiàn)與軟件編寫,實(shí)現(xiàn)了單片機(jī)音樂播放器對(duì)音樂的演奏。 關(guān)鍵詞關(guān)鍵詞 : 音樂播放器、MCS-51 單片機(jī)、LED 顯示器 Abstract With the continuous development of science and technology, the

4、market appeared many music players, the demand of players has become increasingly extensive and increasing their demands. This paper analyzes the SCM-based music players working principle, described in detail the function of music player and its hardware design and software design methods, given MCS

5、-51 single- chip based on the music player to achieve the specific program and focus on the achievement of its hardware and software development, to achieve a single chip music player for playing music. Keywords : music player、MCS-51 Single-Chip Microcomputer、LED 前前 言言 幾千年來(lái),各種樂器的發(fā)聲無(wú)一不是依靠琴弦、簧片、哨片引起管柱

6、振動(dòng)而作為聲 源的。隨著現(xiàn)代電子工業(yè)技術(shù)的飛速發(fā)展,一種用新的聲源來(lái)制造音響的新型樂器脫穎 而出,這就是目前人們熟知的電子音樂播放器1。目前市場(chǎng)上的音樂播放器形形色色, 例如大家所熟悉的MP3,隨著電子技術(shù)的不斷發(fā)展,音樂播放器的發(fā)展也會(huì)進(jìn)一步發(fā)展。 目前單片機(jī)的應(yīng)用滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī) 的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工 業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能 IC 卡,民用豪華轎車的安全 保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這 些都離不開單片機(jī)。更不用說自動(dòng)控制

7、領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了2。 本課題即是在這種背景下,對(duì)基于 MCS51 單片機(jī)的音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了 硬件及軟件的設(shè)計(jì),并給出了一套完整的解決方案,實(shí)現(xiàn)了單片機(jī)音樂播放器對(duì)音樂的 演奏。 第第1 1章章 設(shè)設(shè)計(jì)計(jì)綜綜述述 1.11.1 單片機(jī)產(chǎn)生音調(diào)的基本原理單片機(jī)產(chǎn)生音調(diào)的基本原理 音樂播放器是利用單片機(jī)產(chǎn)生樂曲音符,再把樂曲音符翻譯成計(jì)算機(jī)音樂語(yǔ)言,用 單片機(jī)進(jìn)行信息處理,再通過蜂鳴器或喇叭放出音樂。 音樂的產(chǎn)生主要是通過單片機(jī)的 I/O 口輸出高低不同的脈沖信號(hào)來(lái)控制蜂鳴器發(fā)音。 要想產(chǎn)生音頻脈沖信號(hào),需要算出某一音頻的周期(1/頻率),然后將此周期除以 2,即為 半

8、周期的時(shí)間。利用單片機(jī)定時(shí)器計(jì)時(shí)這個(gè)半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖 的 I/O 口反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì) I/O 口反相,這樣就能在此 I/O 口上得 到此頻率的脈沖。 通常,利用單片機(jī)的內(nèi)部定時(shí)器 0,工作在方式 1 下,改變計(jì)數(shù)初值 TH0 和 TL0 來(lái)產(chǎn) 生不同頻率。 對(duì)于音樂的節(jié)拍,每個(gè)音符使用 1 個(gè)字節(jié),字節(jié)的高 4 位代表音符的高低,低 4 位 代表音符的節(jié)拍。如果 1 拍為 0.4S,1/4 拍為 0.1S,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的 時(shí)間。假設(shè) 1/4 拍為 1DELAY,那么 1 拍應(yīng)為 4DELAY,以此類推。所以只要求得 1/4 拍的 DELA

9、Y,其余的節(jié)拍就是它的倍數(shù)。 總而言之,一首樂曲是由音階和節(jié)拍兩大要素構(gòu)成。一首樂曲演奏的原理是:不同 音階分別對(duì)應(yīng)不同的頻率,發(fā)出不同的音調(diào),而節(jié)拍則控制發(fā)出音調(diào)時(shí)間的長(zhǎng)短;若將 樂曲的音調(diào)連續(xù)發(fā)出,并使其按相應(yīng)的節(jié)拍變化,即可演奏一首樂曲。根據(jù)這一特點(diǎn), 我們采用單片機(jī)輔以相應(yīng)的接口來(lái)設(shè)計(jì)音樂播放器3。 1.21.2 開發(fā)環(huán)境簡(jiǎn)介開發(fā)環(huán)境簡(jiǎn)介 隨著單片機(jī)的不斷發(fā)展,以C為主流的單片機(jī)高級(jí)語(yǔ)言也不斷被更多的單片機(jī)愛好者 和工程師所喜愛。使用C語(yǔ)言肯定要使用到C編譯器,以便把寫好的C程序編譯為機(jī)器碼, 這樣單片機(jī)才能執(zhí)行編寫好的程序。KEIL uVISION2是眾多單片機(jī)應(yīng)用開發(fā)軟件中優(yōu)秀的

10、軟件之一,它支持眾多不同公司的MCS-51架構(gòu)的芯片,它集編輯,編譯,仿真等于一體, 同時(shí)還支持,PLM,匯編和C 語(yǔ)言的程序設(shè)計(jì),它的界面和常用的微軟VC+的界面相似, 界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能4。 本系統(tǒng)采用的開發(fā)環(huán)境為 KEIL uVISION2,軟件開發(fā)環(huán)境主界面見圖 1-1。 圖 1-1 KEIL uVISION2 集成開發(fā)環(huán)境主界面 1.31.3 設(shè)計(jì)內(nèi)容與目標(biāo)設(shè)計(jì)內(nèi)容與目標(biāo) 本設(shè)計(jì)以 AT89C51 單片機(jī)為核心。通過對(duì)其定時(shí)器的設(shè)定來(lái)實(shí)現(xiàn)音樂的播放,通過 對(duì)鍵盤的設(shè)置可以實(shí)現(xiàn)人機(jī)對(duì)話,借助鍵盤可以向計(jì)算機(jī)系統(tǒng)輸入程序,置數(shù)、送操作 命令、控制

11、程序的執(zhí)行走向等,并最終通過 LED 顯示器顯示出播放的樂曲。 重點(diǎn)研究?jī)?nèi)容有: 單片機(jī)最小系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 鍵盤電路的設(shè)計(jì)與控制 揚(yáng)聲器控制電路的設(shè)計(jì)與實(shí)現(xiàn) LED 顯示器的驅(qū)動(dòng)及顯示 定時(shí)初值的計(jì)算 軟件模塊的設(shè)計(jì)與編寫 第第2 2章章 音樂播放器的功能與組成音樂播放器的功能與組成 2.12.1 音樂播放器的功能音樂播放器的功能 基于單片機(jī)的定時(shí)和控制裝置在許多行業(yè)中有著廣泛的應(yīng)用,而音樂播放器是 其應(yīng)用之一。在基于單片機(jī)的音樂播放器電路中,除了基本的單片機(jī)系統(tǒng)和外圍電 路外,還需要外部的控制和顯示裝置。在本設(shè)計(jì)中,輸入裝置是按鍵開關(guān),由于控 制音樂播放器的運(yùn)行模式,顯示裝置是 LED 七

12、段數(shù)碼管5。 此次設(shè)計(jì)的音樂播放器要求具有以下功能: 音樂播放器按照從頭到尾的順序自動(dòng)播放預(yù)先設(shè)定的 14 共 4 首樂曲,全部樂曲 播放完畢則停止。 音樂播放器按照從頭到尾的順序自動(dòng)循環(huán)播放預(yù)先設(shè)定的全部樂曲。 選定某一樂曲,隨即輸入選定樂曲的序列號(hào)(14),即按下 14 數(shù)字鍵之一,音 樂播放器對(duì)選定的某一樂曲開始循環(huán)播放。 選定某一樂曲,隨即輸入選定樂曲的序列號(hào)(14),即按下 14 數(shù)字鍵之一,音 樂播放器就從選定的某一樂曲開始播放,按照順序自動(dòng)播放到最后一首樂曲,樂曲播放 完畢則停止。 當(dāng)用戶按下暫停鍵時(shí),音樂播放器打斷正在播放的某一樂曲,用戶再次按下暫停 鍵時(shí),該樂曲繼續(xù)播放。 當(dāng)

13、用戶按下復(fù)位鍵時(shí),音樂播放器終止正在播放的某一樂曲。 2.22.2 音樂播放器的組成音樂播放器的組成 根據(jù)系統(tǒng)音樂播放器的功能要求,一個(gè)完整的音樂播放器電路相當(dāng)于一個(gè)簡(jiǎn)單的單 片機(jī)系統(tǒng),該系統(tǒng)由按鍵開關(guān)、單片機(jī)、LED 顯示電路、揚(yáng)聲器控制電路 4 個(gè)方面構(gòu)成。 51 單片機(jī)。51 單片機(jī)為整個(gè)系統(tǒng)的核心部分,是帶動(dòng)整個(gè)系統(tǒng)工作的重要部件。 鍵盤輸入。鍵盤輸入用來(lái)控制輸入指令,發(fā)出指令至單片機(jī),使單片機(jī)按照指令 工作。 揚(yáng)聲器。揚(yáng)聲器作為輸出部分按照鍵盤給單片機(jī)的指令發(fā)出樂曲。 LED 顯示電路。LED 顯示器也作為輸出部分,按照鍵盤給單片機(jī)的指令,顯示正在 演奏的樂曲。 音樂播放器的系統(tǒng)組成

14、框圖如圖 2-1 所示: 圖 2-1 音樂播放器的系統(tǒng)組成框圖 CPU AT89C51 鍵盤輸入揚(yáng)聲器 LED 顯示電路 第第3 3章章 系統(tǒng)總體設(shè)計(jì)與關(guān)鍵技術(shù)系統(tǒng)總體設(shè)計(jì)與關(guān)鍵技術(shù) 3.13.1 系統(tǒng)總體設(shè)計(jì)系統(tǒng)總體設(shè)計(jì) 根據(jù)系統(tǒng)的功能與組成,進(jìn)行系統(tǒng)分析,系統(tǒng)除 CPU 核心部分外還需要與鍵盤連接 以接收輸入指令,連接 LED 顯示器將要演奏的樂曲序號(hào)顯示出來(lái),通過連接揚(yáng)聲器使其 發(fā)出音樂。系統(tǒng)總體結(jié)構(gòu)如圖 3-1 所示。 圖 3-1 系統(tǒng)總體結(jié)構(gòu)框圖 音樂播放器的工作原理音樂播放器的工作原理 音樂播放器可利用單片機(jī)的定時(shí)器構(gòu)成電子振蕩器來(lái)發(fā)聲。振蕩器是電子樂曲播放 器的聲源,專門用來(lái)制造

15、音響,也稱信號(hào)發(fā)生器,其作用相當(dāng)于常規(guī)樂器的琴弦、簧片、 哨片。振蕩器在音樂播放器的應(yīng)用中有兩個(gè)特點(diǎn),可產(chǎn)生聲音的頻率與不同波形的振蕩。 通過對(duì)單片機(jī)的定時(shí)器設(shè)置不同的定時(shí)初值,可發(fā)出音樂的不同音階,通過調(diào)整振蕩波 形與泛音的分布,可產(chǎn)生和變換各種音色。 在我們所設(shè)計(jì)的音樂播放器中,是通過單片機(jī)的定時(shí)器,產(chǎn)生不同頻率的方波信號(hào), 而沒有調(diào)整振蕩波形,因此音樂播放器發(fā)出的聲音,是矩形波產(chǎn)生的音響,純粹的矩形 波聲音類似于單簧管的音色。 一首樂曲演奏的原理是:一首樂曲是由音階和節(jié)拍兩大要素構(gòu)成,不同音階分別對(duì) 應(yīng)不同的頻率,發(fā)出不同的音調(diào),而節(jié)拍則控制發(fā)出音調(diào)時(shí)間的長(zhǎng)短;若將樂曲的音調(diào) 連續(xù)發(fā)出,

16、并使其按相應(yīng)的節(jié)拍變化,即可演奏一首樂曲。根據(jù)這一特點(diǎn),我們采用單 片機(jī)輔以相應(yīng)的接口來(lái)設(shè)計(jì)音樂播放器。 晶振、復(fù)位電路 單片機(jī) 鍵盤輸入控制 LED 顯示電路 揚(yáng)聲器 音階對(duì)應(yīng)頻率計(jì)數(shù)初值的計(jì)算音階對(duì)應(yīng)頻率計(jì)數(shù)初值的計(jì)算 單片機(jī)的振蕩頻率為fosc12MHz ,通過定時(shí)器 T0 溢出后對(duì) P3.0 口取反產(chǎn)生方波, 故定時(shí)器溢出時(shí)間為 1/2f 。 由: , 則定時(shí)初值為: nosc n ff X 2 112 )2( 1616 2 24 osc n n f X f 以音階“1”為例:f523 Hz,則 T1/f 定時(shí)初值: 6 1616 12 10 226458044 2424 523 os

17、c n n f XFCH f 用同一方法可求出其它音階所對(duì)應(yīng)的頻率定時(shí)初值,將其制表放在程序中,通過查 表向定時(shí)器 T0 裝入所要求的定時(shí)初值,即可產(chǎn)生某一音階所對(duì)應(yīng)的頻率的方波信號(hào)。C 調(diào)的音階及其頻率、在單片機(jī)中的定時(shí)初值對(duì)應(yīng)如下: 音 名 C D E F G A B 簡(jiǎn)譜音階 1 2 3 4 5 6 7 頻率/ Hz 262 294 330 349 392 440 494 定時(shí)初值 63628 63835 64021 64103 64260 64400 64524 表中序號(hào) 1 2 3 4 5 6 7 音 名 C D E F G A B 簡(jiǎn)譜音階 1 2 3 4 5 6 7 頻率/ Hz

18、 523 587 659 698 784 880 988 定時(shí)初值(Hex) 64580 64684 64777 64820 64898 64968 65030 表中序號(hào) 8 9 10 11 12 13 14 音 名 C D E F G A B 簡(jiǎn)譜音階 1 2 3 4 5 6 7 頻率/ Hz 1046 1175 1318 1397 1568 1760 1967 定時(shí)初值(Hex) 65058 65110 65157 65178 65217 65252 65283 表中序號(hào) 15 16 17 18 19 20 21 樂曲節(jié)拍的計(jì)算樂曲節(jié)拍的計(jì)算 取樂曲節(jié)拍的長(zhǎng)度為 0.4s ,即 1 拍0.

19、4s ,由定時(shí)器 T1 控制延時(shí)。設(shè)置定時(shí)器 T1 的定時(shí)中斷 T50ms ,采用定時(shí)方式 1。 由: ,則定時(shí)初值 X3C0BHT f X osc 12 )2( 16 因此 1 拍0.4s8*50ms,即通過定時(shí)器 T1 的定時(shí)中斷 8 次,產(chǎn)生 8*50ms 的定時(shí), 就可以滿足 1 節(jié)拍的定時(shí)要求。以此類推,通過定時(shí)中斷 N 次,可產(chǎn)生 N*50ms 的定時(shí)以 滿足 1/4 拍、1/2 拍、1 拍、2 拍等不同節(jié)拍的定時(shí)要求。由此可知,節(jié)拍值只能是整數(shù) 值。不同節(jié)拍在單片機(jī)中的中斷次數(shù)(音長(zhǎng))對(duì)應(yīng)如下: 節(jié) 拍 1/8 1/4 1/2 3/4 1 3/2 2 3 4 時(shí)間長(zhǎng)度 0.05s

20、 0.1s 0.2s 0.3s 0.4s 0.6s 0.8s 1.2s 1.6s 音長(zhǎng)(Dec) 1 2 4 6 8 12 16 24 32 音長(zhǎng)(Hex) 01H 02H 04H 06H 08H 0CH 10H 18H 20H 樂譜在程序中的編制樂譜在程序中的編制 將樂譜轉(zhuǎn)換為代碼,應(yīng)包含樂曲的總長(zhǎng)度、音階、音長(zhǎng)(節(jié)拍)等信息。 具體設(shè)計(jì)如下: (1) 將音階代碼組成一個(gè)字節(jié),節(jié)拍代碼組成一個(gè)字節(jié),按照:音階代碼,節(jié)拍代 碼,音階代碼,節(jié)拍代碼 的順序,將一個(gè)樂譜轉(zhuǎn)換為一定長(zhǎng)度的代碼數(shù)據(jù)表。 (2) 在程序執(zhí)行時(shí)順序查此表,取出音階代碼,并根據(jù)音階代碼查頻率表,以得到 該音階對(duì)應(yīng)的頻率,隨后

21、將對(duì)應(yīng)的定時(shí)初值送定時(shí)器 T0,使定時(shí)器 T0 產(chǎn)生該音階對(duì)應(yīng)的 頻率,并通過 P3.0 口輸出,驅(qū)動(dòng)外接揚(yáng)聲器發(fā)聲。 (3) 取出節(jié)拍代碼 N,由定時(shí)器 T1 控制延時(shí),通過定時(shí)中斷 N 次,產(chǎn)生 N*50ms 的定 時(shí)。 T0、T1 啟動(dòng)后,根據(jù)樂譜表,某一個(gè)音階發(fā)出相應(yīng)頻率的聲音,并持續(xù)相應(yīng)的節(jié)拍, 連續(xù)起來(lái),我們就可以聽到一個(gè)完整樂曲的演奏。 3.23.2 系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù)系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù) 基于單片機(jī)的音樂播放器在設(shè)計(jì)時(shí)需要解決以下 4 個(gè)方面的問題: 有關(guān)單片機(jī)中定時(shí)器的使用。 利用鍵盤控制實(shí)現(xiàn)對(duì)單片機(jī)的控制。 LED 顯示模塊的驅(qū)動(dòng)和編制。 揚(yáng)聲器控制電路,用于發(fā)出不同頻率

22、的音調(diào)。 第第4 4章章音樂播放器的硬件設(shè)計(jì)音樂播放器的硬件設(shè)計(jì) 一個(gè)完整的音樂播放器電路相當(dāng)于一個(gè)簡(jiǎn)單的單片機(jī)系統(tǒng),該系統(tǒng)由按鍵開關(guān)、 單片機(jī)、晶振和復(fù)位電路、LED 顯示電路、揚(yáng)聲器控制電路 5 個(gè)方面構(gòu)成。其中, 除了單片機(jī)是集成的 IC 芯片,而其他 4 個(gè)部分則需根據(jù)應(yīng)用要求而設(shè)計(jì)。 4.14.1 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng) 單片機(jī)芯片,配以必要的外部器件就能構(gòu)成單片機(jī)最小系統(tǒng)。單片機(jī)具有較強(qiáng)的外 部擴(kuò)展、通信能力,能方便地?cái)U(kuò)展至應(yīng)用系統(tǒng)所要求的規(guī)模。 當(dāng)使用帶 ROM 或 EPROM 的 MCS51 系列單片機(jī)時(shí),只要一個(gè)芯片即可構(gòu)成一個(gè)單片機(jī) 的最小系統(tǒng)。選用 80C51 或

23、8051 或 AT89C51 單片機(jī)作為主機(jī),它們都具有 4K 片內(nèi) ROM,128 字節(jié)片內(nèi) RAM,片外 ROM 尋址范圍達(dá) 64K,片外 RAM 尋址范圍達(dá) 64K,2 個(gè) 16 位 計(jì)數(shù)器,5 個(gè)中斷源,4 個(gè)并行口,1 個(gè)串行口。簡(jiǎn)易自動(dòng)樂曲播放器采用單片機(jī)最小系 統(tǒng)足以滿足系統(tǒng)設(shè)計(jì)要求,同時(shí)要設(shè)計(jì)單片機(jī)最小系統(tǒng)的晶振和復(fù)位電路。 單片機(jī)復(fù)位電路單片機(jī)復(fù)位電路 復(fù)位是單片機(jī)的初始化操作,其作用是使 CPU 中的各個(gè)部件都處于一個(gè)確定的 初始狀態(tài),并從這個(gè)狀態(tài)開始工作。當(dāng) 8051 的 ALE 及 兩腳輸出高電平,RST 引腳 高電平時(shí),單片機(jī)復(fù)位。 8051 單片機(jī)的復(fù)位電路有上電復(fù)

24、位和手動(dòng)按鈕復(fù)位兩種形式,RST/VPD 端的高 電平直接由上電瞬間產(chǎn)生高電平則為上電復(fù)位;若通過按鈕產(chǎn)生高電平復(fù)位信號(hào)稱 為手動(dòng)按鈕復(fù)位。圖 4-1 為兼有上電復(fù)位與按鈕復(fù)位的電路。圖中,上電瞬間 RST 端的電位與 Vcc 相同,隨著電容充電電流的減小,+5V 立即加到了 RST/VPD 端,該 高電平使 8051 復(fù)位。若運(yùn)行過程中,需要程序從頭開始執(zhí)行,這只需按圖 4-1 中 的按鈕即可。按下按鈕則直接把+5V 加到了 RST/VPD 端從而復(fù)位,這稱為手動(dòng)復(fù)位。 在實(shí)際應(yīng)用系統(tǒng)中,有些外圍芯片也需要復(fù)位,如果這些復(fù)位端的復(fù)位電平要求與 單片機(jī)的要求一致,則可以與之相連。 單片機(jī)晶振電

25、路單片機(jī)晶振電路 晶振是給單片機(jī)提供工作信號(hào)脈沖的,這個(gè)脈沖就是單片機(jī)的工作速度。比如 12M 晶 振,單片機(jī)工作速度就是每秒 12M。當(dāng)然,單片機(jī)的工作頻率是有范圍的,不能太大, 一般 24M 就不上去了,不然不穩(wěn)定 。圖 4-2 為晶振電路。 圖 4-1 復(fù)位電路 圖 4-2 晶振電路 4.24.2鍵盤接口電路的設(shè)計(jì)鍵盤接口電路的設(shè)計(jì) 單片機(jī)應(yīng)用系統(tǒng)中的人機(jī)對(duì)話通道是用戶為了對(duì)應(yīng)用系統(tǒng)進(jìn)行干預(yù)以及了解應(yīng)用系 統(tǒng)運(yùn)行狀態(tài)所設(shè)置的通道。主要有鍵盤、顯示器等通道接口。 在單片機(jī)應(yīng)用系統(tǒng)中,為了控制系統(tǒng)的工作狀態(tài)以及向系統(tǒng)中輸入數(shù)據(jù),應(yīng)用系統(tǒng) 設(shè)置鍵盤,用于系統(tǒng)復(fù)位,功能轉(zhuǎn)換以及數(shù)字輸入。鍵盤的設(shè)

26、置可以實(shí)現(xiàn)人機(jī)對(duì)話,借 助鍵盤可以向計(jì)算機(jī)系統(tǒng)輸入程序、置數(shù)、送操作命令、控制程序的執(zhí)行走向等。 在本次設(shè)計(jì)中鍵盤由 P1 口輸入, 按鍵設(shè)置:14 四個(gè)數(shù)字鍵,AF 六個(gè)功能鍵。 數(shù)字鍵(14): 用于輸入 14 共 4 首樂曲的序列號(hào)。 功能鍵(AF): A 鍵:樂曲從 14 按順序播放 B 鍵:樂曲從 14 循環(huán)播放 C 鍵:循環(huán)播放某一樂曲 D 鍵:從某一樂曲開始播放至最后一首樂曲 E 鍵:暫停/播放 F 鍵:停止播放 各功能鍵(AF)的意義與操作: A 鍵:樂曲從 14 按順序播放。 當(dāng)用戶按下 A 鍵后,LED 顯示器清屏,簡(jiǎn)易自動(dòng)樂曲播放器按照從頭到尾的順序自動(dòng) 播放預(yù)先設(shè)定的

27、14 共 4 首樂曲,全部樂曲播放完畢則停止。 B 鍵:樂曲從 14 循環(huán)播放。 當(dāng)用戶按下 B 鍵后,LED 顯示器清屏,簡(jiǎn)易自動(dòng)樂曲播放器按照從頭到尾的順序自動(dòng) 循環(huán)播放預(yù)先設(shè)定的全部樂曲。 C 鍵:循環(huán)播放某一樂曲 當(dāng)用戶按下 C 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(hào)(14),即按下 14 數(shù)字鍵之一,簡(jiǎn)易自動(dòng)樂曲播放器對(duì)選定的某一樂曲循環(huán)播放。 D 鍵:從某一樂曲開始播放至最后一首樂曲 當(dāng)用戶按下 D 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(hào)(14),即按下 14 數(shù)字鍵之一,簡(jiǎn)易自動(dòng)樂曲播放器就從選定的某一樂曲開始播放,直到樂曲播放完 畢則停止。 E 鍵:暫停/播放。

28、 當(dāng)用戶按下 E 鍵時(shí),簡(jiǎn)易自動(dòng)樂曲播放器打斷正在播放的某一樂曲,用戶再次按下 E 鍵時(shí),該樂曲繼續(xù)播放。 F 鍵:停止播放。 當(dāng)用戶按下 F 鍵時(shí),簡(jiǎn)易自動(dòng)樂曲播放器終止正在播放的某一樂曲。 本設(shè)計(jì)中按鍵作為輸入部分,由 P1 口輸入。 4.34.3LEDLED 顯示接口電路的設(shè)計(jì)顯示接口電路的設(shè)計(jì) 在單片機(jī)應(yīng)用系統(tǒng)中,使用的顯示器主要有 LED 顯示器(發(fā)光二極管顯示器) 。這種 顯示器成本低廉,配置靈活,與單片機(jī)接口方便。在本系統(tǒng)的設(shè)計(jì)中采用 LED 顯示器。 LED 顯示器由 8 位 LED 數(shù)碼管組成,用于顯示系統(tǒng)在各種不同條件下的狀態(tài)。 用單片機(jī)驅(qū)動(dòng) LED 數(shù)碼管有很多方法,按顯

29、示方式分,有靜態(tài)顯示和動(dòng)態(tài)顯示,按 譯碼方式分為硬件譯碼和軟件譯碼。 靜態(tài)顯示是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后不再控 制 LED,直到下次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用 CPU 時(shí)間 少。 動(dòng)態(tài)顯示要 CPU 時(shí)刻對(duì)顯示器件進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)會(huì)有閃爍,占用的 CPU 時(shí) 間多。 這兩種顯示方式各有利弊:靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的 CPU 時(shí)間,但 每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動(dòng)電路,使用的電路硬件較多;動(dòng)態(tài)顯示雖然閃爍, 占用的 CPU 時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。 在本設(shè)計(jì)中由于顯示部分比較簡(jiǎn)單,所以選用了靜態(tài)顯

30、示方式,LED 顯示器由 74LS373 來(lái)驅(qū)動(dòng),為了擴(kuò)展外部存儲(chǔ)器需一塊 74LS373(地址鎖存器) 。 LED 發(fā)光器件一般常用的有兩類:數(shù)碼管和點(diǎn)陣。常用的數(shù)碼管一般為 8 字型數(shù)碼管, 分為 A、B、C、D、E、F、G、DP 八段,其中 DP 為小數(shù)點(diǎn)。數(shù)碼管常用的有 10 根管腳, 每一段有一根管腳,另外兩根管腳為一個(gè)數(shù)碼管的公共端,兩根之間相連通。 數(shù)碼管從電路上來(lái)看可分為共陰和共陽(yáng)兩種,在本設(shè)計(jì)中用了共陽(yáng)的 LED。 4.44.4揚(yáng)聲器控制電路揚(yáng)聲器控制電路的設(shè)計(jì)的設(shè)計(jì) 揚(yáng)聲器控制電路用于發(fā)出不同頻率的音調(diào),是在 P3.0 口加一反相器再連接到喇叭這 樣就可夠成。 4.54.5

31、 硬件原理圖硬件原理圖 通過以上分析,本次設(shè)計(jì)的音樂播放器的電路原理圖如圖 4-4 所示。 圖 4-4 音樂播放器的原理圖 開機(jī)加電 顯示等待提示狀態(tài) F 讀取鍵盤 是否有鍵輸入? N 是否是A鍵? Y 是否是 B 鍵? N 是否是D鍵? N Y A 鍵子程序 Y B 鍵子程序 關(guān)閉定時(shí)器 T0、T1 置定時(shí)器 T0、T1 工作方式 Y D 鍵子程序 是否是 C 鍵? C 鍵子程序 N Y 第第5 5章章 音樂播放器的軟件設(shè)計(jì)音樂播放器的軟件設(shè)計(jì) 軟件設(shè)計(jì)的重點(diǎn)在于定時(shí)中斷的設(shè)計(jì)、鍵盤控制、顯示的實(shí)現(xiàn)、樂曲的演奏等方面。 5.15.1 主控軟件的設(shè)計(jì)主控軟件的設(shè)計(jì)與流程圖與流程圖 主模塊是系統(tǒng)

32、軟件的框架。本系統(tǒng)的主模塊的程序框圖可用圖 5-1 來(lái)表示。主控模 塊用于控制系統(tǒng)的工作。該模塊先初始化,接著接受到復(fù)位信號(hào)后讀取鍵盤信號(hào),再調(diào) 用各鍵子程序。 圖 5-1 主控模塊的流程圖 主控程序主要源程序代碼如下: START: MOV SP, #60H MOV TMOD, #11H MOV IE, #8AH 中斷入口 產(chǎn)生周期方波 啟動(dòng)定時(shí)器 T0 查頻率表重裝音頻初值 中斷返回 關(guān)閉定時(shí)器 T0 MOV IP, #08H ;T1 中斷優(yōu)先于 T0 中斷 MOV TH1, #3CH MOV TL1, #0BH;以上為系統(tǒng)初始化,T=50ms W1: MOV P2, #10001110B

33、 ;等待提示F LCALLGETKEY CJNE A, #0FFH, W1 MOV A, B CJNE A, #0AH, W2 LCALL KEY_A ;輸入鍵是A,轉(zhuǎn) KEY_A SJMPW1 W2: CJNEA, #0BH, W3 LCALL KEY_B ;輸入鍵是B,轉(zhuǎn) KEY_B W3: CJNEA, #0CH, W4 LCALL KEY_C ;輸入鍵是C,轉(zhuǎn) KEY_C W4: CJNEA, #0DH, W5 LCALL KEY_D SJMPW1 ;輸入鍵是D,轉(zhuǎn) KEY_D 5.25.2 定時(shí)中斷服務(wù)子程序定時(shí)中斷服務(wù)子程序的設(shè)計(jì)與流程圖的設(shè)計(jì)與流程圖 定時(shí)器 T0 用于產(chǎn)生不同頻

34、率的音階,如圖 5-2 為定時(shí)器 T0 的中斷服務(wù)子程序。而 定時(shí)器 T1 控制延時(shí)來(lái)實(shí)現(xiàn)不同的節(jié)拍,定時(shí)時(shí)間設(shè)定為 50ms,圖 5-3 為定時(shí)器 T1 的中 斷服務(wù)子程序。 圖 5-2 定時(shí)器 T0 的中斷服務(wù)流程圖 中斷入口 裝入定時(shí)常數(shù)=3C0BH 啟動(dòng)定時(shí)器 T1 節(jié)拍數(shù)減 1 中斷返回 關(guān)閉定時(shí)器 T1 圖 5-3 定時(shí)器 T1 中斷服務(wù)流程圖 其程序如下所示 INT_T0: CLR TR0 ;定時(shí)器 0 中斷子程序 MOV TL0, 20H MOV TH0, 21H CPL P3.0 SETB TR0 RETI INT_T1: CLR TR1 ;定時(shí)器 1 中斷子程序 CLR T

35、R0 LCALLKEY_E MOV TH1, #3CH MOV TL1, #0BH DJNZ 60H, OUT MOV 60H, #20 OUT:SETBTR1 RETI 5.35.3 鍵盤控制模塊鍵盤控制模塊的設(shè)計(jì)與流程圖的設(shè)計(jì)與流程圖 鍵盤控制模塊分為 6 個(gè)功能鍵和讀 4 個(gè)數(shù)字鍵。下面分別介紹各個(gè)鍵的流程圖和程 序: 入口 系統(tǒng)復(fù)位 系統(tǒng)返回 入口 LED 顯示 E TR0、TR1 取反 系統(tǒng)返回 E鍵被按下? N Y F 鍵子模塊 F 鍵是用于實(shí)現(xiàn)系統(tǒng)復(fù)位 圖 5-4 F 鍵流程圖 E 鍵子模塊 E 鍵用于實(shí)現(xiàn)對(duì)樂曲的暫停和播放 圖 5-5 E 鍵子程序流程圖 按下 E 鍵的主要源程

36、序代碼如下 KEY_E: JBP3.1, L2 ;中斷鍵盤檢測(cè) LCALLDELAY2 ;消除抖動(dòng) JB P3.1, L2 ;如果是高電平就跳到 L2 JNB P3.1, $ ;如果仍然是低電平就執(zhí)行中斷程序 MOV P2, #10000110B ;讓 LED 顯示 E L3: JB P3.1, $ ;檢測(cè)低電平,直到低電平時(shí)才跳出該指令 LCALLDELAY2 JB P3.1, L3 JNB P3.1, $ ;如果再來(lái)一個(gè)高電平才跳出中斷 MOV P2,R5 入口 LED顯示器清屏 調(diào) A鍵子程序 系統(tǒng)返回 L2: SETB TR0 RET A 鍵子模塊 當(dāng)用戶按下 A 鍵后,LED 顯示器

37、清屏,簡(jiǎn)易自動(dòng)樂曲播放器按照從頭到尾的順序自動(dòng) 播放預(yù)先設(shè)定的 14 共 4 首樂曲,全部樂曲播放完畢則停止。 入口 LED 顯示器清屏 調(diào) MUSIC1 MUSIC4 子程序 即按順序自動(dòng)播放 4 首樂 曲,并顯示相應(yīng)的序號(hào) 系統(tǒng)返回 圖 5-6 A 鍵子程序流程圖 A 鍵主要源程序代碼如下: KEY_A: LCALLMUSIC1 ;樂曲我和你 LCALLMUSIC2 ;樂曲萬(wàn)水千山總是情 LCALLMUSIC3 ;樂曲送別 LCALLMUSIC4 ;樂曲北京歡迎您 RET B 鍵子模塊 當(dāng)用戶按下 B 鍵后,LED 顯示器清屏,簡(jiǎn)易自動(dòng)樂曲播放器按照從頭到尾的順序自動(dòng) 循環(huán)播放預(yù)先設(shè)定的全

38、部樂曲。 入口 LED 顯示器清屏 數(shù)字鍵按下? N Y Y 系統(tǒng)返回 是否是4? 是否是3? 是否是2? 是否是1? 樂曲 4 MUSIC 4并顯示 樂曲 3 MUSIC 3并顯示 樂曲 2 MUSIC 2并顯示 樂曲 1 MUSIC 1并顯示 Y Y Y N N N N 圖 5-7 B 鍵子程序流程圖 B 鍵主要源程序代碼如下: KEY_B: ;B 鍵子程序(從 14 循環(huán)播放) T11:LCALLKEY_A SJMPT11 RET D 鍵子模塊 當(dāng)用戶按下 D 鍵后,并選定某一樂曲,隨即輸入選定樂曲的序列號(hào)(14),即按下 14 數(shù)字鍵之一,簡(jiǎn)易自動(dòng)樂曲播放器就從選定的某一樂曲開始播放。

39、 圖 5-8 D 鍵子程序流程圖 D 鍵源程序代碼如下: 入口 系統(tǒng)返回 顯示輸入數(shù)據(jù) 保存輸入數(shù)據(jù) 讀取鍵盤 有鍵輸入? Y 置合法輸入標(biāo)志 FF Y 抖動(dòng)? N N KEY_D: ;D 鍵子程序(從某一樂曲開始播放,播放完后停止) T2: LCALLGETWORD CJNEA, #0FFH, T2 MOV A, B CJNEA, #00H, B1 SJMPC0 B1: CJNEA, #01H, B2 SJMPC1 B2: CJNEA, #02H, C3 SJMPC2 C0: LCALLMUSIC1 ;樂曲我和你 C1: LCALLMUSIC2 ;樂曲 萬(wàn)水千山總是情 C2: LCALLMU

40、SIC3 ;樂曲送別 C3: LCALLMUSIC4 ;樂曲北京歡迎您 RET 讀數(shù)字鍵 讀取正在播放樂曲的序號(hào),讀取鍵盤后消去鍵盤抖動(dòng)接著顯示和保存數(shù)據(jù)。 圖 5-9 GETWORD 子程序(讀數(shù)字鍵 0)流程圖 讀數(shù)字鍵主要源程序代碼如下: GETWORD: ;讀音樂序號(hào)子程序 S1: JB P1.4, S2 ;讀 1 鍵 LCALLDELAY2 JB P1.4, S1 JNB P1.4, $ MOV P2, #11111001B ;顯示 1 MOV R5, #11111001B MOV A, #0FFH MOV B, #00H RET 5.45.4 演奏樂曲模塊演奏樂曲模塊的設(shè)計(jì)與流程圖

41、的設(shè)計(jì)與流程圖 (1) 將音階代碼組成一個(gè)字節(jié),節(jié)拍代碼組成一個(gè)字節(jié),按照:音階代碼,節(jié)拍代 碼,音階代碼,節(jié)拍代碼 的順序,將一個(gè)樂譜轉(zhuǎn)換為一定長(zhǎng)度的代碼數(shù)據(jù)表。 (2) 在程序執(zhí)行時(shí)順序查此表,取出音階代碼,并根據(jù)音階代碼查頻率表,以得到 該音階對(duì)應(yīng)的頻率,隨后將對(duì)應(yīng)的定時(shí)初值送定時(shí)器 T0,使定時(shí)器 T0 產(chǎn)生該音階對(duì)應(yīng)的 頻率,并通過 P3.0 口輸出,驅(qū)動(dòng)外接揚(yáng)聲器發(fā)聲。 (3) 取出節(jié)拍代碼 N,由定時(shí)器 T1 控制延時(shí),通過定時(shí)中斷 N 次,產(chǎn)生 N*50ms 的定 時(shí)。 演奏樂曲的流程圖如圖 5-10 所示。 入口 定時(shí)器 T1 裝入定時(shí)常數(shù) 3C0BH 由音階值查音頻表重裝音

42、頻初值 開中斷 由樂譜表取音階值 由樂譜表取節(jié)拍值 啟動(dòng)定時(shí)器 T0、T1 發(fā)音定時(shí)沒到則等待 返 回 圖 5-10 演奏樂曲的流程圖 演奏樂曲主要源程序代碼如下: MUSIC: MOV R3,#00H;音樂解碼器 NEXT20: MOV A, R3 MOV DPH, 52H MOV DPL, 53H MOVCA, A+DPTR MOV R2, A JZ STOP ANL A, #0FH MOV R1, A MOV A, R2 SWAP A ANL A, #0FH JNZ SING CLR TR0 JMP W11 入口 調(diào) MUSIC 子程序 查樂譜表 TABLE10 關(guān)閉定時(shí)器 T0、T1

43、返 回 樂曲演奏結(jié)束? N Y E 鍵是否按下? E 鍵是否按下? N Y 停止播放樂曲 Y N 具體的在這里任選一首樂曲(我和你)說明樂曲的播放。演奏一首樂曲的流程圖 如圖 5-11 所示。 圖 5-11 一首樂曲的流程圖 樂曲我和你主要源程序如下: MUSIC1: ;第一首我和你 MOV P2, #11111001B;顯示 1 MOV R5, #11111001B MOV 52H, #HIGH TABLE10 MOV 53H, #LOW TABLE10 LCALL MUSIC RET 第第6 6章章 系統(tǒng)的實(shí)現(xiàn)與調(diào)試系統(tǒng)的實(shí)現(xiàn)與調(diào)試 系統(tǒng)焊接與調(diào)試分為硬件的焊接調(diào)試與軟件的調(diào)試。硬件的焊接

44、與調(diào)試側(cè)重于原理 設(shè)計(jì)的正確性驗(yàn)證和焊接工藝;軟件的調(diào)試則側(cè)重于子模塊的功能驗(yàn)證和模塊與模塊的 接口配合。下面結(jié)合本設(shè)計(jì)實(shí)例加以討論。 6.16.1 硬件系統(tǒng)的焊接與調(diào)試硬件系統(tǒng)的焊接與調(diào)試 硬件焊接前首先要仔細(xì)核對(duì)硬件系統(tǒng)設(shè)計(jì)原理的正確性,包括參數(shù)選用的正確性與 原理的正確性。確認(rèn)正確后在通用實(shí)驗(yàn)板直接焊接實(shí)際電路來(lái)進(jìn)行實(shí)物調(diào)試和驗(yàn)證。 調(diào)試分為斷電調(diào)試和上電調(diào)試。 第一步:斷電調(diào)試第一步:斷電調(diào)試 為安全起見,首先必須進(jìn)行斷電調(diào)試。斷電調(diào)試的內(nèi)容至少包括短路檢測(cè)和原理正 確性確認(rèn)。 (1)短路檢測(cè) 系統(tǒng)電路焊接完成后,必須進(jìn)行短路檢測(cè)。檢測(cè)方法很簡(jiǎn)單,選用合適的萬(wàn)用表歐 姆擋(例如,20K

45、 擋或 200K 擋) ,用紅黑表筆接電路板的+5V 電源的+、-極,如果存在充 放電現(xiàn)象(即電阻指示從大到小再到大或從小到大) ,最后電阻穩(wěn)定在一個(gè)適當(dāng)?shù)奈恢?(一般為幾千歐姆) ,則基本可排除系統(tǒng)短路現(xiàn)象。如果無(wú)充放電現(xiàn)象或電阻值穩(wěn)定在很 小的位置(例如幾歐姆) ,則說明系統(tǒng)中可能存在短路故障,不能通電試驗(yàn),必須對(duì)系統(tǒng) 進(jìn)行徹底排查,直至解決。 (2)原理正確性確認(rèn) 關(guān)于這個(gè)問題,不同的電路有不同的工作原理,因此,必須針對(duì)具體電路進(jìn)行具體 分析。這里按照?qǐng)D 4-4,檢查各個(gè)器件的引腳是否連接正確。 第二步:通電調(diào)試第二步:通電調(diào)試 1) 系統(tǒng)時(shí)鐘是否起振 凡是微處理器系統(tǒng),正常運(yùn)行的必要條

46、件是系統(tǒng)時(shí)鐘穩(wěn)定正常。在實(shí)際工作中,因 為各種原因?qū)е孪到y(tǒng)時(shí)鐘不正常而出現(xiàn)系統(tǒng)無(wú)法正常運(yùn)行的情況也時(shí)有出現(xiàn),因此系統(tǒng) 時(shí)鐘是否起振應(yīng)是通電檢查的首要一環(huán)。檢查方法如下: (1)邏輯筆法。利用邏輯筆看時(shí)鐘引腳 18、19,應(yīng)出現(xiàn)脈沖跳變現(xiàn)象(即高低電平和 脈沖指示燈同時(shí)閃亮) ,否則,說明時(shí)鐘沒有起振。 (2)數(shù)字萬(wàn)用表法。用數(shù)值萬(wàn)用表的直流電壓擋(20V) ,分別測(cè)量 18、19 腳的電壓, 其中讀數(shù)應(yīng)在 2.5V 左右。 (3)示波器法。波形應(yīng)為 6MHz 的脈沖方波。 2)復(fù)位電路是否正常 復(fù)位不正常也會(huì)導(dǎo)致系統(tǒng)不工作,例如,9 腳(復(fù)位腳)如果始終為高,則系統(tǒng)始終處于 復(fù)位狀態(tài);如果始終

47、為低電平(不能產(chǎn)生復(fù)位所需的高電平脈沖),則系統(tǒng)也可能無(wú)法正常 工作.檢查的重點(diǎn)是相關(guān)電路是否正確。 6.26.2 軟件調(diào)試軟件調(diào)試 結(jié)構(gòu)化軟件的調(diào)試一般可以將重點(diǎn)放在分模塊調(diào)試上,通調(diào)是最后一環(huán)。軟件調(diào)試可 以采取離線調(diào)試和在線調(diào)試兩種方式。前者不需要硬件仿真器,借助于軟件仿真器即可; 后者一般需要仿真系統(tǒng)的支持。在本次設(shè)計(jì)中利用的是 KEIL C51 軟件仿真器,其評(píng)估版 本可以免費(fèi)獲取,只是有 2KB 代碼限制。 基于 MCS51 的音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)的調(diào)試,主要集中在對(duì)揚(yáng)聲器的輸出音樂 部分的調(diào)試以及鍵盤控制和 LED 顯示部分的調(diào)試上。在編寫完整的音樂播放器程序前, 可以先按照如

48、下的順序分別調(diào)試各個(gè)功能模塊的程序。 測(cè)試測(cè)試LEDLED顯示模塊顯示模塊 (1)調(diào)試目的 使用 P2 口作為輸出口實(shí)現(xiàn) LED 的顯示,從而檢測(cè) P2 口及 LED 顯示模塊是否正常工 作。 (2)調(diào)試程序 MAIN: MOV TMOD, #10H ;定時(shí)器 T1 工作在方式 1 MOV TH1, #3CH MOV TL1, #0B0H;T=50ms START: MOV R1,#00H ;計(jì)數(shù)顯示初始化 MOV DPTR,#TAB DISP: MOV A,R1 MOVC A,A+DPTR ;查表得顯示的字型碼 MOV P2,A ;數(shù)碼管顯示 0 ACALL DELAY1S ;延時(shí) 1S I

49、NC R1 ;計(jì)數(shù)值加 1 CJNE R1,#10,DISP ;秒值不到 10,繼續(xù)顯示;否則清 0 MOV R1,#00H ;計(jì)數(shù)值清 0 SJMP DISP TAB: DB 0C0H,0F9H,0A4H ;0,1,2 DB 0B0H,99H,92H ;3,4,5 DB 82H,0F8H,80H ;6,7,8 DB 90H ;9 DELAY1S: ;延時(shí)子程序 MOV R3,#14H ;置 50MS 計(jì)數(shù)循環(huán)初值 SETBTR1 ;啟動(dòng) T1 LP1: JBC TF1,LP2 ;查詢計(jì)數(shù)溢出 SJMP LP1 ;未到 50MS 繼續(xù)計(jì)數(shù) LP2: MOV TH1,#3CH ;重新置定時(shí)器初值

50、 MOV TL1,#0B0H DJNZ R3,LP1 ;未到 1S 繼續(xù)循環(huán) RET ;返回主程序 (3)調(diào)試結(jié)果 LED 數(shù)碼管從 0 到 9 自動(dòng)循環(huán)顯示,表明硬件與軟件正確。 測(cè)試鍵盤控制模塊測(cè)試鍵盤控制模塊 (1)調(diào)試目的 通過鍵盤的控制可使 LED 數(shù)碼管顯示相應(yīng)的內(nèi)容。 (2)調(diào)試程序 GETKEY: ;讀 A 鍵盤子程序 SA: JB P1.0, SB ;讀 A LCALLDELAY2 JB P1.0, SA JNB P1.0, $ MOV P2, #10001000B;顯示 A MOV R5, #10001000B MOV A, #0FFH MOV B, #0AH RET (3

51、)調(diào)試結(jié)果 鍵盤按下后 LED 顯示相應(yīng)的內(nèi)容,表明軟硬件正確。 測(cè)試測(cè)試P3.0P3.0口輸出口輸出 (1)調(diào)試目的 使用 P3.0 口做輸出口使揚(yáng)聲器工作 (2)調(diào)試程序 START: MOV SP, #60H MOV TMOD, #11H MOV IE, #8AH MOV IP, #08H ;T1 中斷優(yōu)先于 T0 中斷 MOV TH1, #3CH MOV TL1, #0B0H;以上為系統(tǒng)初始化,T=50ms HERE:SJMP HERE INT_T0: CLR TR0 MOV TL0, 20H MOV TH0, 21H CPL P3.0 SETBTR0 RETI (3)調(diào)試結(jié)果 揚(yáng)聲器

52、有聲音發(fā)出,揚(yáng)聲器正常工作。 6.36.3 調(diào)試中遇到的問題及解決調(diào)試中遇到的問題及解決 (1)編程前要畫流程圖,這樣會(huì)使思路清晰。 (2)編程時(shí)要注意,在程序開始時(shí),要寫入各定時(shí)器中斷的入口地址。 (3)有時(shí)會(huì)出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)現(xiàn) 是因?yàn)槌绦蛑杏械闹噶顣鴮懙貌灰?guī)范導(dǎo)致的,例如有的 RET 返回指令一定要按正確格式 書寫。 (4)程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見,都用 LJMP,我們就遇到過跳轉(zhuǎn)指 令用錯(cuò)程序無(wú)法正常運(yùn)行的現(xiàn)象。 (5)編程過程中要注意加注釋或分割線,否則,在程序過長(zhǎng)時(shí)容易變得很亂,不便 于查找或更改。 (6)開始時(shí)候沒有將單片機(jī)的第 31 號(hào)引腳接到高電平,結(jié)果使音樂播放器的播放 性能不穩(wěn)定(有時(shí)候能工作,有時(shí)候卻工作不了) ,當(dāng)接一高電平以后,播放器能正常工 作了。 (7)開始沒有考慮鍵盤的消抖,造成的按鍵工作紊亂,具體的現(xiàn)象是:按 1 次鍵卻 被要機(jī)器認(rèn)為是按了 1 次或多次,這就使播放器有時(shí)候可以正常工作,有時(shí)候卻不可以。 給鍵盤程序加了消抖呼程序以后,按鍵就工作正常了。 (8)兩個(gè)定時(shí)器同時(shí)工作,存在中斷時(shí)序問題,剛開始時(shí)我們把定時(shí)器 1 設(shè)定在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)網(wǎng)僅提供信息存儲(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)論