版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖書(shū)分類(lèi)號(hào):密 級(jí):畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的mp3播放器設(shè)計(jì)學(xué)生姓名學(xué)院名稱(chēng)信電工程學(xué)院專(zhuān)業(yè)名稱(chēng)電子信息工程指導(dǎo)教師2012年5月10日 摘要因?yàn)閱纹瑱C(jī)編寫(xiě)的mp3播放器具有執(zhí)行效率高、頻率輸出穩(wěn)定、易于修改、高可靠性、高性價(jià)比、低電壓、低功耗等,使單片機(jī)近幾年得到迅猛發(fā)展和大范圍推廣,廣泛應(yīng)用于工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、及通訊設(shè)備、日常消費(fèi)類(lèi)產(chǎn)品、玩具等 1 。利用單片機(jī)設(shè)計(jì)的mp3播放器具有硬件電路簡(jiǎn)單,軟件運(yùn)行可靠等特點(diǎn)。本文介紹了一種以 at89s52 單片機(jī)為控制核心的mp3。該設(shè)計(jì)采用2*16個(gè)點(diǎn)陣液晶模塊lcd1602作為顯示界面,蜂鳴器作為發(fā)聲元件,并利用
2、定時(shí)器進(jìn)行中斷控制。本文分析了基于單片機(jī)的mp3播放器的工作原理,詳細(xì)介紹了mp3播放器的功能及其硬件設(shè)計(jì)和軟件設(shè)計(jì)的方法,給出了基于mcs-51單片機(jī)的mp3播放器的具體實(shí)現(xiàn)方案并重點(diǎn)講述了其硬件實(shí)現(xiàn)與軟件編寫(xiě),實(shí)現(xiàn)了單片機(jī)mp3播放器對(duì)音樂(lè)的演奏。關(guān)鍵詞:mp3播放器;at89s52;lcd1602目 錄摘要i1緒論12設(shè)計(jì)綜述22.1單片機(jī)工作原理22.1.1 單片機(jī)概述22.1.2 單片機(jī)的應(yīng)用領(lǐng)域及發(fā)展趨勢(shì)22.2 單片機(jī)產(chǎn)生音調(diào)的方法32.3 keil開(kāi)發(fā)系統(tǒng)42.4 proteus的操作83硬件設(shè)計(jì)93.1總體方案設(shè)計(jì)93.2 單片機(jī)最小系統(tǒng)電路93.2.1 at89s52芯片性
3、能介紹93.2.2 電源電路133.2.3 時(shí)鐘振蕩電路133.3 鍵盤(pán)掃描模塊143.4 顯示模塊153.5 播放模塊164 系統(tǒng)軟件設(shè)計(jì)184.1編程原理及流程圖185 調(diào)試與仿真結(jié)果225.1 軟件調(diào)試225.1.1 測(cè)試led顯示模塊225.1.2 測(cè)試鍵盤(pán)控制模塊235.1.3 測(cè)試p3.0口輸出235.2 調(diào)試中遇到的問(wèn)題及解決245.3 仿真結(jié)果25結(jié)束語(yǔ)26致 謝27參考文獻(xiàn)28附錄29附錄1 源程序291緒論幾千年來(lái),各種樂(lè)器的發(fā)聲無(wú)一不是依靠琴弦、簧片、哨片引起管柱振動(dòng)而作為聲源的。隨著現(xiàn)代電子工業(yè)技術(shù)的飛速發(fā)展,一種用新的聲源來(lái)制造音響的新型樂(lè)器脫穎而出,這就是目前人們熟
4、知的電子mp3播放器。目前市場(chǎng)上的mp3播放器形形色色,例如大家所熟悉的mp3,隨著電子技術(shù)的不斷發(fā)展,mp3播放器的發(fā)展也會(huì)進(jìn)一步發(fā)展。目前單片機(jī)的應(yīng)用滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能ic卡,民用豪華轎車(chē)的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開(kāi)單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。本課題即是在這種背景下,對(duì)基于mcs51單片機(jī)的mp3播放器的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了硬件及軟件的
5、設(shè)計(jì),并給出了一套完整的解決方案,實(shí)現(xiàn)了單片機(jī)mp3播放器對(duì)音樂(lè)的演奏。基于單片機(jī)的mp3播放器可應(yīng)用于mp3,mp4,擴(kuò)音器等很多方面,并可作為很多系統(tǒng)的輔助功能,作為單片機(jī)的重要硬件資源之一,利用定時(shí)器可以產(chǎn)生各種固定頻率的方波信號(hào),也可以產(chǎn)生包括do、re、me-等音階在內(nèi)的各種頻率聲音。將各個(gè)音階連接在一起,便可組成一支曲子或是演奏一段旋律。基于這個(gè)思想,我設(shè)計(jì)了一款特殊的mp3播放器,本播放器可實(shí)現(xiàn)播放、暫停、選曲等功能。由于時(shí)間及條件限制,本設(shè)計(jì)實(shí)現(xiàn)了一種簡(jiǎn)單的mp3播放器,其核心器件采用at89s52單片機(jī),本播放器具有電路簡(jiǎn)單,功能強(qiáng)大,易于拓展等特點(diǎn)。在此基礎(chǔ)上,可以添加按鍵
6、,led顯示屏等模塊,實(shí)現(xiàn)切換歌曲,歌名顯示,動(dòng)感音樂(lè)屏等功能2。2設(shè)計(jì)綜述2.1單片機(jī)工作原理2.1.1 單片機(jī)概述單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機(jī)存儲(chǔ)器ram、只讀存儲(chǔ)器rom、多種i/o口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。at89s52是一種低功耗、高性能cmos8位微控制器,具有8k 在系統(tǒng)可編程flash 存儲(chǔ)器。使用atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和引腳完全兼容
7、。片上flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得at89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案。2.1.2 單片機(jī)的應(yīng)用領(lǐng)域及發(fā)展趨勢(shì)單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專(zhuān)用設(shè)備的智能化管理及過(guò)程控制等領(lǐng)域,大致可分為如下幾個(gè)范疇:一、在智能儀器儀表的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類(lèi)型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長(zhǎng)度、硬度、元素、壓力等物理量的測(cè)量。采用單片
8、機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測(cè)量設(shè)備(功率計(jì)、示波器、各種分析儀)。 二、在家用電器中的應(yīng)用可以這樣說(shuō),現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門(mén),無(wú)所不在。三、在工業(yè)控制中的應(yīng)用用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。 四、在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供
9、了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車(chē)無(wú)線通信、再到日常工作中隨處可見(jiàn)的移動(dòng)電話,集群移動(dòng)通信,無(wú)線電對(duì)講機(jī)等。單片機(jī)的發(fā)展趨勢(shì)現(xiàn)在可以說(shuō)是百花齊放,百家爭(zhēng)鳴的時(shí)期,世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流c51系列兼容的,也有不兼容的,但它們各具特色,互成互補(bǔ),為單片機(jī)的應(yīng)用提供了廣闊的天地??v觀單片機(jī)的發(fā)展過(guò)程,可以預(yù)示單片機(jī)的發(fā)展趨勢(shì),大致有:一、微型單片化現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(cpu)、隨機(jī)存取數(shù)據(jù)存儲(chǔ)(ram)、只讀程序存儲(chǔ)器(ro
10、m)、并行和串行通信接口,中斷系統(tǒng)、定時(shí)電路、時(shí)鐘電路集成在一塊單一的芯片上,增強(qiáng)型的單片機(jī)集成了如a/d轉(zhuǎn)換器、pmw(脈寬調(diào)制電路)、wdt(看門(mén)狗)、有些單片機(jī)將lcd(液晶)驅(qū)動(dòng)電路都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就更多,功能就越強(qiáng)大。甚至單片機(jī)廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機(jī)芯片。此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中smd(表面封裝)越來(lái)越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。二、低功耗cmos化mcs-51系列的8031推出時(shí)的功耗
11、達(dá)630mw,而現(xiàn)在的單片機(jī)普遍都100mw左右,隨著對(duì)單片機(jī)功耗要求越來(lái)越低,現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了cmos(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。像80c51就采用了hmos(即高密度金屬氧化物半導(dǎo)體工藝)和chmos(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。cmos雖然功耗低,但由于其物理特征決定其工作速度不夠高,而chmos則具備了高速和低功耗的特點(diǎn),這些特征,更適合于要求低功耗像電池供電的應(yīng)用場(chǎng)合。所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途徑。2.2 單片機(jī)產(chǎn)生音調(diào)的方法mp3播放器是利用單片機(jī)產(chǎn)生樂(lè)曲音符,再把樂(lè)曲音符翻譯成計(jì)算機(jī)音樂(lè)語(yǔ)言,用單片機(jī)進(jìn)行信息處理,再通過(guò)蜂鳴器或喇叭放
12、出音樂(lè)。音樂(lè)的產(chǎn)生主要是通過(guò)單片機(jī)的i/o口輸出高低不同的脈沖信號(hào)來(lái)控制蜂鳴器發(fā)音。要想產(chǎn)生音頻脈沖信號(hào),需要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(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ì)于音樂(lè)的節(jié)拍,每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍。如果1拍為0.4s,1/4拍為0.1s,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1
13、/4拍為1delay,那么1拍應(yīng)為4delay,以此類(lèi)推。所以只要求得1/4拍的delay,其余的節(jié)拍就是它的倍數(shù)??偠灾皇讟?lè)曲是由音階和節(jié)拍兩大要素構(gòu)成。一首樂(lè)曲演奏的原理是:不同音階分別對(duì)應(yīng)不同的頻率,發(fā)出不同的音調(diào),而節(jié)拍則控制發(fā)出音調(diào)時(shí)間的長(zhǎng)短;若將樂(lè)曲的音調(diào)連續(xù)發(fā)出,并使其按相應(yīng)的節(jié)拍變化,即可演奏一首樂(lè)曲。根據(jù)這一特點(diǎn),我們采用單片機(jī)輔以相應(yīng)的接口來(lái)設(shè)計(jì)mp3播放器。2.3 keil開(kāi)發(fā)系統(tǒng)使用keil軟件建立一個(gè)工程:keil是目前進(jìn)行51單片機(jī)開(kāi)發(fā)最常用的編譯軟件。關(guān)于keil的使用,有很多的資料介紹,這里只介紹其整個(gè)編譯過(guò)程。在keil里,每一個(gè)完整的程序,都是以一個(gè)工
14、程的形式建立的。一個(gè)工程里可以有一個(gè)或多個(gè)*.c文件和*.h文件,但只可以有一個(gè)main()函數(shù)。一般的做法是將包含main()函數(shù)的c文件加入到工程中,其他文件以#include頭文件的形式加到這個(gè)c文件里。這樣,在編譯的時(shí)候,其他的文件會(huì)被自動(dòng)的導(dǎo)入到工程里來(lái)。打開(kāi)keil軟件后,出現(xiàn)(圖2-3-1)所示界面。當(dāng)然,如果keil在上次關(guān)閉時(shí)有打開(kāi)的工程,再一次打開(kāi)時(shí)它會(huì)自動(dòng)加載上一次的工程文件。圖2-3-1 keil軟件主界面首先點(diǎn)擊project-new project(project-open project為打開(kāi)一個(gè)已經(jīng)存在的工程),如圖2-3-2所示。圖2-3-2 keil軟件打開(kāi)
15、新工程界面點(diǎn)開(kāi)后,在出現(xiàn)的對(duì)話框中選擇工程存在路徑,單擊“保存”后,出現(xiàn)(如圖2-3-3所示)界面。在此界面上選擇電路板上所用的單片機(jī)型號(hào):atmel at89s51(或者是at89s52,視開(kāi)發(fā)板上具體型號(hào)而定),單擊“確定”。圖2-3-3 選擇電路板上所用的單片機(jī)型號(hào)設(shè)置完成后,軟件會(huì)提示“是否將8051上電初始化程序添加入工程?”如圖2-3-4所示,這個(gè)一般選擇“否”。(關(guān)于startup.a51的相關(guān)內(nèi)容可查閱相應(yīng)資料)圖2-3-4 是否將8051上電初始化程序添加入工程這樣,就建立了一個(gè)空的51工程。接下來(lái)的事,就是在這個(gè)工程里面加入自己的程序代碼。點(diǎn)擊,或者file-new,便建立
16、了一個(gè)空的文本框?,F(xiàn)在,就可以開(kāi)始在里面輸入你的代碼了。保存時(shí)注意:如果是用c語(yǔ)言寫(xiě)的程序,則將文本保存成*.c,如果是用匯編寫(xiě)的程序,則將文本存成*.asm。到目前為步,我們已經(jīng)建立了一個(gè)工程,也寫(xiě)了一個(gè)程序代碼。但現(xiàn)在還不能開(kāi)始編譯。因?yàn)檫€沒(méi)有將程序代碼添加到工程里面去。下一步就是將寫(xiě)完的程序添加到工程里面,如圖2-3-5所示,在左邊project workspace里的source group 1上右擊,選擇add files to group source group 1。在打開(kāi)的對(duì)話框中,選擇剛存的文件路徑和對(duì)應(yīng)的文件名。圖2-3-5 添加文件到工程中下一步,就開(kāi)始編譯剛輸入進(jìn)去的代
17、碼。點(diǎn)擊工具欄中的按鈕。接著,keil會(huì)打出下面的提示:build target target 1assembling led.asm.linking.program size: data=8.0 xdata=0 code=100first - 0 error(s), 0 warning(s).其中“first - 0 error(s), 0 warning(s).”說(shuō)明現(xiàn)在的工程編譯通過(guò),0個(gè)錯(cuò)誤和0個(gè)警告。建立工程的時(shí)候,默認(rèn)是不生成hex文件的,得在編譯做如下設(shè)置:?jiǎn)螕?,或者在project workspace里target 1上右擊,選擇“options for target targ
18、et 1”。出現(xiàn)如圖2-3-6所示對(duì)話框,選擇“output”按圖示,將箭頭所指的多選框勾上,點(diǎn)“確定”?,F(xiàn)在再點(diǎn)擊重新編譯,系統(tǒng)提示:“creating hex file from first.”。便會(huì)在工程所在文件夾里生成hex文件。圖2-3-6 生成hex文件2.4 proteus的操作1.硬件電路圖的接法操作3(1)放置選擇(刪除)元器件(2)移動(dòng)元器件(3)縮放視圖(4)連接導(dǎo)線(5)仿真,調(diào)試2. 單片機(jī)系統(tǒng)proteus設(shè)計(jì)與仿真過(guò)程4 proteus強(qiáng)大的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真功能,使它可成為單片機(jī)系統(tǒng)應(yīng)用開(kāi)發(fā)和改進(jìn)手段之一。全部過(guò)程都是在計(jì)算機(jī)上通過(guò)proteus來(lái)完成的。其過(guò)
19、程一般也可分為三步:(1)在isis平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)電路設(shè)計(jì)、選擇元器件、接插件、連接電路和電氣檢測(cè)等。簡(jiǎn)稱(chēng)proteus電路設(shè)計(jì)。(2)在keil平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)程序設(shè)計(jì)、編輯、匯編編譯、代碼級(jí)調(diào)試,最后生成目標(biāo)代碼文件(*.hex)。簡(jiǎn)稱(chēng)proteus源程序設(shè)計(jì)和生成目標(biāo)代碼文件。(3)在isis平臺(tái)上將目標(biāo)代碼文件加載到單片機(jī)系統(tǒng)中,并實(shí)現(xiàn)單片機(jī)系統(tǒng)的實(shí)時(shí)交互、協(xié)同仿真。它在相當(dāng)程度上反映了實(shí)際單片機(jī)系統(tǒng)的運(yùn)行情況。簡(jiǎn)稱(chēng)proteus仿真。3硬件設(shè)計(jì)3.1總體方案設(shè)計(jì)以at89s52為核心,通過(guò)單片機(jī)的定時(shí)器產(chǎn)生一定長(zhǎng)度的方波,方波脈沖驅(qū)動(dòng)蜂鳴器發(fā)聲。要產(chǎn)生音頻脈沖,只需算出某一
20、音頻的周期(1/音頻),然后取半周期的時(shí)間定時(shí)。利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的i/o反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)i/o口反相,就可在i/o腳上得到此頻率的脈沖。當(dāng)鍵盤(pán)有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器t0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂(lè)曲。同時(shí)在lcd顯示歌曲序號(hào)和歌曲名稱(chēng)5。總體如圖3-1所示:at89s52 鍵盤(pán)掃描模塊液晶顯示模塊蜂鳴器發(fā)聲模塊圖3-1 總體方案圖3.2 單片機(jī)最小系統(tǒng)電路3.2.1 at89s52芯片性能介紹at89s52是低電壓,高性能cmos八位單片機(jī),片內(nèi)含8k字節(jié)的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器和256字節(jié)的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器,
21、器件采用atmel公司的高密度、非易失存儲(chǔ)技術(shù)生產(chǎn)與標(biāo)準(zhǔn)mcs-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用八位中央處理器和flash存儲(chǔ)單元,功能強(qiáng)大適合于許多較復(fù)雜控制應(yīng)用場(chǎng)合6。at89s52主要性能參數(shù):u 與mcs-51產(chǎn)品指令和引腳完全兼容u 8k字節(jié)可重復(fù)擦寫(xiě)flash閃速存儲(chǔ)器u 1000次擦寫(xiě)周期u 全靜態(tài)操作:0hz33mhzu 三級(jí)加密程序存儲(chǔ)器u 2568字節(jié)內(nèi)部ramu 32個(gè)可編程i/o口線u 3個(gè)16位定時(shí)/計(jì)數(shù)器u 8個(gè)中斷源u 全雙工可編程串行uart通道u 低功耗空閑和掉電模式u 掉電后中斷可喚醒 u 看門(mén)狗定時(shí)器 u 雙數(shù)據(jù)指針u 掉電標(biāo)識(shí)符u 快速編程
22、周期u 靈活isp編程(字節(jié)和模式)芯片如圖3-2-1所示:圖3-2-1 at89s52引腳圖功能特性概述:at89s52提供以下標(biāo)準(zhǔn)功能:8k字節(jié)flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部ram,32個(gè)i/o口線,3個(gè)16位定時(shí)/計(jì)數(shù)器。一個(gè)6向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí)at89s52可降至0hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止cpu的工作,但允許ram,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存ram中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。而本畢業(yè)設(shè)計(jì)中用到了, at89s52的各個(gè)口,
23、 p1口接rz-1602液晶顯示電路,p2口接按鍵,p3口接晶振,蜂鳴器,工作指示燈,復(fù)位等電路。at89s52使一個(gè)功能強(qiáng)大的芯片,各個(gè)口由以下功能7:p0口是一組8位漏極開(kāi)路型雙向 i/o 口,即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)ttl邏輯門(mén)電路,對(duì)端口 p0 寫(xiě)“1”時(shí),可作為高阻抗輸入端用。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。 p1口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 i/o 口,p1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè) ttl 邏輯門(mén)電路,對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把
24、端口拉到高電平,1 不同之處是,p1.0 和 p1.1 還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和輸入(p1此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。il與 at89s5.1/t2ex)。表3-2-1 p1.0和p1.1的第二功能表引腳號(hào)功能特性p1.0t2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出p1.1t2ex(定時(shí)/計(jì)數(shù)2捕獲/重裝載觸發(fā)和方向控制)p2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向 i/o,p2的輸出緩沖級(jí)可驅(qū)動(dòng)吸(收或輸出電流4個(gè)ttl邏輯門(mén)電路。對(duì)端口 p2 寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此
25、時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(i )。il在訪問(wèn)外部程序存儲(chǔ)器或 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行 movx dptr 指令)時(shí),p2口送出高 8 位地址數(shù)據(jù)。在訪問(wèn) 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行 movx ri 指令)時(shí),p2口輸出p2 鎖存器的內(nèi)容。flash編程或校驗(yàn)時(shí),p2亦接收高位地址和一些控制信號(hào)。 p3口是一組帶有內(nèi)部上拉電阻的8位雙向 i/o 口。p3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) ttl 邏輯門(mén)電路。對(duì) p3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的p3口將用
26、上拉電阻輸出電流。p3 口除了作為一般的i/o 口線外,更重要的用途是它的第二功能。表3-2-2 p3口第二功能表端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2(外中斷0)p3.3(外中斷1 )p3.4t0(定時(shí)/計(jì)數(shù)器0)p3.5t1(定時(shí)/計(jì)數(shù)器1)p3.6(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)p3.7(外部數(shù)據(jù)存儲(chǔ)器讀選通)rst:復(fù)位輸入,當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。ale/prog:當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale 仍以時(shí)鐘振蕩頻率的 1/6 輸出
27、固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。如有必要,可通過(guò)對(duì)特殊功能寄存器(sfr)區(qū)中的 8eh 單元的 d0 位置位,可禁止 ale 操作。該位置位后,只有一條movx 和movc指令才能將ale激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ale禁止位無(wú)效。psen:程序儲(chǔ)存允許(psen)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng) at89c52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次 psen 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次 psen信號(hào)。ea/vpp:外部訪問(wèn)允許。欲使 cpu 僅訪問(wèn)外部程序存儲(chǔ)器(地址為 0000
28、hffffh),ea 端必須保持低電平。需注意的是:如果加密位 lb1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存 ea端狀態(tài)。如 ea端為高電平,cpu 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。flash 存儲(chǔ)器編程時(shí),該引腳加上+12v 的編程允許電源 vpp,當(dāng)然這必須是該器件是使用 12v 編程電壓 vpp。xtal1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。xtal2: 振蕩器反相放大器的輸出。 3.2.2 電源電路系統(tǒng)直流9v或者12v電池供電,由一片lm7805將9v/12v電源穩(wěn)壓在5v上。5v電源給所有芯片和電路供電。在電源電路中我們使用了兩個(gè)濾波電容,使用濾波電容主要目的是為了消除電源波動(dòng)對(duì)系統(tǒng)的
29、干擾,提高系統(tǒng)的抗干擾能力,其中104電容是用來(lái)濾高頻雜波干擾,220uf電容是用來(lái)濾低頻雜波干擾。如圖3-2-2所示: 圖3-2-2 電源電路圖3.2.3 時(shí)鐘振蕩電路at89s52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳xtal1和xtal2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一起構(gòu)成自激振蕩器。片外石英晶體或者陶瓷諧振器及電容c1、c2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。這里我們采用電容30pf,晶振采用12mhz。電路圖如圖3-2-3所示: 圖3-2-3 時(shí)鐘振蕩電路3.2.4 復(fù)位電路復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)
30、位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷(xiāo)復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷(xiāo)復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。 復(fù)位電路采用rc充電電路組成上電復(fù)位單片機(jī)電路,當(dāng)系統(tǒng)上電時(shí),在上電初期,電容c充電,使復(fù)位腳持續(xù)高電平,當(dāng)c充電到達(dá)一定程度復(fù)位腳電位會(huì)慢慢變低,最后被電阻r完全拉低,高電平復(fù)位的時(shí)間由充電的時(shí)間決定,充電時(shí)間又由r與c的阻值和容值之積決定。一旦單片機(jī)復(fù)位腳拉低后就一直都低電平,只有下電后再上電才重新開(kāi)始復(fù)位過(guò)程。電路圖如圖3-2-4所示: 圖3-2-4 復(fù)位電路3.3 鍵盤(pán)掃描模塊本方案采用獨(dú)立式按鍵接口設(shè)計(jì),各按鍵相互獨(dú)立,每個(gè)按鍵單獨(dú)
31、占用一根i/o口線,每根i/o口線的按鍵工作狀態(tài)不會(huì)影響其他i/o口線上的工作狀態(tài)。因此,通過(guò)檢測(cè)輸入線的電平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下。鍵盤(pán)工作方式采用定時(shí)掃描方式,采用定時(shí)器t0定時(shí),通過(guò)讀取輸出數(shù)據(jù),識(shí)別按鍵工作狀態(tài)。鍵盤(pán)按鍵所用開(kāi)關(guān)為機(jī)械彈性開(kāi)關(guān),利用了機(jī)械觸點(diǎn)的合斷作用。由于機(jī)械觸點(diǎn)的的彈性作用,一個(gè)按鍵開(kāi)關(guān)在閉合和斷開(kāi)的瞬間均有一連串的抖動(dòng)。抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為10100ms。電平信號(hào)的波動(dòng),有可能令cpu誤解為多次按鍵操作,從而引起誤處理。為了確保cpu對(duì)一次按鍵動(dòng)作只確認(rèn)一次按鍵,必須消除抖動(dòng)的影響。按鍵的消抖通常有軟件和硬件兩種消除方法。如果按鍵較
32、多,硬件消抖將無(wú)法勝任,常采用軟件消抖。本設(shè)計(jì)雖然按鍵少但還是采用常規(guī)的軟件延時(shí)的方法:在第一次檢測(cè)到有鍵按下時(shí),執(zhí)行一段延時(shí)子程序后,再確認(rèn)電平是否仍保持閉電平,如果保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下,進(jìn)行相應(yīng)處理工作,消除了抖動(dòng)的影響。判斷鍵盤(pán)程序流程如圖3-3所示: 有鍵按下? 開(kāi)始 去鍵盤(pán)抖動(dòng) 同一鍵按下?根據(jù)鍵值執(zhí)行功能功能 循環(huán)yesnoyesno圖3-3 鍵盤(pán)判斷程序流程圖3.4 顯示模塊常見(jiàn)的基于單片機(jī)設(shè)計(jì)的mp3播放器基本不能顯示歌曲。該音樂(lè)播放系統(tǒng)設(shè)計(jì)上增加液晶顯示器,可為使用者提供曲目信息。由于led數(shù)碼管只能顯示數(shù)字而無(wú)法顯示其他中英文字符,并對(duì)成本及功能考慮,因此從
33、設(shè)計(jì)的成本及功能的角度考慮,采用lcd-1602顯示模塊,它可以顯示每首曲目的英文名字。lcd-1602驅(qū)動(dòng)電路簡(jiǎn)單,可以由單片機(jī)直接輸出命令驅(qū)動(dòng)。lcd各引腳功能如圖表3-4所示:表3-4 lcd引腳功能編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1vss電源地9d2雙向數(shù)據(jù)口2vdd電源正極10d3雙向數(shù)據(jù)口3vl對(duì)比度調(diào)節(jié)11d4雙向數(shù)據(jù)口4rs數(shù)據(jù)/命令選擇12d5雙向數(shù)據(jù)口5r/w讀/寫(xiě)選擇13d6雙向數(shù)據(jù)口6e模塊使能端14d7雙向數(shù)據(jù)口7d0雙向數(shù)據(jù)口15blk背光源地08d1雙向數(shù)據(jù)口16bla背光源正極 vdd:電源正極,4.55.5v,通常使用5v電壓。vl:lcd對(duì)比度調(diào)節(jié)端,電壓調(diào)
34、節(jié)范圍為05v。接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,但對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,因此通常使用一個(gè)10k的電位器來(lái)調(diào)整對(duì)比度,或者直接串接一個(gè)電阻到地。 rs:mcu寫(xiě)入數(shù)據(jù)或者指令選擇端。mcu要寫(xiě)入指令時(shí),使rs為低電平;mcu要寫(xiě)入數(shù)據(jù)時(shí),使rs為高電平。r/w:讀寫(xiě)控制端。r/w為高電平時(shí),讀取數(shù)據(jù);r/w為低電平時(shí),寫(xiě)入數(shù)據(jù)。e:lcd模塊使能信號(hào)控制端。寫(xiě)數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊。d0d7:8位三態(tài)雙向數(shù)據(jù)總線。如果mcu的i/o口資源緊張的話,該模塊也可只使用4位數(shù)據(jù)線d4d7接口傳送數(shù)據(jù)。本充電器就是采用4位數(shù)據(jù)傳送方式。bla: led背光正極。需要背光時(shí),bla串
35、接一個(gè)限流電阻接vdd,blk接地,實(shí)測(cè)該模塊的背光電流為50ma左右。blk: led背光地端。3.5 播放模塊 通過(guò)蜂鳴器實(shí)現(xiàn)發(fā)聲,當(dāng)三極管基級(jí)由單片機(jī)控制變成高電平時(shí),v1導(dǎo)通并工作在飽和區(qū),由于集電極和發(fā)射極之間的電壓差幾乎等于0,故相當(dāng)于蜂鳴器的另一個(gè)腳接地,蜂鳴器會(huì)發(fā)出蜂鳴聲。當(dāng)三極管基級(jí)由單片機(jī)控制變成高低電平時(shí),v1不導(dǎo)通并工作在截止區(qū),那么蜂鳴器的另一個(gè)腳接到高電平,蜂鳴器不發(fā)出蜂鳴聲??梢酝ㄟ^(guò)改變?nèi)龢O管基級(jí)的開(kāi)關(guān)頻率來(lái)控制蜂鳴器發(fā)出各種不同頻率的聲音。另外,蜂鳴器需要三極管驅(qū)動(dòng),而不能由單片機(jī)口線直接驅(qū)動(dòng),因?yàn)榉澍Q器的工作電流比較大(大概100ma),故單片機(jī)口線不能承受。
36、 圖3-5 蜂鳴器發(fā)聲模塊圖4 系統(tǒng)軟件設(shè)計(jì)4.1編程原理及流程圖音樂(lè)發(fā)聲設(shè)計(jì)原理8:(1)總體原理: 一首樂(lè)曲是由多個(gè)音符構(gòu)成的。每個(gè)音符都對(duì)應(yīng)著一個(gè)確定的頻率,樂(lè)曲中不同的音符,實(shí)質(zhì)就是不同頻率的聲音;另外每個(gè)音符會(huì)根據(jù)樂(lè)曲的要求設(shè)定一個(gè)確定的節(jié)拍??梢钥刂茊纹瑱C(jī)產(chǎn)生不同頻率不同節(jié)拍的脈沖信號(hào),由蜂鳴器發(fā)出就產(chǎn)生了美妙和諧的樂(lè)曲。 (2) 單片機(jī)產(chǎn)生不同頻率脈沖信號(hào)的原理: 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/
37、o腳上得到此頻率的脈沖。 2)利用單片機(jī)內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式mode1下,改變計(jì)數(shù)值th0及tl0以產(chǎn)生不同頻率的方法如下: 例如,頻率為523hz,其周期天/523 s=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每計(jì)數(shù)956次時(shí)就將i/o反接,就可得到中音do(532hz)。 計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下: n=fi/2/fr 其中n表示計(jì)數(shù)值;fi表示內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1mhz;fr表示要產(chǎn)生的頻率。 3)其計(jì)數(shù)值的求法如下: t=65536-n=65536-fi/2/fr 計(jì)算舉例: 設(shè)k=65536,f=1000000=fi=1mhz,求
38、低音do(261hz)、中音do(523hz)、 高音do(1046hz)的計(jì)數(shù)值。 t=65536-n=65536-fi/2/fr=65536-1000000/2/fr=65536-500000/fr 低音do的t=65536-500000/262=63628 中音do的t=65536-500000/523=64580 高音do的t=65536-500000/1047=650594) 每個(gè)音符使用1個(gè)字節(jié),字節(jié)高4位代表音符高低,低4位代表音符 節(jié)拍。假設(shè)1/4節(jié)拍為1delay,則1拍應(yīng)為4delay,以此類(lèi)推。只要求得1/4拍的delay時(shí)間,其余節(jié)拍則為它的倍數(shù),本設(shè)計(jì)取4/4調(diào)值,延
39、時(shí)時(shí)間為125ms,其中節(jié)拍碼與實(shí)際節(jié)拍對(duì)照表4-1-1。表4-1-1簡(jiǎn)譜對(duì)應(yīng)的頻率、簡(jiǎn)譜碼和計(jì)數(shù)初值表 簡(jiǎn)譜 發(fā)音 頻率(hz) 計(jì)數(shù)初值 簡(jiǎn)譜碼 5 低音so 392 64260 1 6 低音la 440 64400 2 7 低音si 494 64524 3 1 中音do 523 64580 4 2 中音re 587 64684 5 3 中音mi 659 64777 6 4 中音fa 698 64820 7 5 中音so 784 64898 8 6 中音la 880 64968 9 7 中音si 988 65030 a 1 高音do 1046 65058 b 2 高音re 1175 651
40、10 c 3 高音mi 1318 65157 d 4 高音fa 1397 65178 e 5 高音so 1568 65217 f 不發(fā)音 0 表4-1-2節(jié)拍碼與實(shí)際節(jié)拍對(duì)照表 節(jié)拍碼 實(shí)際節(jié)拍 節(jié)拍碼 實(shí)際節(jié)拍 節(jié)拍碼 實(shí)際節(jié)拍 1 1/4拍 5 1又1/4拍 c 3拍 2 2/4拍 6 1又1/2拍 f 3又3/4拍 3 3/4拍 8 2拍 4 1拍 a 2又1/2拍建立音樂(lè)步驟:1)先把樂(lè)譜的音符找出,然后由上表建立t值表的順序。 2)把t值表構(gòu)成一個(gè)編碼表,構(gòu)成發(fā)音符的計(jì)數(shù)值放在計(jì)數(shù)初值編碼表里。 3)簡(jiǎn)譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))為低4位,音符節(jié)拍碼放在程序 的簡(jiǎn)譜編碼表里。
41、 建立編碼表具體如下:1)定時(shí)值為十六進(jìn)制4位數(shù),拆分為兩組,如5對(duì)應(yīng)的定時(shí)值為fd80h,拆分fdh和80h兩組.前者裝入定時(shí)器的高位th0,后組裝入定時(shí)器的低位tl0。2)在程序中使用定時(shí)器t0方式1來(lái)產(chǎn)生來(lái)產(chǎn)生歌譜中各音符對(duì)應(yīng)頻率的音頻脈沖,由p3.7輸出,經(jīng)三極管將信號(hào)放大后驅(qū)動(dòng)蜂鳴器發(fā)出不同音節(jié)的聲音。3)程序中的節(jié)拍控制是通過(guò)調(diào)用延時(shí)子程序delay的次數(shù)來(lái)實(shí)現(xiàn),1拍為500ms,即需要調(diào)用4次delay;3/4拍需要調(diào)用3次delay;2/4拍需要調(diào)用2次delay。 4)節(jié)拍的控制碼在表table中位于音符碼的后面。5)當(dāng)一個(gè)音符的發(fā)音時(shí)間到時(shí),再查下一個(gè)音符的定時(shí)常數(shù)和延時(shí)常
42、數(shù)。依此進(jìn)行下去,就可演奏出悅耳動(dòng)聽(tīng)的樂(lè)曲。程序流程圖如圖4-1所示: 圖4-1 主程序流程圖如圖4-2所示,開(kāi)始播放自定義音樂(lè)程序時(shí),指針指向樂(lè)譜第一個(gè)字節(jié),將第一字節(jié)拆分為高低字節(jié),其高字節(jié)即為音符中音高對(duì)應(yīng)定時(shí)器定時(shí)常數(shù),低字節(jié)即為音符中節(jié)拍對(duì)應(yīng)的1/4節(jié)拍的次數(shù),同時(shí)啟動(dòng)中斷定時(shí)器0工作在方式1,由定時(shí)器定時(shí)常數(shù)得到相應(yīng)音高,通過(guò)延時(shí)子程序設(shè)定1/4節(jié)拍的時(shí)間,由節(jié)拍次數(shù)得到節(jié)拍,再讀取下一個(gè)樂(lè)譜字節(jié),循環(huán)下去則演奏出美妙和諧的樂(lè)曲9。開(kāi)始程序 指向樂(lè)譜第一個(gè)字節(jié) 拆分字節(jié)的高低字節(jié) 由高字節(jié)得音高對(duì)應(yīng)定時(shí)器定時(shí)常數(shù) 由低字節(jié)得到節(jié)拍對(duì)應(yīng)節(jié)拍次數(shù) 啟動(dòng)定時(shí)器0 延時(shí)節(jié)拍時(shí)間 關(guān)閉定時(shí)器
43、0 讀取下一個(gè)樂(lè)譜字節(jié) 字節(jié)是00h嗎? 程序循環(huán)yesno 圖4-2 音樂(lè)播放子程序流程圖5 調(diào)試與仿真結(jié)果5.1 軟件調(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的mp3播放器的設(shè)計(jì)與實(shí)現(xiàn)的調(diào)試,主要集中在對(duì)揚(yáng)聲器的輸出音樂(lè)部分的調(diào)試以及鍵盤(pán)控制和led顯示部分的調(diào)試上。在編寫(xiě)完整的mp3播放器程序前,可以先按照如下的順序分別調(diào)試各個(gè)功能模塊的程
44、序。5.1.1 測(cè)試led顯示模塊(1)調(diào)試目的使用p2口作為輸出口實(shí)現(xiàn)led的顯示,從而檢測(cè)p2口及l(fā)ed顯示模塊是否正常工作。(2)調(diào)試程序 main: mov tmod, #10h ;定時(shí)器t1工作在方式1 mov th1, #3ch mov tl1, #0b0h;t=50msstart: mov r1,#00h ;計(jì)數(shù)顯示初始化 mov dptr,#tabdisp: mov a,r1 movc a,a+dptr ;查表得顯示的字型碼 mov p2,a ;數(shù)碼管顯示0 acall delay1s ;延時(shí)1s inc r1 ;計(jì)數(shù)值加1 cjne r1,#10,disp ;秒值不到10,繼
45、續(xù)顯示;否則清0 mov r1,#00h ;計(jì)數(shù)值清0 sjmp disptab: db 0c0h,0f9h,0a4h ;0,1,2 db 0b0h,99h,92h ;3,4,5 db 82h,0f8h,80h ;6,7,8 db 90h ;9delay1s: ;延時(shí)子程序 mov r3,#14h ;置50ms計(jì)數(shù)循環(huán)初值 setbtr1 ;啟動(dòng)t1lp1: jbc tf1,lp2 ;查詢計(jì)數(shù)溢出 sjmp lp1 ;未到50ms繼續(xù)計(jì)數(shù)lp2: mov th1,#3ch ;重新置定時(shí)器初值 mov tl1,#0b0h djnz r3,lp1 ;未到1s繼續(xù)循環(huán)ret ;返回主程序(3)調(diào)試結(jié)
46、果 led數(shù)碼管從0到9自動(dòng)循環(huán)顯示,表明硬件與軟件正確。5.1.2 測(cè)試鍵盤(pán)控制模塊(1)調(diào)試目的通過(guò)鍵盤(pán)的控制可使led數(shù)碼管顯示相應(yīng)的內(nèi)容。(2)調(diào)試程序getkey: ;讀a鍵盤(pán)子程序 sa:jbp1.0, sb ;讀alcalldelay2jbp1.0, sajnb p1.0, $movp2, #10001000b;顯示amovr5, #10001000bmova, #0ffhmovb, #0ahret(3)調(diào)試結(jié)果鍵盤(pán)按下后led顯示相應(yīng)的內(nèi)容,表明軟硬件正確。5.1.3 測(cè)試p3.0口輸出(1)調(diào)試目的使用p3.0口做輸出口使揚(yáng)聲器工作(2)調(diào)試程序start:mov sp, #
47、60hmov tmod, #11hmov ie, #8ah mov ip, #08h ;t1中斷優(yōu)先于t0中斷movth1, #3chmovtl1, #0b0h;以上為系統(tǒng)初始化,t=50mshere:sjmp hereint_t0: clr tr0mov tl0, 20hmov th0, 21hcpl p3.0setbtr0reti(3)調(diào)試結(jié)果揚(yáng)聲器有聲音發(fā)出,揚(yáng)聲器正常工作。5.2 調(diào)試中遇到的問(wèn)題及解決(1)編程前要畫(huà)流程圖,這樣會(huì)使思路清晰。(2)編程時(shí)要注意,在程序開(kāi)始時(shí),要寫(xiě)入各定時(shí)器中斷的入口地址。(3)有時(shí)會(huì)出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒(méi)有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)現(xiàn)是因?yàn)?/p>
48、程序中有的指令書(shū)寫(xiě)得不規(guī)范導(dǎo)致的,例如有的ret返回指令一定要按正確格式書(shū)寫(xiě)。(4)程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見(jiàn),都用ljmp,我們就遇到過(guò)跳轉(zhuǎn)指令用錯(cuò)程序無(wú)法正常運(yùn)行的現(xiàn)象。(5)編程過(guò)程中要注意加注釋或分割線,否則,在程序過(guò)長(zhǎng)時(shí)容易變得很亂,不便于查找或更改。(6)開(kāi)始時(shí)候沒(méi)有將單片機(jī)的第31號(hào)引腳接到高電平,結(jié)果使mp3播放器的播放性能不穩(wěn)定(有時(shí)候能工作,有時(shí)候卻工作不了),當(dāng)接一高電平以后,播放器能正常工作了。(7)開(kāi)始沒(méi)有考慮鍵盤(pán)的消抖,造成的按鍵工作紊亂,具體的現(xiàn)象是:按1次鍵卻被要機(jī)器認(rèn)為是按了1次或多次,這就使播放器有時(shí)候可以正常工作,有時(shí)候卻不可以。給鍵盤(pán)程序加
49、了消抖呼程序以后,按鍵就工作正常了。(8)兩個(gè)定時(shí)器同時(shí)工作,存在中斷時(shí)序問(wèn)題,剛開(kāi)始時(shí)我們把定時(shí)器1設(shè)定在方式3,計(jì)250us,由于定時(shí)中斷過(guò)于頻繁,使cpu負(fù)載過(guò)大,導(dǎo)致音樂(lè)不能正常播放,時(shí)間不能正常顯示。解決辦法:將定時(shí)器1設(shè)定在工作方式1,16位計(jì)數(shù),計(jì)50ms,效果有很大改觀。5.3 仿真結(jié)果我在keil軟件中建立工程,連接,編譯后生成了.hex文件,在proteus中在單片機(jī)中加載.hex文件仿真中遇到了以下幾個(gè)問(wèn)題。(1)顯示屏不能工作 剛開(kāi)始時(shí)lcd只發(fā)亮不顯示字符,我通過(guò)查找文獻(xiàn),在網(wǎng)上搜集資料,發(fā)現(xiàn)lcd 的高電平和地引腳接錯(cuò)了,這是一個(gè)常識(shí)性的錯(cuò)誤,它給我了深刻的教訓(xùn),做
50、事情要細(xì)心認(rèn)真。(2)蜂鳴器不能正常播放音樂(lè) 在protues仿真中的蜂鳴器老是不能正常響,會(huì)斷斷續(xù)續(xù)地播放,經(jīng)過(guò)我?guī)滋斓恼{(diào)試,我發(fā)現(xiàn)應(yīng)該是電平驅(qū)動(dòng)的問(wèn)題,是由于三極管的失真造成的。最后終于能播放音樂(lè)了。最終仿真結(jié)果如圖5-3所示: 圖 5-3 仿真圖結(jié)束語(yǔ)我的題目是mp3播放器軟件的設(shè)計(jì),對(duì)于我們這些工科學(xué)生來(lái)說(shuō),這是一次考驗(yàn)。怎么才能找到課堂所學(xué)與實(shí)際應(yīng)用的最佳結(jié)合點(diǎn)?怎樣讓自己的業(yè)余更接近專(zhuān)業(yè)?怎樣讓自己的計(jì)劃更具有序性,而不會(huì)忙無(wú)一用?這都是我們所要考慮和努力的。這次課程設(shè)計(jì)我學(xué)到很多很多的東西,學(xué)會(huì)了怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過(guò)程中怎么樣去克服心理上的不良情緒。不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程。通過(guò)這次使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。我設(shè)計(jì)的mp3播放器采用蜂鳴器作為mp3播放器件,若針對(duì)現(xiàn)在流行的wav、mp3等音樂(lè)質(zhì)量很好的系統(tǒng),它就不是一個(gè)好的選擇,這是本設(shè)計(jì)的不足。當(dāng)然本設(shè)計(jì)也要
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年浙江省寧波市鄞州區(qū)咸祥中心中學(xué)九年級(jí)(上)效果評(píng)估數(shù)學(xué)試卷(二)
- 魯教版八年級(jí)數(shù)學(xué)上冊(cè)第三章數(shù)據(jù)的分析1平均數(shù)課件
- 山東省菏澤市2024-2025學(xué)年高三上學(xué)期期中考試 生物 含解析
- 內(nèi)蒙古磴口縣2023-2024學(xué)年中考數(shù)學(xué)模擬試卷含解析
- 內(nèi)蒙古巴彥淖爾市重點(diǎn)中學(xué)2024屆中考數(shù)學(xué)最后沖刺模擬試卷含解析
- 八年級(jí)生物期中模擬卷(考試版A4)(深圳專(zhuān)用)
- 婚紗攝像基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
- 湘教版三年級(jí)上冊(cè)音樂(lè)教學(xué)計(jì)劃及教案
- 廣東省韶關(guān)市曲江區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期期末道德與法治模擬試題
- 筆算除法教育課件
- 老小區(qū)消防改造工程施工方案
- 《布的基本知識(shí)》課件
- (高清版)TDT 1031.6-2011 土地復(fù)墾方案編制規(guī)程 第6部分:建設(shè)項(xiàng)目
- 職業(yè)生涯規(guī)劃剪輯師
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)第三單元《角的度量》測(cè)試卷附答案
- 廉潔教育教師指導(dǎo)用書(shū)
- 2024年度國(guó)家社會(huì)科學(xué)基金項(xiàng)目課題指南
- 關(guān)于人員調(diào)整的報(bào)告
- 2024考研英語(yǔ)二試題及答案解析(word版)
- 青馬工程培訓(xùn)班試題庫(kù)附有答案
- 《噪聲污染控制》課件
評(píng)論
0/150
提交評(píng)論