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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第3章硬件電路設(shè)計3.1硬件電路設(shè)計中用到了AT89C52單片機,3*3鍵盤,蜂鳴器等硬件電路常用元器件。3.1.1時鐘電路由單片機XTAL1、XTAL2引腳外接晶振(12MHz)及起振電容C1、C2(均為30pf)組成。如圖3-1所示:圖3-1時鐘復(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原理說明:當鍵盤有鍵按下時,判斷鍵值,啟動計數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動蜂鳴器,放出樂曲。(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)機8暫停9下一首歌曲123456789第4章軟件設(shè)計本程序可以實現(xiàn)該課程設(shè)計的基本要求,并可以通過按鍵播放達10首歌曲。4.1程序設(shè)計流程程序設(shè)計流程圖如圖4-1所示:主程序開始主程序開始初始化計數(shù)器T0,計時器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據(jù)按鍵碼演奏對應(yīng)的歌曲初始化計數(shù)器T0,計時器T1等待按鍵,是否有按鍵?包括播放鍵,暫停鍵,停止鍵依據(jù)按鍵碼演奏對應(yīng)的歌曲 NNYY圖4-1程序設(shè)計流程圖

4.2設(shè)計源程序代碼ORG0000HLJMPMAINORG000BH;定時器T0溢出中斷入口地址LJMPTT0ORG001BH;定時器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 ;若同時有其他按鍵,則等待(同時按視為無效)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:;延時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;定時器中斷子程序0PUSHPSWMOVTL0,20HMOVTH0,21HCPLP1.0 ;獲得脈沖POPPSWPOPACCRETI;定時器中斷子程序1T1INT:MOVTH1,#3cHMOVTL1,#0b0HRETIDELAY30: MOVR7,#2W2:MOVR4,#125W3:MOVR3,#248DJNZR3,$DJNZR4,W3DJNZR7,W2DJNZR1,DELAY30RETTABLE00:DW64580,64684,64777,6482;音符DW64898,64968,65030,64260DWTABLE10: ;第一首《精忠報國》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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論