基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)及單片機(jī)的音樂盒的設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)及單片機(jī)的音樂盒的設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)及單片機(jī)的音樂盒的設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)及單片機(jī)的音樂盒的設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)及單片機(jī)的音樂盒的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGEPAGE1目錄摘要第一章緒論第二章方案論證及設(shè)計(jì)2.1語(yǔ)音存儲(chǔ)回放系統(tǒng)方案論證2.2方案討論及確定第三章單片機(jī)介紹3.1單片機(jī)簡(jiǎn)介3.2單片機(jī)編程語(yǔ)言介紹3.3系統(tǒng)單片機(jī)選擇3.4AT89S52引腳功能介紹3.5定時(shí)器0和1使用第四章硬件設(shè)計(jì)4.1單片機(jī)系統(tǒng)硬件的設(shè)計(jì)4.1.1整體電路設(shè)計(jì)4.1.2供電電路圖設(shè)計(jì)4.1.3鍵盤、顯示電路設(shè)計(jì)4.1.4存儲(chǔ)器設(shè)計(jì)4.2模擬音頻電路設(shè)計(jì)4.2.1MIC電路設(shè)計(jì)4.2.2放大濾波電路設(shè)計(jì)4.2.3ADC設(shè)計(jì)4.2.4DAC設(shè)計(jì)4.2.5音頻功率放大器設(shè)計(jì)第五章軟件設(shè)計(jì)5.1KeilC51簡(jiǎn)介5.2主程序流程圖5.3各個(gè)模塊程序介紹5.3.1鍵盤子程序設(shè)計(jì)5.3.2顯示子程序設(shè)計(jì)5.3.3ADC子程序設(shè)計(jì)5.3.4DAC子程序設(shè)計(jì)5.3.5定時(shí)中斷服務(wù)子程序 致謝參考文獻(xiàn)

摘要本系統(tǒng)以單片機(jī)89S52為核心,選用由2片62256組成RAM陣列,作為語(yǔ)音的數(shù)字化信號(hào)的存儲(chǔ)器件,將外部數(shù)據(jù)存儲(chǔ)空間擴(kuò)大至64KB。利用AM和DPCM方法對(duì)數(shù)據(jù)進(jìn)行壓縮以加長(zhǎng)存儲(chǔ)時(shí)間。本文闡述了實(shí)用可靠的設(shè)計(jì)方案。

第一章緒論磁帶語(yǔ)音存儲(chǔ)手段應(yīng)用還比較廣泛,目前,隨著數(shù)字化信號(hào)處理技術(shù)的不斷提高,單片機(jī)、數(shù)字信號(hào)處理器以及語(yǔ)音處理大規(guī)模集成電路的進(jìn)步,語(yǔ)音合成,語(yǔ)音識(shí)別,語(yǔ)音存儲(chǔ)和回放技術(shù)的應(yīng)用越來越廣泛,盡管現(xiàn)在各種語(yǔ)言合成芯片,語(yǔ)音處理應(yīng)用電路有許多,但都需要增加硬件投資,在一些由單片機(jī)構(gòu)成的測(cè)控系統(tǒng)中,由于單片機(jī)接口有限,還需要擴(kuò)寬硬件接口線路,本文介紹的語(yǔ)音存儲(chǔ)與回放系統(tǒng)中,沒有使用專用的語(yǔ)音處理芯片,不需擴(kuò)寬接口電路,只利用一般的單片機(jī)測(cè)控系統(tǒng)中都有的硬件電路(如A/D、D/A、存儲(chǔ)器等)就能完成語(yǔ)音信號(hào)的數(shù)字化處理,即能完成語(yǔ)音的存儲(chǔ)與回放,實(shí)現(xiàn)單片機(jī)測(cè)控系統(tǒng)的語(yǔ)音提示報(bào)警及語(yǔ)音提示操作。因此特別適用于單片機(jī)測(cè)控系統(tǒng),為單片機(jī)測(cè)控系統(tǒng)的語(yǔ)音報(bào)警及語(yǔ)音提示操作在幾乎不需增加硬件投資情況下的語(yǔ)音處理提供了一種思路。

第二章方案論證及設(shè)計(jì)2.1語(yǔ)音存儲(chǔ)回放系統(tǒng)方案論證方案一:ADC+MCU+DAC方案數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng)的基本思想是將模擬語(yǔ)音信號(hào)通過模數(shù)轉(zhuǎn)換器A/D轉(zhuǎn)換成數(shù)字信號(hào),再通過單片機(jī)控制存儲(chǔ)在存儲(chǔ)器中,回放時(shí),由單片機(jī)控制將數(shù)據(jù)從存儲(chǔ)器中讀出,然后通過數(shù)模轉(zhuǎn)換器D/A轉(zhuǎn)換成模擬信號(hào),經(jīng)放大在揚(yáng)聲器或耳機(jī)上輸出語(yǔ)音。本設(shè)計(jì)方案系統(tǒng)總體結(jié)構(gòu)框圖如圖2.1所示:圖2.1方案一系統(tǒng)總體框圖方案二:專用語(yǔ)音芯片方案如采用ISD1110/ISD1420系列語(yǔ)言芯片。ISD1110/ISD1420系列單片錄放時(shí)間8至20秒,音質(zhì)好。芯片采用CMOS技術(shù),內(nèi)含震蕩器、話筒前置放大、自動(dòng)增益控制、防混淆濾波器、平滑濾波器、揚(yáng)聲器驅(qū)動(dòng)及EEPROM陣列。最小的錄放系統(tǒng)僅需麥克風(fēng)、喇叭、兩個(gè)按鈕、電源及少數(shù)電阻電容。在錄放操作結(jié)束后,芯片自動(dòng)進(jìn)入低功耗節(jié)電模式、功耗僅0.5uA。ISD1110/ISD1420系列有唯一的錄音控制和邊緣/電平觸發(fā)兩種放音控制。不分段時(shí)外圍線路最簡(jiǎn),也可按最小段長(zhǎng)為單位任意組合分段,參見表1-1“最大段數(shù)”芯片提供若干操作模式,大大提高了控制的靈活性。芯片采用多電平直接模擬量存儲(chǔ)專利技術(shù),每個(gè)采樣直接存儲(chǔ)在片內(nèi)單個(gè)EEPROM單元中,因此能夠非常真實(shí)、自然地再現(xiàn)語(yǔ)音、音樂、音調(diào)各效果,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和“金屬聲”。采樣頻率從5.3,6.4到8.0KHz,對(duì)音質(zhì)僅有輕微影響。片內(nèi)信息可保存100年(無需后備電源),EEPROM單片可反復(fù)錄音十萬(wàn)次。這個(gè)方案的系統(tǒng)圖如下:控制控制電路鍵盤語(yǔ)音芯片LED顯示揚(yáng)聲器揚(yáng)聲器電源如圖1,

本系統(tǒng)使用8031作為CPU,由CPU來控制語(yǔ)音合成芯片TC8830AF,使其工作在CPU控制模式下。當(dāng)系統(tǒng)進(jìn)行語(yǔ)音再生時(shí),由CPU控制語(yǔ)音合成電路中的語(yǔ)音芯片來讀取其外接的存儲(chǔ)器內(nèi)部的語(yǔ)音信息,并合成語(yǔ)音信號(hào),再通過語(yǔ)音輸出電路,進(jìn)行語(yǔ)音報(bào)站和提示。CPU同時(shí)通過程序讀取漢字信息,送入LED點(diǎn)陣顯示電路來進(jìn)行漢字提示。當(dāng)汽車到達(dá)某站時(shí),汽車司機(jī)通過鍵盤來控制本系統(tǒng)進(jìn)行工作,并且,系統(tǒng)將使用狀態(tài)指示電路,向司機(jī)指示出當(dāng)前的行駛方向及站號(hào)(如與實(shí)際方向不符,司機(jī)可通過鍵盤來調(diào)整)。當(dāng)系統(tǒng)進(jìn)行語(yǔ)音錄制時(shí),語(yǔ)音信號(hào)通過語(yǔ)音輸入電路輸入給語(yǔ)音合成電路中的語(yǔ)音合成芯片,由語(yǔ)音合成芯片進(jìn)行數(shù)據(jù)處理,并將生成的數(shù)字語(yǔ)音信息存儲(chǔ)到語(yǔ)音存儲(chǔ)芯片中,從而建立語(yǔ)音庫(kù)。

部分電路的設(shè)計(jì)1.語(yǔ)音處理圖2.2方案二系統(tǒng)設(shè)計(jì)框圖2.2方案討論及確定ADC+MCU+DAC方案的特點(diǎn)是應(yīng)用比較靈活,可以實(shí)現(xiàn)很多語(yǔ)音壓縮處理等算法。專用語(yǔ)音芯片方案特點(diǎn)有使用方便的單片錄放系統(tǒng),外部元件最少,重現(xiàn)優(yōu)質(zhì)原聲,沒有常見的背景噪音,具有自動(dòng)節(jié)電模式等。由于畢業(yè)設(shè)計(jì)的主要目的是鞏固大學(xué)學(xué)過的知識(shí),培養(yǎng)綜合運(yùn)用所學(xué)的基礎(chǔ)知識(shí),提高學(xué)生獨(dú)立解決問題的能力,所以選擇第一種ADC+MCU+DAC方案

第三章單片機(jī)介紹3.1單片機(jī)簡(jiǎn)介3.1.1單片機(jī)概述單片微機(jī)(Single-ChipMicrocomputer)簡(jiǎn)稱單片機(jī),也有的叫做微處理(Micro-Processor簡(jiǎn)寫μP)或微控制器(Micro-Controller簡(jiǎn)寫μC),通常統(tǒng)稱微型處理部件(MicroControllerUnit簡(jiǎn)寫MCU)。一般的說,單片機(jī)就是在一塊硅片上集成CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器、和多種I/O的完整的數(shù)字處理系統(tǒng)。二十世紀(jì),微電子、IC集成電路行業(yè)發(fā)展迅速,其中單片機(jī)行業(yè)的發(fā)展最引人注目。單片機(jī)功能強(qiáng)、價(jià)格便宜、使用靈活,在計(jì)算機(jī)應(yīng)用領(lǐng)域中發(fā)揮著極其重要的作用。從INTEL公司于1971年生產(chǎn)第一顆單片機(jī)Intel-4004開始,開創(chuàng)了電子應(yīng)用的“智能化”新時(shí)代。單片機(jī)以其高性價(jià)比和靈活性,牢固樹立了其在嵌入式微控制系統(tǒng)中的“霸主”地位,在PC機(jī)以286、386、Pentium、PⅢ高速更新?lián)Q代的同時(shí),單片機(jī)卻“始終如一”保持旺盛的生命力。例如,MCS-51系列單片機(jī)已有十多年的生命期,如今仍保持著上升的態(tài)勢(shì)就充分證明了這一點(diǎn)。3.1.2單片機(jī)的結(jié)構(gòu)與組成目前,單片機(jī)的系統(tǒng)結(jié)構(gòu)有兩種類型:一種是將程序和數(shù)據(jù)存儲(chǔ)器分開使用,即哈佛(Harvard)結(jié)構(gòu),當(dāng)前的單片機(jī)大都是這種結(jié)構(gòu)。另一種是采用和PC機(jī)的馮.諾依曼(VonNeumann)類似的原理,對(duì)程序和數(shù)據(jù)存儲(chǔ)器不作邏輯上的區(qū)分,用來存放用戶程序,可分為EPROM、OTP、ROM和FLASH等類。EPROM型內(nèi)存編程后其內(nèi)容可用紫外線擦除,用戶可反復(fù)使用,故特別適用于開發(fā)過程,但EPROM型單片機(jī)價(jià)格很高。具有ROM型(掩膜型)內(nèi)存的單片機(jī)價(jià)格最低,它適用于大批量生產(chǎn)。由于ROM型單片機(jī)的代碼只能由生產(chǎn)廠商在制造芯片時(shí)寫入,故用戶要更改程序代碼就十分不便,在產(chǎn)品未成熟時(shí)選用ROM型單片機(jī)風(fēng)險(xiǎn)較高。OTP型(一次可編程)單片機(jī)介于EPROM和ROM型單片機(jī)之間,它允許用戶自己對(duì)其編程,但只能寫入一次。OTP型單片機(jī)生產(chǎn)多少完全可由用戶自己掌握,不存在ROM型有最小起訂量和掩膜費(fèi)問題,另外,該類單片機(jī)價(jià)格已同掩膜型十分接近,故特別受中小批量客戶的歡迎。Flash型(閃速型)單片機(jī)允許用戶使用編程工具或在線快速修改程序代碼,且可反復(fù)使用,故一推出就受到廣大用戶的歡迎。Flash型單片機(jī),即可用于開發(fā)過程,也可用于批量生產(chǎn),隨著制造工藝的改進(jìn),F(xiàn)lash型單片機(jī)價(jià)格不斷下降,使用越來越普遍,它已是現(xiàn)代單片機(jī)的發(fā)展趨勢(shì)。隨機(jī)內(nèi)存(RAM):用來存放程序運(yùn)行時(shí)的工作變量和數(shù)據(jù),由于RAM的制作工藝復(fù)雜,價(jià)格比ROM高得多,所以單片機(jī)的內(nèi)部RAM非常寶貴,通常僅有幾十到幾百個(gè)字節(jié)。RAM的內(nèi)容是易失性(也有的稱易揮發(fā)性)的,掉電后會(huì)丟失。最近出現(xiàn)了EEPROM或FLASH型的數(shù)據(jù)存儲(chǔ)器,方便用戶存放不經(jīng)常改變的數(shù)據(jù)及其它重要信息。單片機(jī)通常還有特殊寄存器和通用寄存器,它們是單片機(jī)中存取速度最快的內(nèi)存,但通常存儲(chǔ)空間很小。3.1.3中央處理器(CPU)是單片機(jī)的核心單元,通常由算術(shù)邏輯運(yùn)算部件ALU和控制部件構(gòu)成。CPU就象人的大腦一樣,決定了單片機(jī)的運(yùn)算能力和處理速度。并行輸入/輸出(I/O)口:通常為獨(dú)立的雙向口,任何口既可以用作輸入方式,又可以作輸出方式,通過軟件編程來設(shè)定?,F(xiàn)代的單片機(jī)的I/O口也有不同的功能,有的內(nèi)部具有上拉或下拉電阻,有的是漏極開路輸出,有的能提供足夠的電流可以直接驅(qū)動(dòng)外部設(shè)備。I/O是單片機(jī)的重要資源,也是衡量單片機(jī)功能的重要指針之一。串口輸入/輸出口:用于單片機(jī)和串行設(shè)備或其它單片機(jī)的通信。串行通信有同步和異步之分,這可以用硬件或通用串行收發(fā)器件來實(shí)現(xiàn)。不同的單片機(jī)可能提供不同標(biāo)準(zhǔn)的串行通信接口,如UART、SPI、I2C、MicroWire等。3.1.4定時(shí)器/計(jì)數(shù)器(T/C)單片機(jī)內(nèi)部用于精確定時(shí)或?qū)ν獠渴录ㄝ斎胄盘?hào)如脈沖)進(jìn)行計(jì)數(shù),有的單片機(jī)內(nèi)部有多個(gè)定時(shí)/計(jì)數(shù)器。3.1.5系統(tǒng)時(shí)鐘通常需要外接石英晶體或其它振蕩源來提供時(shí)鐘信號(hào)輸入,也有的使用內(nèi)部RC振蕩器。以上是單片機(jī)的基本構(gòu)成,現(xiàn)代的單片機(jī)又加入了許多新的功能部件,如模擬/數(shù)字轉(zhuǎn)換器(A/D)、數(shù)字/模擬轉(zhuǎn)換器(D/A)、溫度傳感器、液晶(LCD)驅(qū)動(dòng)電路、電壓監(jiān)控、看門狗(WDT)電路、低壓檢測(cè)(LVD)電路等等3.2單片機(jī)編程語(yǔ)言介紹對(duì)于51系列單片機(jī),現(xiàn)有四種語(yǔ)言支持,即匯編、PL/M,C和BASIC。BASIC通常附在PC機(jī)上,是初學(xué)編程的第一種語(yǔ)言。一個(gè)新變量名定義之后可在程序中作變量使用,非常易學(xué),根據(jù)解釋的行可以找到錯(cuò)誤而不是當(dāng)程序執(zhí)行完才能顯現(xiàn)出來。BASIC由于逐行解釋自然很慢,每一行必須在執(zhí)行時(shí)轉(zhuǎn)換成機(jī)器代碼,需要花費(fèi)許多時(shí)間不能做到實(shí)時(shí)性。BASIC為簡(jiǎn)化使用變量,所有變量都用浮點(diǎn)值。BASIC是用于要求編程簡(jiǎn)單而對(duì)編程效率和運(yùn)行速度要求不高的場(chǎng)合。PL/M是Intel從8080微處理器開始為其系列產(chǎn)品開發(fā)的編程語(yǔ)言。它很像PASCAL,是一種結(jié)構(gòu)化語(yǔ)言,但它使用關(guān)鍵詞去定義結(jié)構(gòu)。PL/M編譯器好像匯編器一樣可產(chǎn)生緊湊代碼。PL/M總的來說是“高級(jí)匯編語(yǔ)言”,可詳細(xì)控制著代碼的生成。但對(duì)51系列,PL/M不支持復(fù)雜的算術(shù)運(yùn)算、浮點(diǎn)變量而無豐富的庫(kù)函數(shù)支持。學(xué)習(xí)PL/M無異于學(xué)習(xí)一種新語(yǔ)言。C語(yǔ)言是一種源于編寫UNIX操作系統(tǒng)的語(yǔ)言,它是一種結(jié)構(gòu)化語(yǔ)言,可產(chǎn)生壓縮代碼。C語(yǔ)言結(jié)構(gòu)是以括號(hào){}而不是子和特殊符號(hào)的語(yǔ)言。C可以進(jìn)行許多機(jī)器級(jí)函數(shù)控制而不用匯編語(yǔ)言。與匯編相比,有如下優(yōu)點(diǎn):對(duì)單片機(jī)的指令系統(tǒng)不要求了解,僅要求對(duì)51的內(nèi)存結(jié)構(gòu)有初步了解寄存器分配、不同內(nèi)存的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù)。這種方式可使程序結(jié)構(gòu)化將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性編程及程序調(diào)試時(shí)間顯著縮短,從而提高效率提供的庫(kù)包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能將已編好程序可容易的植入新程序,因?yàn)樗哂蟹奖愕哪K化編程技術(shù)C語(yǔ)言作為一種非常方便的語(yǔ)言而得到廣泛的支持,C語(yǔ)言程序本身并不依賴于機(jī)器硬件系統(tǒng),基本上不做修改就可根據(jù)單片機(jī)不同較快地移植過來。51的匯編語(yǔ)言非常像其它匯編語(yǔ)言。指令系統(tǒng)比第一代微處理器要強(qiáng)一些。51的不同存儲(chǔ)區(qū)域使得其復(fù)雜一些。盡管懂得匯編語(yǔ)言不是你的目的,看懂一些可幫助你了解影響任何語(yǔ)言效率的51特殊規(guī)定。例如,懂得匯編語(yǔ)言指令就可以使用在片內(nèi)RAM作變量的優(yōu)勢(shì),因?yàn)槠庾兞啃枰獛讞l指令才能設(shè)置累加器和數(shù)據(jù)指針進(jìn)行存取。要求使用浮點(diǎn)和啟用函數(shù)時(shí)只有具備匯編編程經(jīng)驗(yàn)才能避免生成龐大的、效率低的程序,這需要考慮簡(jiǎn)單的算術(shù)運(yùn)算或先算好的查表法。最好的單片機(jī)編程者應(yīng)是由匯編轉(zhuǎn)用C而不是原來用過標(biāo)準(zhǔn)C語(yǔ)言的人。由此來看,單片機(jī)有著微處理器所不具備的功能,它可單獨(dú)地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。3.3系統(tǒng)單片機(jī)選擇本系統(tǒng)以MCS-51單片機(jī)成員中的AT89S52為控制核心。AT89S52是美國(guó)ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4kbytes的可系統(tǒng)編程的Flash只讀程序內(nèi)存,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序內(nèi)存既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價(jià)位AT89S52單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合,它靈活應(yīng)用于各種控制領(lǐng)域。主要性能參數(shù):(1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容(2)4K字節(jié)在系統(tǒng)編程(ISP)Flash閃速內(nèi)存(3)1000次擦寫周期(4)4.0-5.5V的工作電壓范圍(5)全靜態(tài)工作模式:0Hz—33MHz(6)三級(jí)程序加密鎖(7)2568字體內(nèi)部RAM(8)32個(gè)可編程I/O口線(9)3個(gè)16位定時(shí)/計(jì)數(shù)器(10)8個(gè)中斷源(11)全雙工串行UART通道(12)低功耗空閑和掉電模式(13)中斷可從空閑模喚醒系統(tǒng)(14)看門狗(WDT)及雙數(shù)據(jù)指針(15)掉電標(biāo)識(shí)和快速編程特性(16)靈活的在系統(tǒng)編程(ISP—字節(jié)或頁(yè)寫模式)其內(nèi)部結(jié)構(gòu)結(jié)構(gòu)如圖2.1所示:圖3.1單片機(jī)內(nèi)部結(jié)構(gòu)圖3.4看門狗電路由于單片機(jī)自身的抗干擾能力比較差,尤其在一些條件比較惡劣、噪聲大的場(chǎng)合,常會(huì)出現(xiàn)單片機(jī)因?yàn)槭芡饨绺蓴_而導(dǎo)致死機(jī)的現(xiàn)象,造成系統(tǒng)不能正常工作。設(shè)置看門狗是為了防止單片機(jī)死機(jī)、提高單片機(jī)系統(tǒng)抗干擾性的一種重要途徑。一個(gè)完整的單片機(jī)應(yīng)用系統(tǒng)應(yīng)該是一個(gè)軟、硬件的結(jié)合體,在系統(tǒng)正常工作時(shí),會(huì)受到各種外界干擾因素的影響。這種外界干擾輕者導(dǎo)致系統(tǒng)內(nèi)部數(shù)據(jù)出錯(cuò),重者將嚴(yán)重影響程序的運(yùn)行。因此單片機(jī)應(yīng)用系統(tǒng)的開發(fā)一定要考慮系統(tǒng)可靠性的設(shè)計(jì),以滿足系統(tǒng)在現(xiàn)場(chǎng)苛刻環(huán)境下的正常運(yùn)行,而“看門狗”則是系統(tǒng)可靠性設(shè)計(jì)的重要一環(huán)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,所謂的“看門狗”是指在系統(tǒng)設(shè)計(jì)中通過軟件或硬件方式在一定的周期內(nèi)監(jiān)控單片機(jī)或其它CPU的運(yùn)行情況。如果在規(guī)定的時(shí)間內(nèi)沒有收到來自單片機(jī)或其它CPU的觸發(fā)信號(hào),則系統(tǒng)會(huì)強(qiáng)制復(fù)位,以保證系統(tǒng)在受到干擾時(shí)仍能夠維持正常的工作狀態(tài)。在單片機(jī)系統(tǒng)中,看門狗的設(shè)計(jì)一般采用硬件和軟件結(jié)合兩種方式。3.4.1軟件看門狗軟件看門狗是利用單片機(jī)片內(nèi)閑置的定時(shí)器/計(jì)數(shù)器單元作為看門狗,在單片機(jī)程序中適當(dāng)?shù)牟迦氡O(jiān)控指令,當(dāng)程序出現(xiàn)異?;蜻M(jìn)入死循環(huán)時(shí),利用軟件將程序計(jì)數(shù)器PC賦予初始值,強(qiáng)制性的使程序重新開始運(yùn)行。使用軟件看門狗的具體實(shí)現(xiàn)方法如下。1.首先在初始化程序中設(shè)置好定時(shí)器/計(jì)數(shù)器的方式控制寄存器(TMOD)

和定時(shí)時(shí)間的初值,并開中斷。2.根據(jù)定時(shí)器的定時(shí)時(shí)間,在主程序中按一定的間隔插入復(fù)位定時(shí)器的指令,既插入監(jiān)控指令,兩條指令間的時(shí)間間隔應(yīng)該小于定時(shí)時(shí)間,否則看門狗將發(fā)生錯(cuò)誤動(dòng)作。3.在定時(shí)器的中斷服務(wù)程序中設(shè)置一條無條件轉(zhuǎn)移指令,將程序計(jì)數(shù)器PC轉(zhuǎn)移到初始化程序的入口。軟件看門狗的最大特點(diǎn)是無須外加硬件電路,經(jīng)濟(jì)性好。當(dāng)然,如果片內(nèi)的定時(shí)器/計(jì)數(shù)器被占用,就需要尋求其它的設(shè)計(jì)方式了。3.4.2硬件看門狗專用硬件看門狗是指一些集成化的或集成在單片機(jī)內(nèi)的專用看門狗電路,它實(shí)際上是一個(gè)特殊的定時(shí)器,當(dāng)定時(shí)時(shí)間到時(shí),發(fā)出溢出脈沖。從實(shí)現(xiàn)角度上看,該方式是一種軟件與片外專用電路相結(jié)合的技術(shù),硬件電路連接好后,在程序中適當(dāng)?shù)夭迦胍恍┛撮T狗復(fù)位的指令,保證程序正常運(yùn)行時(shí)看門狗不溢出。而當(dāng)程序運(yùn)行異常時(shí),看門狗超時(shí)發(fā)出溢出脈沖,通過單片機(jī)的RESET引腳使單片機(jī)復(fù)位。這種方式中,看門狗能否可靠有效地工作,與硬件組成及軟件的控制策略都有密切的關(guān)系。目前常用的集成看門狗電路很多,如MAX705-708、MAX813L、X5043/5045等??撮T狗電路可以分為內(nèi)看門狗和外看門狗。看門狗電路是指看門狗的硬件電路包含在單片機(jī)內(nèi)部,如Microchip的16C5x系列,MOTOROLA的68C05系列,51內(nèi)核中比較典型的有Atmel公司的AT89C55WD、AT89S8252,Winbond公司的W77E58,SST公司的SST89C58以及Philips公司87系列的多種型號(hào)的單片機(jī)等。對(duì)于沒有看門狗定時(shí)器的單片機(jī)或是認(rèn)為內(nèi)部看門狗不可靠時(shí),可以采用外部看門狗定時(shí)器。外部看門狗電路既可以用專用看門狗芯片,也可由普通芯片實(shí)現(xiàn)。3.5AT89S52引腳功能介紹1.電源引腳Vcc和GNDVcc:電源電壓,GND(10腳):接地端。2.時(shí)鐘電路引腳XTALl和XTAL2。XTAL2(18腳):接外部晶體和微調(diào)電容的一端。在內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體的固有頻率。要檢查單片機(jī)的振蕩電路是否正確工作,可用示波器查看XTAL2端是否有脈沖信號(hào)輸出。XTAL1(19腳):接外部晶體的微調(diào)電容的另一端。在片內(nèi)它是振蕩電路反相放大器的輸入端。若需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖如圖2.2,2.3所示:圖3.2AT89S51單片機(jī)晶振接法3.控制信號(hào)引腳RSTRES(8腳)“RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),可以完成復(fù)位操作。圖3.3外部時(shí)鐘電路4.I/O(輸入/輸出)P0、P1、P2和P3標(biāo)準(zhǔn)51單片機(jī),如8051、8031、AT89C51、AT89S51、P89C51等有4個(gè)I/O(輸入/輸出)口,分別為:P0口(39—32腳):P0口是一個(gè)漏極開路的8位雙向埠。作為漏極八路的輸出端口,每次能驅(qū)動(dòng)8個(gè)Ls型TTL負(fù)載。當(dāng)P0口作為輸入口使用時(shí),其先向鎖存器(地址80H)寫入全1,此時(shí)P0口的全部引腳懸空,叫作為高阻抗輸入。P1口(1—8腳):P1口是一個(gè)帶上拉電阻的8位準(zhǔn)雙向I/O端口每一位能驅(qū)動(dòng)(吸收成輸出電流)4個(gè)LS型TTL負(fù)載。在P1口作為輸入口使用時(shí),應(yīng)先向P1口鎖存器(地址90H)寫入全1,上拉電阻接成高電平。P2口(21—28腳):P2口是一個(gè)帶內(nèi)部上接電阻的8位準(zhǔn)雙向埠。P2口的每一位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口(21—28腳):P3口是一個(gè)帶內(nèi)部上接電阻的8位準(zhǔn)雙向埠。P3口的每一位能驅(qū)動(dòng)(吸收或輸出電流)4個(gè)LS型TTL負(fù)載。P3口與其它的I/O埠有很大區(qū)別,它除作為—般準(zhǔn)雙向I/O口外,每個(gè)引腳還具有專門的功能,見表3-1。表3-1端口引腳功能P1口也是一個(gè)準(zhǔn)雙向口,作通用I/O口使用。其電路結(jié)構(gòu)見圖3.4圖3.4P1口作通用I/O口使用輸出驅(qū)動(dòng)部分內(nèi)部有上拉負(fù)載電阻與電源相連。實(shí)質(zhì)上拉電阻是兩個(gè)場(chǎng)效應(yīng)管(FET)并在一起,—個(gè)FET為負(fù)載管,其電阻固定;另一個(gè)FET可工作在導(dǎo)通或截止兩種狀態(tài),使其總電阻值變化近為0或阻值很大兩種情況。當(dāng)阻值近似為0時(shí),可將引腳快速上拉至全高電平,當(dāng)阻值很大時(shí),P1口為高阻輸入狀態(tài)。當(dāng)P1口輸出高電平時(shí),能向外提供拉電流負(fù)載,所以不必再接上拉電阻。在埠用作輸入時(shí),也必須先向?qū)?yīng)的鎖存器寫入“1”,使FET截止。由于片內(nèi)負(fù)載電阻較大,約20k—3.6定時(shí)器0和1使用定時(shí)和計(jì)數(shù)功能由特殊功能寄存器TMOD的控制位C/T進(jìn)行選擇。這兩個(gè)定時(shí)/計(jì)數(shù)器有4種操作模式,通過TMOD的M1和M0選擇兩個(gè)定時(shí)/計(jì)數(shù)器的模式0、1和2都相同。模式3不同如下所述模式模式0將定時(shí)器設(shè)置成模式0時(shí)類似8048定時(shí)器,即8位計(jì)數(shù)器帶32分頻的預(yù)分頻器。圖3.5所示為模式0工作方式。此模式下定時(shí)器寄存器配置為13位元寄存器,當(dāng)計(jì)數(shù)從全為1翻轉(zhuǎn)為全為0時(shí)定時(shí)器中斷標(biāo)志位TFn置位。當(dāng)TRn=1同時(shí)GATE=0或INTn=1時(shí)定時(shí)器計(jì)數(shù)置位GATE時(shí)允許由外部輸入。INTn控制定時(shí)器,這樣可實(shí)現(xiàn)脈寬測(cè)量,TRn為TCON寄存器內(nèi)的控制位圖3。模式0的操作對(duì)于定時(shí)器0及定時(shí)器1都是相同的兩個(gè)不同的GATE位,TMOD.7和TMOD.3分別分配給定時(shí)器0及定時(shí)器1。圖3.5定時(shí)器/計(jì)數(shù)器/0/1的模式0:13定時(shí)器/計(jì)數(shù)器模式1模式1除了使用了THn及TLn全部16位元外其它與模式0相同。模式2此模式下定時(shí)器寄存器作為可自動(dòng)重裝的8位計(jì)數(shù)器TLn。如圖3.6所示,TLn的溢出不僅置位TFn,而且將THn內(nèi)容重新裝入TLnTHn。內(nèi)容由軟件預(yù)置重裝時(shí),THn內(nèi)容不變。模式2的操作對(duì)于定時(shí)器0及定時(shí)器1是相同的。圖3.6定時(shí)器寄存器模式3在模式3中定時(shí)器1停止計(jì)數(shù)效果與將TR1設(shè)置為0相同.此模式下定時(shí)器0的TL0及TH0作為兩個(gè)獨(dú)立的8位計(jì)數(shù)器圖3.7為模式3時(shí)的定時(shí)器0邏輯TL0占用定時(shí)器0的控制位C/T、GATE、TR0、INT0及TF0。TH0限定為定時(shí)器功能計(jì)數(shù)器周期占用定時(shí)器1的TR1及TF1此時(shí)TH0控制定時(shí)器1中斷。模式3可用于需要一個(gè)額外的8位定時(shí)器的場(chǎng)合定時(shí)器0工作于模式3時(shí)80C51看似有3個(gè)定時(shí)器/計(jì)數(shù)器當(dāng)定時(shí)器0工作于模式3時(shí)定時(shí)器1可通過開關(guān)進(jìn)入/退出模式3,它仍可用作串行端口的波特率發(fā)生器或者應(yīng)用于任何不要求中斷的場(chǎng)合。圖3.7定時(shí)器/計(jì)數(shù)器/0/1的模式3:雙8位計(jì)數(shù)器

第四章硬件設(shè)計(jì)4.1單片機(jī)系統(tǒng)硬件的設(shè)計(jì)本設(shè)計(jì)單片機(jī)選用合適的51系列單片機(jī)為系統(tǒng)核心,加以數(shù)碼管、電阻、電容、晶振、按鍵開關(guān)等器件做其外圍電路。4.1.1單片機(jī)最小系統(tǒng)51單片機(jī)選用AT89S52。單片機(jī)及外圍電路如圖4.1。圖4.1單片機(jī)及外圍電路對(duì)于AT89S52單片機(jī),其最小系統(tǒng)只需要電源、上電復(fù)位電路、時(shí)鐘電路就能工作。由于我們的程序存儲(chǔ)器(ROM)采用內(nèi)部Flash存儲(chǔ)單元,所以單片機(jī)上的EA接高。時(shí)鐘電路的晶振采用12M的晶振,它由JZ、兩個(gè)33pF電容和單片機(jī)內(nèi)部的OSC電路組成,為單片機(jī)提供12MHz的時(shí)鐘信號(hào)源。微處理器系統(tǒng)在開始工作時(shí)必須對(duì)微處理器內(nèi)部的寄存器等進(jìn)行復(fù)位,使各個(gè)寄存器的值設(shè)為預(yù)定狀態(tài)才能順利開始工作。復(fù)位電路的好壞決定著單片機(jī)能否正常工作。復(fù)位電路基本功能是在系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)過一定的延時(shí)才撤銷復(fù)位信號(hào),主要是防止由于電源開關(guān)或插頭分合過程中引起的抖動(dòng)。復(fù)位電路可以使用專用復(fù)位芯片,也可以用電阻電容搭建。本文從可靠性和成本考慮最終選用電阻電容來搭建復(fù)位電路。對(duì)于51內(nèi)核的單片機(jī),RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),可以完成復(fù)位操作。當(dāng)單片機(jī)加電時(shí)由于RC充電的效果,使得復(fù)位腳保持一會(huì)高電平使單片機(jī)內(nèi)部寄存器徹底復(fù)位。 74HC573為地址鎖存器,51單片機(jī)的低8位地址總線地址是和數(shù)據(jù)總線復(fù)用的,而RAM的地址總線地址和數(shù)據(jù)總線是分開的,所以要用地址鎖存器把低8位地址和數(shù)據(jù)分開,常用的地址鎖存器有74LS/HC373和74LS/HC573,這里選用74HC573。4.1.2供電電路圖設(shè)計(jì) 單片機(jī)系統(tǒng)供電需要+5V電壓,而音頻放大器需要+12V和-12V雙電源供電。所以本系統(tǒng)需要三組電源,如圖4.2所示。圖4.2單片機(jī)供電電路圖4.1.3鍵盤電路設(shè)計(jì)鍵盤是標(biāo)準(zhǔn)的輸入設(shè)備,實(shí)現(xiàn)鍵盤有兩種方案:一是采用現(xiàn)有的一些芯片實(shí)現(xiàn)鍵盤掃描,如8279,CH451,LMC9768等,還有就是用軟件實(shí)現(xiàn)鍵盤掃描。使用現(xiàn)成的芯片可以節(jié)省CPU的開銷,但增加了成本,而用軟件實(shí)現(xiàn)具有較強(qiáng)的靈活性,也只需要很少的CPU開銷,可以節(jié)省開發(fā)成本。本文便使用軟件實(shí)現(xiàn)鍵盤的掃描。常見的鍵盤可分為獨(dú)立按鍵式鍵盤和行列掃描式鍵盤。獨(dú)立按鍵式鍵盤應(yīng)用在需要少量按鍵的情況,按鍵和單片機(jī)的I/O口線直接連接。而行列掃描式鍵盤用在按鍵需求較多的情形下??紤]到血壓計(jì)面向大多數(shù)人群,需操作簡(jiǎn)單,所以采用獨(dú)立按鍵式鍵盤。獨(dú)立式鍵盤電路如圖4.3所示。其中P10、P11、P12、P13為51單片機(jī)的IO口。圖4.3按鍵電路圖理論上當(dāng)按鍵按下或彈起時(shí),可以相應(yīng)的產(chǎn)生低電平或高電平,但實(shí)際并非如此。鍵盤按鍵一般都采用觸點(diǎn)式按鍵開關(guān)。當(dāng)按鍵被按下或釋放時(shí),按鍵觸點(diǎn)的彈性會(huì)產(chǎn)生抖動(dòng)現(xiàn)象。即當(dāng)按鍵按下時(shí),觸點(diǎn)不會(huì)迅速可靠地接通,當(dāng)按鍵釋放時(shí),觸點(diǎn)也不會(huì)立即斷開,而是要經(jīng)過一段時(shí)間的抖動(dòng)刁才能穩(wěn)定下來,按鍵材料不同,抖動(dòng)時(shí)間也各不相同。按鍵抖動(dòng)可能導(dǎo)致單片機(jī)將一次按鍵操作識(shí)別為多次操作,一般采用硬件電路或軟件程序來消除。圖4.4按鍵抖動(dòng)示意圖一次完整的按鍵過程,如圖4.4所示,包含以下幾個(gè)階段。1、等待階段:此時(shí)按鍵尚未按下,處于空閑階段;2、閉合抖動(dòng)階段:此時(shí)鍵剛剛按下,但信號(hào)處于抖動(dòng)狀態(tài),系統(tǒng)在檢測(cè)時(shí)應(yīng)消抖延時(shí),約5ms到20ms;3、有效閉合階段:此時(shí)抖動(dòng)己經(jīng)結(jié)束,一個(gè)有效按鍵動(dòng)作己經(jīng)產(chǎn)生,系統(tǒng)應(yīng)該在此時(shí)執(zhí)行按鍵功能,或?qū)存I編碼記錄下來,待鍵彈起時(shí)再執(zhí)行其功能;4、釋放抖動(dòng)階段:許多時(shí)候編程人員并不在此時(shí)消抖延時(shí),但最好也執(zhí)行一次消抖延時(shí),以防止誤操作;5、有效釋放階段:若設(shè)計(jì)要求在按鍵抬起時(shí)才執(zhí)行功能,則應(yīng)當(dāng)在此時(shí)進(jìn)行按鍵功能的處理。按鍵擊鍵的類型有多種劃分方式:按擊鍵時(shí)間分:短擊和長(zhǎng)擊;按擊鍵次數(shù)分:?jiǎn)螕艉瓦B擊;按特殊功能分:雙擊或組合鍵等。功能分析如下:(1)短擊,用戶快速按下單個(gè)按鍵,然后立即釋放;(2)長(zhǎng)擊,用戶長(zhǎng)時(shí)間按下一個(gè)按鍵。如某些重要的功能鍵,復(fù)位,為防止用戶誤操作;(3)連擊,實(shí)現(xiàn)連續(xù)操作效果,如連續(xù)加1或減1;(4)復(fù)合按鍵,用戶同時(shí)按下兩個(gè)或多個(gè)按鍵,實(shí)現(xiàn)某些特殊功能;(5)無鍵按下,當(dāng)用戶在一定時(shí)間內(nèi)未按任何按鍵,執(zhí)行某些特殊的操作,如自動(dòng)進(jìn)入待機(jī)態(tài)或節(jié)能態(tài)。從單片機(jī)串口輸出的信號(hào)先送到左邊的移位寄存器(74HC164),由于移位脈沖的作用,使數(shù)據(jù)向右移,達(dá)到顯示的目的。移位寄存器74HC164還兼作數(shù)碼管的驅(qū)動(dòng),如圖4.5所示。圖4.5數(shù)碼管顯示電路4.1.4存儲(chǔ)器設(shè)計(jì)存儲(chǔ)器采用2片32k*8的RAMHY62256組成,如圖,其中U9的地址空間為0000H-7FFFH,U10的地址空間為8000H-0FFFFH,使用U10時(shí),單片機(jī)IO口P3.3必須為高,P3.3為低時(shí)選中的是ADC,與非門輸出高,U10無效。如圖4.6所示。圖4.6儲(chǔ)存器電路4.2模擬音頻電路設(shè)計(jì)4.2.1MIC電路設(shè)計(jì)MIC采用駐機(jī)體MIC,當(dāng)駐極體話筒MIC拾到微弱聲音信號(hào)以后,便在MIC兩端產(chǎn)生信號(hào)電流,R42將信號(hào)電流轉(zhuǎn)裝換成電壓信號(hào),經(jīng)過電容器C17、C18耦合到運(yùn)算放大器的進(jìn)行放大。MIC工做時(shí)需要偏壓MICBISE。這里用VREF作為MICBISE,R35、E5組成RC低通濾波器,為MIC提供比較干凈的偏壓。4.2.2放大濾波電路設(shè)計(jì)放大器采用運(yùn)算過放大器組成的差分放大器,這樣能有效地避免干擾,提高信噪比,運(yùn)放采用被發(fā)燒友稱作“運(yùn)放皇”通用音頻運(yùn)放NE5532,其噪聲低,價(jià)格便宜。放大器的放大倍數(shù)設(shè)為20倍,調(diào)試時(shí)可適當(dāng)調(diào)整放大倍數(shù)使音量合適。圖4.8中右邊的放大器組成低通濾波器。圖4.8放大濾波電路設(shè)計(jì)由于語(yǔ)音信號(hào)的帶寬為200Hz-3400HZ,涉及頻譜混疊現(xiàn)象,低通濾波器的過渡帶衰必須較快。我們采用有源二階濾波器的方案.4.2.3ADC設(shè)計(jì)ADC采用通用ADC0809,ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接接口。(1)ADC0809的內(nèi)部邏輯結(jié)構(gòu)如圖4.9。圖4.9ADC0809的內(nèi)部邏輯結(jié)構(gòu)ADC0809由一個(gè)8路模擬開關(guān)、一個(gè)地址鎖存與譯碼器、一個(gè)A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。IN0-IN7:為8條模擬量輸入通。ADC0809地址輸入和控制線:4條。ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),地址鎖存與譯碼器將A,B,C三條地址線的地址信號(hào)進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。ST為轉(zhuǎn)換啟動(dòng)信號(hào)。當(dāng)ST上跳沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。EOC為轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號(hào),用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0為數(shù)字量輸出線。CLK為時(shí)鐘輸入信號(hào)線。因ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)必須由外界提供,通常使用頻率為500KHZADC與51單片機(jī)接口如圖4.10,由于只采用1個(gè)通道,這里選用IN-0,所以三個(gè)地址線全接地。時(shí)鐘信號(hào)采用單片機(jī)輸出的ALE,為2MHz。ADC0809對(duì)輸入模擬量要求:信號(hào)單極性,電壓范圍是0-5V,若信號(hào)太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。前邊放大器其輸出的信號(hào)為雙極性,這里R45、R46實(shí)現(xiàn)雙極性到單極性轉(zhuǎn)換。圖4.10ADC與51單片機(jī)接口電路圖ADC的片選采用單片機(jī)IO口P3.3,當(dāng)P3.3為低時(shí)有效。4.2.4DAC設(shè)計(jì)DA轉(zhuǎn)換器的作用是將存儲(chǔ)的數(shù)字語(yǔ)音信號(hào)轉(zhuǎn)換為模擬語(yǔ)音信號(hào),由于一般的DA轉(zhuǎn)換器都能達(dá)到1us的轉(zhuǎn)換速率,足夠滿足題目的要求,故我們?cè)诖诉x用了通用DA轉(zhuǎn)換器DAC0832。DI0~DI7:數(shù)據(jù)輸入線,TLL電平。ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效。CS:片選信號(hào)輸入線,低電平有效。WR1:為輸入寄存器的寫選通信號(hào)。XFER:數(shù)據(jù)傳送控制信號(hào)輸入線,低電平有效。WR2:為DAC寄存器寫選通輸入線。Iout1:電流輸出線。當(dāng)輸入全為1時(shí)Iout1最大。Iout2:電流輸出線。其值與Iout1之和為一常數(shù)。Rfb:反饋信號(hào)輸入線,芯片內(nèi)部有反饋電阻。Vcc:電源輸入線(+5v~+15v)Vref:基準(zhǔn)電壓輸入線(-10v~+10v)AGND:模擬地,摸擬信號(hào)和基準(zhǔn)電源的參考地。DGND:數(shù)字地,兩種地線在基準(zhǔn)電源處共地比較好。其與單片機(jī)連接方式如圖4.11,片選采用單片機(jī)IO口P3.2,當(dāng)P3.2為低時(shí)有效。圖4.11DAC與單片機(jī)連接方式4.2.5音頻功率放大器設(shè)計(jì)經(jīng)帶DAC輸出的聲音回放信號(hào),其幅度為0-5v,足以用耳機(jī)來收聽,可不接任何放大器。但考慮到實(shí)際中經(jīng)常會(huì)用到喇叭外放,故在本系統(tǒng)中增加外放功能,前端放大器采用通用型音頻功率放大器LM386來完成。電路如圖4.12。該電路增益為50—200,連續(xù)可調(diào),最大大不失真輸出功率為325mw。輸出端接C4、R9串聯(lián)電路,以校正喇叭的頻率特性,防止高頻自激。腳7接220uF去耦電容,以消除低頻自激。為便于該功故在高增益情況下工作.這里將不使用的輸入端腳2對(duì)地短路。圖4.12音頻放大電路設(shè)計(jì)

第五章軟件設(shè)計(jì)本設(shè)計(jì)軟件采用C語(yǔ)言設(shè)計(jì)。5.1KeilC51簡(jiǎn)介1.對(duì)于8051單片機(jī),現(xiàn)有四種語(yǔ)言支持,即匯編、FI/M、C和BASIC.C是一種源于編寫UNIx操作系統(tǒng)的語(yǔ)言,它是一種結(jié)構(gòu)化語(yǔ)言,可產(chǎn)生緊湊代碼.C結(jié)構(gòu)是以括號(hào)()而不是字和特殊符號(hào)的語(yǔ)言.C可以進(jìn)行許多機(jī)器級(jí)函數(shù)控制而不用匯編語(yǔ)言.與匯編相比,有如下優(yōu)點(diǎn):(1)對(duì)單片機(jī)的指令系統(tǒng)不要求了解,僅要求對(duì)8051的存貯器結(jié)構(gòu)有初步了解(2)寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;(3)程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),這種方式可使程序結(jié)構(gòu)化;(4)具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;(5)關(guān)鍵字及運(yùn)算函數(shù)可用近似人的思維過程方式使用;(6)編程及程序調(diào)試時(shí)間顯著縮短,從而提高效率;(7)提供的庫(kù)包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力;(8)已編好程序可容易地植入新程序,因?yàn)樗哂蟹奖愕哪K化編程技術(shù).8051系列單片機(jī)作為工業(yè)標(biāo)準(zhǔn)地位,從1985年開始就有8051單片機(jī)的C語(yǔ)言編譯器。簡(jiǎn)稱C51。C51程序結(jié)構(gòu)與一般C語(yǔ)言沒有什么差別.一個(gè)C51程序大體上是一個(gè)函數(shù)定義的集合,在這個(gè)集合中有僅有一個(gè)名為main的函數(shù)(主函數(shù)).主函數(shù)是程序的入口,主函數(shù)中的所有語(yǔ)句執(zhí)行完畢,則程序執(zhí)行結(jié)束.C5l提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型的形式出現(xiàn)的,C51的數(shù)據(jù)類型如下所示:我們最常用的KeilC5l編譯器具體支持的數(shù)據(jù)類型有:位型(bit)、無符號(hào)字符(unsignedchar)、有符號(hào)字符(signedchar)、無符號(hào)整型(unsignedint)、有符號(hào)整型(signedint)、無符號(hào)長(zhǎng)型(unsignedlong)、有符號(hào)長(zhǎng)型(signedlong)、浮點(diǎn)(float)和指針類型等。2.C51數(shù)據(jù)的存貯類型與805l存貯器結(jié)構(gòu):KeilC51編譯器完全支持8051單片機(jī)的硬件結(jié)構(gòu),可完全訪問8051硬件系統(tǒng)的所有部分.該編譯器通過將變量、常量定義成不同的存貯類型(data,Nata,idata,pdata,xdata,code)的方法,將它們定位在不同的存貯區(qū)中。存貯類型與8051單片機(jī)實(shí)際存貯空間的對(duì)應(yīng)關(guān)系如表5-1所示。表5-1存貯類型與存貯空間的對(duì)應(yīng)關(guān)系當(dāng)使用存貯類型data,Nata定義常量和變量時(shí),C5l編譯器會(huì)將它們定位在片內(nèi)數(shù)據(jù)存貯區(qū)中(片內(nèi)RAM),這個(gè)存貯區(qū)根據(jù)8051單片機(jī)CPU的型號(hào)不同,其長(zhǎng)度分別為64,128,256或512字節(jié).以今天的標(biāo)準(zhǔn)來看,這個(gè)存貯區(qū)不很大,但它能快速收發(fā)各種數(shù)據(jù).外部數(shù)據(jù)存貯器從物理上講屬于單片機(jī)的一個(gè)組成部分,但用這種存貯器存放數(shù)據(jù),在使用前必須將它們移到片內(nèi)數(shù)據(jù)存貯區(qū)中.片內(nèi)數(shù)據(jù)存貯區(qū)是存放臨時(shí)性傳遞變量或使用頻率較高的變量的理想場(chǎng)所.為了能直接訪問這些特殊功能寄存器SFR,KeilC51提供了一種自主形式的定義方法,這種定義方法與標(biāo)準(zhǔn)C語(yǔ)言不兼容,只適用于對(duì)8051系列單片機(jī)進(jìn)行C編程.這種定義的方法是引入關(guān)鍵字“sfr”,語(yǔ)法如下:例:sfrSCON=0x98;/*串口控制寄存器地址98H*/sfrTMOD=0x89;/*定時(shí)/計(jì)數(shù)器模式控制寄存器地址89H*/在典型的8051應(yīng)用問題中,經(jīng)常需要單獨(dú)訪問SFR中的位,C51的擴(kuò)充功能使之成為可能。特殊位(sbit)的定義,像SFR一樣不與標(biāo)推C兼容,使用關(guān)鍵字“sbit”可以訪問。位尋址對(duì)象。例:sbitCY=PSW^7;\*定義CY位為PSW.7地址為0xD7,*\sbitbeep=P3.^6;\*定義位變量beep為I/OP3.6*\5.2主程序流程圖5.3各個(gè)模塊程序介紹5.3.1鍵盤子程序設(shè)計(jì)本設(shè)計(jì)硬件電路的輸入采用4個(gè)按鍵,具體程序?yàn)椋篣nsignedchargetkey(void){ucharkeytmp;P1=0xff;keytmp=~(P1)&0xff;if(keytmp==0){km=0;kp=0;}//nokeyisONelse//anykeyisON { if(km==0) km=1; //置按鍵抖動(dòng)標(biāo)志else //按鍵已去抖 {if(kp==0) //按鍵沒有處理,下面是按鍵處理代碼 //置按鍵處理標(biāo)志 {kp=1; return(keytmp); } } }return0;}5.3.2顯示子程序//串行LED碼表codeunsignedcharled[]={0xfc,0x60,0xda,0xf2,0x66,//0~40xb6,0xbe,0xe0,0xfe,0xf6,//5~90x9e,0x2a,0x7a,//End 0x00};//Space //===================顯示========================= voidmputchar(charx){SBUF=led[x];while(TI==0);TI=0;}voidDisplay(longintx)//功能:將變量在3位串行顯示器上顯示出來{unsignedchary,zf=0,qian;x=60*30000/x;//將周期換算為頻率,需修正y=x%10;mputchar(y);x=x/10;y=x%10; qian=qian/10; if(qian==0&&y==0) mputchar(0x0d); elsemputchar(y); if(qian==0) mputchar(0x0d); elsemputchar(qian);}5.3.3ADC子程序設(shè)計(jì)#defineADC0809XBYTE[0x08000]//P3.3=0P33=0;//片選選擇ADC buff=ADC0809;//讀數(shù)據(jù) P33=1;//片選選擇RAM *p=buff;//存儲(chǔ)數(shù)據(jù)5.3.4DAC子程序設(shè)計(jì)P32=1; buff=*p;//讀存儲(chǔ)器數(shù)據(jù) P32=0;//片選選擇DAC DAC0832=buff;//將數(shù)據(jù)送至DAC,進(jìn)行DA變換 P32=1;5.3.5定時(shí)中斷服務(wù)子程序本設(shè)計(jì)語(yǔ)音采樣率為8KHz,采用單片機(jī)定時(shí)器產(chǎn)生8k的采樣時(shí)序,和播放時(shí)DAC的轉(zhuǎn)換時(shí)序。定時(shí)器初始化:TMOD=0X01;//設(shè)置定時(shí)器0TH0=0XFF;//定時(shí)時(shí)間設(shè)為0.128ms,8k/s采樣率TL0=0X82;EA=1;//開總中斷ET0=1;TR0=1;//定時(shí)計(jì)數(shù)起開始計(jì)數(shù)定時(shí)中斷服務(wù)子程序:timer0()interrupt1using1{uintbuff;if(RECORD) {P33=0; buff=ADC0809; P33=1; *p=buff; }if(PLAY) {P32=1; buff=*p; P32=0; DAC0832=buff; P32=1; }p++;TH0=0XFF;TL0=0X82;TR0=1;}致謝通過本次畢業(yè)設(shè)計(jì),我在指導(dǎo)老師*****教授的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力,并對(duì)當(dāng)前電子領(lǐng)域的研究狀況和發(fā)展方向有了一定的了解,單片機(jī)領(lǐng)域這對(duì)我今后進(jìn)一步學(xué)習(xí)計(jì)算機(jī)方面的知識(shí)有極大的幫助。另外,此次畢業(yè)設(shè)計(jì)還獲得了*******各位領(lǐng)導(dǎo)和老師的大力支持。在此,我忠心感謝*****老師以及******同學(xué)的指導(dǎo)和幫助。在未來的工作和學(xué)習(xí)中,我將以更好的成績(jī)來回報(bào)各位領(lǐng)導(dǎo)和老師。

參考文獻(xiàn)[1]楊文龍編.《單片機(jī)原理及應(yīng)用》.西安:西安電子科技大學(xué)出版社,2000[2]馬忠梅等.《單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)》.北京航空航天大學(xué)出版社,1997[3]ATMLE8-BitMicrocontrollerAT89S52DATESHEET.0368D-B–12/97[4]路勇,高文煥主編.《電子電路實(shí)驗(yàn)及仿真》.北京:清華大學(xué)出版社,1999[5]SCM1602LCM使用說明書。長(zhǎng)沙太陽(yáng)人電子有限公司。[6]馮建華,單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與產(chǎn)品開發(fā),人民郵電出版社,2004[7]周立功,DP668使用說明文檔,廣州周立功單片機(jī)發(fā)展有限公司,2003[8]StuartBall,嵌入式微處理器系統(tǒng)設(shè)計(jì)實(shí)例,電子工業(yè)出版社,2004《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)說明書設(shè)計(jì)題目:基于AT89C52單片機(jī)的音樂盒的設(shè)計(jì)學(xué)院:專業(yè)班級(jí):設(shè)計(jì)者:學(xué)號(hào):指導(dǎo)老師:

目錄摘要…………………4概述……………5音樂盒的發(fā)音原理……………62.1播放音樂的原理……………62.2音符頻率的產(chǎn)生……………62.3節(jié)拍頻率的產(chǎn)生……………8硬件電路設(shè)計(jì)…………………93.1硬件電路……………………93.2整體硬件電路………………103.3原理說明…………………103.4鍵盤按鍵…………………10軟件設(shè)計(jì)………114.1程序設(shè)計(jì)流程………………114.2設(shè)計(jì)源程序代碼……………12仿真及調(diào)試……………………165.1調(diào)試………165.2仿真………165.3程序調(diào)試中出現(xiàn)的問題及解決的辦法………17設(shè)計(jì)小結(jié)………18

附錄元件清單…………………19

基于AT89C52單片機(jī)的音樂盒的設(shè)計(jì)【摘要】:隨著人類社會(huì)的發(fā)展,人們對(duì)視覺、聽覺方面的享受提出了越來越高的要求。小小的音樂盒可以給人們帶來美好的回憶,提高人們的精神文化享受。傳統(tǒng)的音樂盒多是機(jī)械型的,體積笨重,發(fā)音單調(diào),不能實(shí)現(xiàn)批量生產(chǎn)。本文設(shè)計(jì)的音樂盒是以單片機(jī)為核心元件的電子式音樂盒,體積小,重量輕,能演奏和旋音樂,功能多,使用方便,可以批量生產(chǎn),具有一定的商業(yè)價(jià)值?!娟P(guān)鍵詞】:音樂盒;單片機(jī)

概述傳統(tǒng)的音樂盒多是機(jī)械音樂盒,其工作原理是通過齒輪帶動(dòng)一個(gè)帶有鐵釘?shù)蔫F桶轉(zhuǎn)動(dòng),鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機(jī)械音樂盒放音時(shí)為了讓音色穩(wěn)定,必須放平不能動(dòng)搖,而且價(jià)格昂貴,不能實(shí)現(xiàn)大批量生產(chǎn)。本文設(shè)計(jì)的音樂盒,是基于單片機(jī)設(shè)計(jì)制作的電子式音樂盒。與傳統(tǒng)的機(jī)械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動(dòng)力來源是電池,制作工藝簡(jiǎn)單,可進(jìn)行批量生產(chǎn),所以價(jià)格便宜?;趩纹瑱C(jī)制作的電子式音樂盒,控制功能強(qiáng)大,可根據(jù)需要選歌,使用方便。所放歌曲的節(jié)奏可以根據(jù)需要進(jìn)行設(shè)置,根據(jù)存儲(chǔ)容量的大小,可以盡可能多的存儲(chǔ)歌曲。另外,可以設(shè)計(jì)彩燈外觀效果,增設(shè)放歌時(shí)間、序號(hào)顯示燈功能,使音樂盒的功能更加豐富,如圖1-1所示。圖1-1單片機(jī)音樂盒功能框圖第2章音樂盒的發(fā)音原理2.1播放音樂的原理發(fā)音原理:播放一段音樂需要的是兩個(gè)元素,一個(gè)是音調(diào),另一個(gè)是音符。首先要了解對(duì)應(yīng)的音調(diào),音調(diào)主要由聲音的頻率決定,同時(shí)也與聲音強(qiáng)度有關(guān)。對(duì)一定強(qiáng)度的純音,音調(diào)隨頻率的升降而升降;對(duì)一定頻率的純音、低頻純音的音調(diào)隨聲強(qiáng)增加而下降,高頻純音的音調(diào)卻隨強(qiáng)度增加而上升。另外,音符的頻率有所不同?;谏厦娴膬?nèi)容,這樣就對(duì)發(fā)音的原理有了一些初步的了解。音符的發(fā)音主要靠不同的音頻脈沖。利用單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器0,使其工作在模式1,定時(shí)中斷,然后控制P3.7引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。2.2音符頻率的產(chǎn)生音符及定時(shí)器初始值:例如:中音1(do)的音頻=523HZ,周期T=1/523s=1912定時(shí)器/計(jì)數(shù)器0的定時(shí)時(shí)間為:T/2=1912/2=956定時(shí)器956的計(jì)數(shù)值=定時(shí)時(shí)間/機(jī)器周期=956/1=956(時(shí)鐘頻率=12MHZ)裝入T0計(jì)數(shù)器初值為65536-956=64580將64580裝入T0寄存器中,啟動(dòng)T0工作后,每計(jì)數(shù)956次時(shí)將產(chǎn)生溢出中斷,進(jìn)入中斷服務(wù)時(shí),每次對(duì)P3.0引腳的輸出值進(jìn)行取反,就可得到中音DO(523HZ)的音符音頻。將51單片機(jī)內(nèi)部定時(shí)器工作在計(jì)數(shù)器模式1下,改變計(jì)數(shù)初值TH0,TL0以產(chǎn)生不同的頻率。下表2-1是C調(diào)各音符頻率與計(jì)數(shù)初值T的對(duì)照表:表2-1C調(diào)各音符頻率與計(jì)數(shù)初值T的對(duì)照表音符頻率(Hz)/初值()音符頻率(Hz)/初值()低1DO262/63627中1DO523/64580高1DO1042/65056低2RE294/63835中2RE589/64687高2RE1245/65134低3M330/64021中3M661/64780高3M1318/65157低4FA350/64107中4FA700/64822高4FA1397/65178低5SO393/64264中5SO786/64900高5SO1568/65217低6LA441/64402中6LA882/64969高6LA1760/65252低7SI495/64526中7SI990/65031高7SI1967/65282音符、音符編碼及定時(shí)器初始值:為了產(chǎn)生音符,必須求出音符低音5—高音5的計(jì)數(shù)初值。例如C調(diào)的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。為了方便寫譜,對(duì)其進(jìn)行簡(jiǎn)單的編碼,在編程時(shí),根據(jù)音符編碼查找對(duì)應(yīng)的計(jì)數(shù)初值。比如說音樂是C調(diào)的,那么出現(xiàn)低音的5SO,直接將代碼寫為1;出現(xiàn)低音6LA,直接寫一個(gè)2的代碼;出現(xiàn)低音7SI,直接寫一個(gè)3代碼。表2-2音符編碼表音符音符編碼音符音符編碼不發(fā)音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG2.3節(jié)拍頻率的產(chǎn)生節(jié)拍的產(chǎn)生與編碼:音樂中的節(jié)拍用延時(shí)時(shí)間產(chǎn)生。例如,1拍=0.4s,1/4拍=0.1s,以此類推。假設(shè)1/4拍執(zhí)行一次延時(shí)程序,則1/2拍就執(zhí)行兩次延時(shí)程序,所以只要求出1/4拍的延時(shí)時(shí)間,其余節(jié)拍就是它的倍數(shù)。為了方便,將節(jié)拍數(shù)也進(jìn)行了編碼,并且計(jì)算了樂譜節(jié)拍編程時(shí)的延時(shí)時(shí)間,如表2-3和表2-4所示。表2-3節(jié)拍數(shù)編碼表按1/4拍為一個(gè)延時(shí)時(shí)間的節(jié)拍編碼與節(jié)拍對(duì)應(yīng)的表按1/8拍為一個(gè)延時(shí)時(shí)間的節(jié)拍編碼與節(jié)拍對(duì)應(yīng)的表節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表2-4樂譜節(jié)拍編程時(shí)的時(shí)間延時(shí)表樂譜節(jié)拍1/4拍的延時(shí)時(shí)間樂譜節(jié)拍1/8拍的延時(shí)時(shí)間4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms音符編碼和節(jié)拍編碼完成后,在編程時(shí),每個(gè)音符占一個(gè)字節(jié),高四位是音符編碼,低四位是節(jié)拍編碼。

第3章硬件電路設(shè)計(jì)3.1硬件電路設(shè)計(jì)中用到了AT89C52單片機(jī),3*3鍵盤,蜂鳴器等硬件電路常用元器件。3.1.1時(shí)鐘電路由單片機(jī)XTAL1、XTAL2引腳外接晶振(12MHz)及起振電容C1、C2(均為30pf)組成。如圖3-1所示:圖3-1時(shí)鐘復(fù)位電路3.1.2按鍵輸入電路由3*3矩陣鍵盤組成,P3口作為輸入控制按鍵,其中P3.4~P3.6掃描行,P3.0~P1.2掃描列。圖3-2按鍵輸入電路

3.2整體硬件電路如圖3-3所示:圖3-3音樂盒硬件電路原理圖3.3原理說明:當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂曲。(1)

硬件電路中用P3口控制按鍵,其中P3.0~P3.2掃描列,P3.4~P1.6掃描行;(2)

用P1.0口控制蜂鳴器;(3)

電路為12MHz晶振頻率工作,起振電路中C1,C2均為30pf。3.4鍵盤按鍵鍵盤按鍵分布如下:按鍵功能說明:1—5五首歌曲6上一首歌曲7關(guān)機(jī)8暫停9下一首歌曲123456789第4章軟件設(shè)計(jì)本程序可以實(shí)現(xiàn)該課程設(shè)計(jì)的基本要求,并可以通過按鍵播放達(dá)10首歌曲。4.1程序設(shè)計(jì)流程程序設(shè)計(jì)流程圖如圖4-1所示:主程序開始主程序開始初始化計(jì)數(shù)器T0,計(jì)時(shí)器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據(jù)按鍵碼演奏對(duì)應(yīng)的歌曲初始化計(jì)數(shù)器T0,計(jì)時(shí)器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據(jù)按鍵碼演奏對(duì)應(yīng)的歌曲 NNYY圖4-1程序設(shè)計(jì)流程圖

4.2設(shè)計(jì)源程序代碼ORG0000HLJMPMAINORG000BH;定時(shí)器T0溢出中斷入口地址LJMPTT0ORG001BH;定時(shí)器T1溢出中斷入口地址LJMPT1INTORG1000HMAIN:MOVSP,#70HLCALLINITIL;內(nèi)存初始化WAIT:LCALLKEYLJMPWAITKEY: ;鍵盤掃描NOP NOPLCALLKSJNZK1 ;有按鍵轉(zhuǎn)到K1MOVA,37HLCALLSOPXN:LJMPKEYK1:LCALLKSJNZK2LJMPKEYK2: ;讀鍵盤MOVR2,#0FEHMOVR4,#00HK3:MOVA,R2MOVP3,AMOVA,P3JBACC.4,L1;為1跳轉(zhuǎn),第一行無按鍵MOVA,#01HLJMPLKL1:JBACC.5,L2MOVA,#04HLJMPLKL2:JBACC.6,NEXT1MOVA,#07HLK:ADDA,R4PUSHACCK4:LCALLDELAY1LCALLKSJNZK4 ;若同時(shí)有其他按鍵,則等待(同時(shí)按視為無效)MOVR3,#07HCLRAMOVR0,#30HMOVR1,#31HMM1:MOVA,@R1;鍵值給37HMOV@R0,AINCR0INCR1DJNZR3,MM1POPACCMOV@R0,ARETNEXT1:INCR4 ;列掃描MOVA,R2JNBACC.2,N2LJMPN1N2:LJMPKEYN1:RLAMOVR2,ALJMPK3KS:MOVA,#0F0H;判斷P1口MOVP3,ANOPNOPMOVA,P3CPLAANLA,#0F0HRETDELAY1:;延時(shí)2.55ms63×4×1us×10+10×3×1usSETBRS0DL:MOVR5,#0AHDL2:MOVR6,#63DL3:NOPNOPDJNZR6,DL3DJNZR5,DL2CLRRS0RETINITIL: ;30H~37H初值為零MOVR3,#08HMOVR0,#30HM1:MOV@R0,#00HINCR0DJNZR3,M1CLRP1.0RET;按鍵值播放歌曲SOP:MOVA,37HCJNEA,#01H,A11MOV52H,#HIGHTABLE10MOV53H,#LOWTABLE10LCALLMAIN0A11:CJNEA,#02H,A22MOV52H,#HIGHTABLE20MOV53H,#LOWTABLE20LCALLMAIN0A22:CJNEA,#03H,A33MOV52H,#HIGHTABLE30MOV53H,#LOWTABLE30LCALLMAIN0A33:CJNEA,#04H,A44MOV52H,#HIGHTABLE40MOV53H,#LOWTABLE40LCALLMAIN0A44:CJNEA,#05H,A55MOV52H,#HIGHTABLE50MOV53H,#LOWTABLE50LCALLMAIN0A55:RETDELAY:MOVR4,#05D1:MOVR5,#0FFHDJNZR5,$DJNZR4,D1RET MAIN0:MOVTMOD,#11H;播放歌曲程序MOVIE,#8AHMOVTH1,#3CHMOVTL1,#0B0H LCALLKSJNZTTM12MOV40H,#00HNEXT20:MOVA,40HMOVDPH,52HMOVDPL,53HMOVCA,@A+DPTRMOVR2,AJZSTOPANLA,#0FHMOVR1,AMOVA,R2SWAPAANLA,#0FHJNZSINGCLRTR0JMPW1SING:DECAMOV22H,ARLAMOVDPTR,#TABLE00MOVCA,@A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,@A+DPTRMOVTL0,AMOV20H,ASETBTR0SETBTR1W1:LCALLDELAY30INC40HLCALLKS;有鍵跳出JNZSTOPLJMPNEXT20STOP:CLRTR0CLRTR1CLRP1.0LJMPMAIN0TTM12:LCALLK2MOVA,37HCJNEA,#08H,TTM13 ;暫停CLRTR1CLRP1.0LCALLDELAY1TTM120:LCALLKSLCALLDELAY1JZTTM120LCALLK2MOVA,37HCJNEA,#08H,TTM120 SETBTR1LJMPNEXT20TTM13:CJNEA,#09H,TTM14 ;下一曲MOVA,52HINCAMOV52H,AMOVA,53HINCAMOV53H,AMOVA,36HINCAMOV37H,ALJMPTTM2TTM14:CJNEA,#06H,TTM2 ;上一曲MOVA,52HDECAMOV52H,AMOVA,53HDECAMOV53H,AMOVA,36HDECAMOV37H,A TTM2:RETTT0:PUSHACC;定時(shí)器中斷子程序0PUSHPSWMOVTL0,20HMOVTH0,21HCPLP1.0 ;獲得脈沖POPPSWPOPACCRETI;定時(shí)器中斷子程序1T1INT:MOVTH1,#3cHMOVTL1,#0b0HRETIDELAY30: MOVR7,#2W2:MOVR4,#125W3:MOVR3,#248DJNZR3,$DJNZR4,W3DJNZR7,W2DJNZR1,DELAY30RETTABLE00:DW64580,64684,64777,6482;音符DW64898,64968,65030,64260DWTABLE10: ;第一首《精忠報(bào)國(guó)》DB66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38HDB66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38HDB64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52HDB52H,62H,7FH,74H,04H,58H,6FHDB00TABLE20: ;第二首《月亮代表我的心》DB02H,82HDB16H,32H,54H,02H,52HDB0A6H,32H,54H,02H,52HDB64H,74H,0B6H,64HDB52H,5CH,32H,22HDB16H,12H,14H,32H,22HDB16H,12H,14H,22H,32HDB26H,12H,94H,22H,32HDB2CHDB32H,52HDB36H,22H,14H,54HDB0ACH,92H,0A2HDB96H,0A2H,96H,82HDB3CH,54HDB36H,22H,14H,54HDB0ACH,92H,0A2HDB16H,12H,14H,22H,32HDB2CH,02H,82HDB16H,32H,56H,12HDB0A6H,32H,56H,52HDB66H,72H,0B6H,62HDB62H,52H,58H,32H,22HDB16H,12H,14H,32H,22HDB16H,12H,14H,22H,32HDB26H,92H,0A4H,12H,22HDB1CHDB00TABLE30: ;第三首《大?!稤B82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1CHDB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24HDB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32HDB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1CH,32H,52HDB62H,64H,62H,64H,0B2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3CH,32H,22H,12H,14H,12H,14H,0B2H,62H,52H,54H,62H,54H,32H,52HDB66H,0B2H,0B4H,62H,52H,5CH,32H,52H,62H,64H,62H,64H,0B2H,62H,52H,54HDB62H,54

溫馨提示

  • 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ù)網(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)論