基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)_第1頁
基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)_第2頁
基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)_第3頁
基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)_第4頁
基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

大學(xué)學(xué)士學(xué)位論文 PAGE32PAGE33目錄緒論 1第1章語音合成技術(shù)概述 21.1語音信號(hào) 21.1.1語音有關(guān)的術(shù)語概念 21.1.2語音信號(hào)的采樣頻率 21.2語音的數(shù)字合成方法 21.2.1波形存儲(chǔ)法 21.2.2參數(shù)合成法 31.2.3規(guī)則合成法 31.3語音記錄與語音庫的建立 41.3.1語音記錄 41.3.2語音庫的建立 41.4語音輸出與語音庫的調(diào)取 51.4.1語音輸出 51.4.2語音庫的調(diào)取 5第2章8031單片機(jī)功能簡(jiǎn)介 62.18031單片機(jī)的組成及結(jié)構(gòu) 62.1.18031單片機(jī)的基本組成 62.1.28031單片機(jī)處理器及內(nèi)部結(jié)構(gòu) 62.28031單片機(jī)的引腳功能 72.3CPU時(shí)序 92.48031單片機(jī)的指令系統(tǒng) 92.58031的中斷系統(tǒng) 102.5.1中斷的定義 102.5.2中斷系統(tǒng) 102.5.3中斷響應(yīng) 11第3章語音芯片TC8830AF的基礎(chǔ)知識(shí)和外圍電路 123.1語音芯片TC8830AF簡(jiǎn)介 123.2引腳功能 133.3操作原理 143.3.1如何完成命令的寫入 143.3.2TC8830AF語音芯片11種命令簡(jiǎn)要說明 143.3.3TC8830AF語音芯片狀態(tài)寄存器簡(jiǎn)介 153.3.4聲音再生的有關(guān)流程框圖 163.3.5標(biāo)記索引方式下的操作 163.4TC8830AF語音合成芯片的外圍電路 18第4章語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì) 194.1語音報(bào)時(shí)系統(tǒng)的總體設(shè)計(jì)思想及工作原理 194.2語音報(bào)時(shí)系統(tǒng)的硬件設(shè)計(jì) 194.2.1硬件的模塊化設(shè)計(jì) 194.2.2語音報(bào)時(shí)系統(tǒng)的硬件總體設(shè)計(jì) 214.3語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì) 244.3.1語音錄制系統(tǒng)的軟件設(shè)計(jì) 244.3.2語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì) 25設(shè)計(jì)小結(jié) 331系統(tǒng)評(píng)價(jià) 332體會(huì) 33致謝 34參考文獻(xiàn) 35附錄源程序清單 36緒論隨著現(xiàn)代社會(huì)電子技術(shù)的發(fā)展和生產(chǎn)生活實(shí)際的需求,語音合成電路的應(yīng)用將日益廣泛。尤其用在智能儀器儀表上,能使設(shè)備的功能增強(qiáng),給使用者帶來極大方便。在許多不便于直接目測(cè)的場(chǎng)合,將檢測(cè)結(jié)果用語音輸出,實(shí)現(xiàn)以耳聽代替目測(cè),會(huì)收到很好的效果。目前,市場(chǎng)上已有許多語音合成芯片供選擇、開發(fā)應(yīng)用,如ISD4002、TMS3477、YYH16、T6668和TC8830AF等都具有較強(qiáng)的記錄功能,可以應(yīng)用于許多語音專用系統(tǒng)。本次設(shè)計(jì)選用高級(jí)語音處理器TC8830AF語音合成芯片,這種語音芯片是由東芝公司推出的使用自適應(yīng)增量δ調(diào)制(ADM)方式的大規(guī)模集成電路,連接EPROM27256固化語音數(shù)據(jù),外圍配置揚(yáng)聲器和放大器組成的音頻電路。單片機(jī)8031給出語音存放的地址信號(hào)和控制信號(hào)可實(shí)現(xiàn)語音的錄制和放音,達(dá)到報(bào)時(shí)的目的。本課題在具體設(shè)計(jì)前詳細(xì)介紹了語音合成的基本原理,敘述了三種語音合成的方法:波形存儲(chǔ)法,分析合成方式以及規(guī)則合成方式,并對(duì)波形存儲(chǔ)方式及其分類做了詳細(xì)敘述。了解基本原理之后,就進(jìn)入了設(shè)計(jì)部分。本課題既詳細(xì)介紹了TC8830AF語音芯片的特點(diǎn)、結(jié)構(gòu)、基本工作原理及其外圍電路,同時(shí)又對(duì)8031微處理器的結(jié)構(gòu)和基本原理做了簡(jiǎn)要的敘述,并且在此原理及特性基礎(chǔ)上進(jìn)行語音報(bào)時(shí)系統(tǒng)的硬件及軟件設(shè)計(jì)。

第1章語音合成技術(shù)概述1.1語音信號(hào)1.1.1語音有關(guān)的術(shù)語概念(1)語音由人的聲道發(fā)出的聲音,主要由共振峰確定其頻率特性。(2)發(fā)音所謂發(fā)音是指出語音的基本生理過程。語聲波形是一種聲壓波。語音主要是由于聲帶振動(dòng)而發(fā)出的聲能。(3)聲道聲道是一根從聲門延伸到嘴唇的非均勻截面的聲管,它的形狀變化是時(shí)間的函數(shù)。(4)共振峰由一些語音引起聲道共振,組成一個(gè)音響共鳴系統(tǒng)。聲道管的諧振頻率和聲道的形狀與大小有關(guān),每種形狀都有一種或一套共振峰頻率作為特征。(5)滑音是一種中間形式,即發(fā)音時(shí),從某個(gè)音素A變化到另一個(gè)音素B時(shí),便產(chǎn)生一種從A的固有發(fā)音形式轉(zhuǎn)向B的固有發(fā)音形式的中間發(fā)音形式。1.1.2語音信號(hào)的采樣頻率香農(nóng)采樣定理表明,語音信號(hào)的采樣頻率是語音所必需的頻帶寬度的2倍以上。例如,要保持最高頻率為5kHz帶寬的頻譜,采樣頻率最低必須為10kHz。人的耳朵可聽到頻率為20Hz-20kHz的聲音。在處理連續(xù)語音時(shí),我們可以根據(jù)前后的信息進(jìn)行估計(jì)與識(shí)別的處理,所以用8kHz就足以勝任了。對(duì)語音信號(hào)進(jìn)行采樣的頻率叫做采樣頻率,將采樣頻率f乘以語音信號(hào)采樣值的編碼位數(shù)m,即f×m,就得到了表征語音合成芯片的一個(gè)重要參數(shù)指標(biāo)——比特率。f×m,就是存儲(chǔ)1秒鐘的語音信息所必需的位數(shù),其數(shù)值與傳輸語音信號(hào)的線路所必需的頻帶寬度有關(guān)系。1.2語音的數(shù)字合成方法1.2.1波形存儲(chǔ)法波形存儲(chǔ)法是一種相對(duì)簡(jiǎn)單的語音合成技術(shù)。其基本思想和作法是:首先由人講一些單詞、詞組或短語,在內(nèi)存中建立特別的詞匯語音庫,然后就可以在今后的處理過程中,將相應(yīng)的數(shù)字量調(diào)取出來。在建立詞匯語音庫的過程中,將特定的單詞、詞組或短語的聲波波形通過轉(zhuǎn)變成數(shù)字信號(hào)而存入存儲(chǔ)單元中。圖1.1所示為波形存儲(chǔ)法的過程示意圖。預(yù)處理。將含有所需單詞、句的話音由聲轉(zhuǎn)電信號(hào)預(yù)處理。將含有所需單詞、句的話音由聲轉(zhuǎn)電信號(hào)采樣獲得語音信號(hào)的數(shù)字表示建立所要求的語音庫存儲(chǔ)器待合成內(nèi)容計(jì)算機(jī)根據(jù)詞匯表結(jié)構(gòu),按一定規(guī)則獲取語音數(shù)據(jù)組織邏輯語音合成裝置功放揚(yáng)聲器圖1.1波形存儲(chǔ)法過程示意圖1.2.2參數(shù)合成法參數(shù)合成法也稱為分析合成法,是一種比較復(fù)雜的方法,它是基于分析與模擬人的發(fā)音器官,以便尋求并建立描述過程??梢杂泄舱穹?、頻譜包絡(luò)和聲道濾波三種方式來提取語音信息,因此這種方法不是直接利用人發(fā)出的聲音,而是從人的語音中提取與語音參數(shù)有關(guān)的特征參數(shù)。最常用的方法是提取PARCOR系數(shù)(偏自相關(guān)系數(shù))和LPC系數(shù)(線性預(yù)測(cè)系數(shù))。在合成過程中,通過相應(yīng)數(shù)學(xué)模型的計(jì)算去人工控制這些參數(shù)的合成。實(shí)現(xiàn)合成的方法,則因線性預(yù)測(cè)系數(shù)、語音共振峰等而各不相同。利用這種方法,信息量可壓縮到1200—9600bps。另外,所提取出的PARCOR系數(shù)也好,LPC系數(shù)也好,都是將數(shù)據(jù)存放入計(jì)算機(jī)內(nèi)存中,當(dāng)要合成某個(gè)語音時(shí),就去調(diào)用已存儲(chǔ)在相應(yīng)的內(nèi)存單元中的系數(shù),通過有關(guān)運(yùn)算還原出數(shù)字語音,以便最終獲取聲音。不過,這種方式也受內(nèi)存容量的限制,所能合成的詞匯數(shù)也是有限的。圖1.2所示是用參數(shù)合成法實(shí)現(xiàn)的語音輸出系統(tǒng)原理示意圖。CPUCPU存儲(chǔ)器I/O接口電路通信接口語音合成部分專用存儲(chǔ)器控制接口電路語音合成器總線上位機(jī)揚(yáng)聲器圖1.2用參數(shù)合成法的裝置框圖1.2.3規(guī)則合成法規(guī)則合成法以音素法為例,它將每個(gè)發(fā)音的音素(對(duì)應(yīng)具有固定或一定范圍的頻率)所表示的語音信號(hào)存儲(chǔ)起來,拼音時(shí)隨時(shí)取用。這種以最小單位進(jìn)行的方法,實(shí)現(xiàn)起來挺麻煩,而且更復(fù)雜困難。1.3語音記錄與語音庫的建立語音合成是語音模擬信號(hào)經(jīng)過采樣,在計(jì)算機(jī)內(nèi)存中反映為一個(gè)數(shù)字序列;而當(dāng)這一數(shù)字序列最終輸出時(shí),為一特定語音的過程。那么這一數(shù)字序列就是表征一定意義的語音詞匯,將有關(guān)這些數(shù)字序列存儲(chǔ)起來,就是創(chuàng)建語音庫的過程。1.3.1語音記錄語音的產(chǎn)生是語聲經(jīng)過話筒,靠振膜接受聲波振動(dòng),并轉(zhuǎn)變?yōu)殡娦盘?hào)。話筒分動(dòng)圈式、駐極體電容式等類型,關(guān)于這兩種類型的話筒分別敘述如下:動(dòng)圈式它是依靠振膜的機(jī)械振動(dòng)帶動(dòng)置于磁場(chǎng)中的線圈振動(dòng),從而引起磁場(chǎng)的變化,在線圈上產(chǎn)生變化的電信號(hào)。話筒內(nèi)部線圈與振膜直接相連,振膜的振動(dòng)帶動(dòng)線圈的振動(dòng),將聲能變成機(jī)械能,并由機(jī)械能轉(zhuǎn)為電能的形式。駐極體電容式這種話筒時(shí)利用永久性帶有電荷的塑料薄膜做振膜,不受外部電場(chǎng)和磁場(chǎng)的影響。當(dāng)受到聲波的作用后,振膜產(chǎn)生振動(dòng),引起電級(jí)之間電場(chǎng)的變化,而后將這種固定電級(jí)之間的變化轉(zhuǎn)變?yōu)殡娦盘?hào)。當(dāng)話筒將聲波轉(zhuǎn)化為電能后,再經(jīng)模/數(shù)轉(zhuǎn)換,便可得到數(shù)字表征的語聲信號(hào),通過分析或處理再由存儲(chǔ)器存儲(chǔ)這些數(shù)字序列,便將語音以數(shù)字表征的形式記錄下來。1.3.2語音庫的建立在波形語音合成方式里,我們得到的是語音的數(shù)字編碼形式,記載的數(shù)字編碼如一一得以復(fù)原,則可復(fù)述原先所記錄的語音。由于語音發(fā)出的過程是以時(shí)間為基本軸的,這勢(shì)必會(huì)造成停頓時(shí)間過長(zhǎng)的缺點(diǎn),以至于浪費(fèi)內(nèi)存,為此,需要根據(jù)時(shí)間軸來進(jìn)行錄音編輯。關(guān)于編輯的基本思想是這樣的:第一,將所需的字、詞或句通過話筒輸入,并由語音合成芯片轉(zhuǎn)換成數(shù)字量保存在存儲(chǔ)器中;第二,由計(jì)算機(jī)控制存儲(chǔ)器內(nèi)容得以復(fù)原后與時(shí)間有關(guān),因此需要反復(fù)調(diào)整時(shí)間,以決定某一字、詞或句子在一個(gè)存儲(chǔ)器里所處的以時(shí)間為軸的具體位置,或者確定在存儲(chǔ)器中的地址。在參數(shù)合成法或規(guī)則合成法里,我們需要的字、詞或語句將表征為一系列參數(shù)。建立語音庫時(shí)應(yīng)記錄語音信號(hào)的抽象表示形式,即以各種參數(shù)描述的有關(guān)字、詞或句子的表示方式。因?yàn)楦鱾€(gè)參數(shù)針對(duì)一定字、詞或句子都是具有聯(lián)系意義的,彼此相輔而成,因此關(guān)于這二種方式的語音庫建立可以按照如下形式進(jìn)行:第一,由磁帶式錄音機(jī)錄制字、詞或句,并盡可能將有關(guān)語聲之間因發(fā)音受阻礙或停頓消除,然后進(jìn)行分析、計(jì)算處理,取得參數(shù)編碼,再由該類語音合成芯片的專用語音存儲(chǔ)器來存儲(chǔ)參數(shù),或交由計(jì)算機(jī)來管理。第二,基于波形編碼方式的輸出結(jié)果,即通過波形編碼方式獲取有關(guān)語音庫后,再由計(jì)算機(jī)控制,以便將這種語音庫轉(zhuǎn)變?yōu)橛闪硪粎?shù)表示的語音庫。1.4語音輸出與語音庫的調(diào)取語音輸出有很多種轉(zhuǎn)換形式,但都可以歸納為采用波形編碼形式的數(shù)字編碼進(jìn)行解譯的過程,也可以說是用波形合成法或規(guī)則合成法各參數(shù)控制輸出的過程。輸出的最終形式是將語音通過揚(yáng)聲器得以傳播出去。1.4.1語音輸出語音輸出是將電形式轉(zhuǎn)換為聲形式的過程。揚(yáng)聲器是實(shí)現(xiàn)這一最終語音合成結(jié)果的工具。電信號(hào)變換為聲信號(hào),也就是電信號(hào)變換為空氣壓力的變化(即聲波),其變換根據(jù)是置于磁路中的音圈里通過電流時(shí)產(chǎn)生力的現(xiàn)象,力的方向隨電流的方向而變化。音圈與振膜相連接,振膜的重量要輕,并且要具有壓縮空氣的足夠的面積。音圈的振動(dòng)導(dǎo)致了振膜的振動(dòng),于是,最終的聲波便從電信號(hào)方式轉(zhuǎn)變出來。1.4.2語音庫的調(diào)取計(jì)算機(jī)在建立語音庫是主要是按時(shí)間軸和內(nèi)存地址兩種方式來確定字、詞或句子在語音庫中的位置,在語音庫調(diào)取數(shù)據(jù)時(shí),在語音庫之外重新開辟一內(nèi)存暫存區(qū)域,將有關(guān)語音庫中的數(shù)據(jù)按照輸出語音的先后順序安排進(jìn)入暫存單元,然后一一從內(nèi)存中調(diào)取。

第2章8031單片機(jī)功能簡(jiǎn)介2.18031單片機(jī)的組成及結(jié)構(gòu)2.1.18031單片機(jī)的基本組成8031單片機(jī)是目前國(guó)內(nèi)廣泛應(yīng)用的單片機(jī)之一,它是在一塊芯片上集成了CPU、ROM、RAM、定時(shí)器/計(jì)數(shù)器和多種功能的I/O端口等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。8031內(nèi)部包含了下列幾個(gè)部件:(1)一個(gè)8位CPU;(2)一個(gè)片內(nèi)振蕩器及時(shí)鐘電路;(3)4K字節(jié)程序存儲(chǔ)器;(4)128字節(jié)數(shù)據(jù)存儲(chǔ)器;(5)兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器;(6)一個(gè)可編程全雙工串行口;(7)四個(gè)8位可編程并行I/O端口;(8)64K字節(jié)外部數(shù)據(jù)存儲(chǔ)器和64K字節(jié)程序存儲(chǔ)器擴(kuò)展控制電路;(9)五個(gè)中斷源,兩個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)。以上各部分通過總線相連接。2.1.28031單片機(jī)處理器及內(nèi)部結(jié)構(gòu)8031單片機(jī)處理器及內(nèi)部結(jié)構(gòu)與一般微處理器相比,除了增加接口部分外,基本結(jié)構(gòu)是相似的,但也有明顯不同的地方,例如8031的數(shù)據(jù)指針DPTR是專門為指示存儲(chǔ)器地址而設(shè)置的寄存器。(1)運(yùn)算器運(yùn)算器的功能是進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算,可以實(shí)現(xiàn)對(duì)半字節(jié)、字節(jié)等數(shù)據(jù)進(jìn)行操作。8031單片機(jī)的運(yùn)算器還包括一個(gè)布爾處理器,專門用來進(jìn)行位操作。(2)程序計(jì)數(shù)器PC8031單片機(jī)的程序計(jì)數(shù)器PC用來存放即將要執(zhí)行的指令的地址,共16位??蓪?duì)64K字節(jié)的程序存儲(chǔ)器直接尋址。若系統(tǒng)的程序存儲(chǔ)器在片外,執(zhí)行指令時(shí),PC的低8位經(jīng)P0口送出,PC的高8位由P2口送出。PC是決定執(zhí)行順序的關(guān)鍵性寄存器,是任何一個(gè)微處理器都不可缺少的。(3)指令寄存器指令寄存器用于存放指令代碼。CPU執(zhí)行指令時(shí),從程序存儲(chǔ)器中讀取指令代碼送入指令寄存器,經(jīng)譯碼后由定時(shí)和控制電路發(fā)出相應(yīng)的控制信號(hào),完成指令的功能。(4)工作寄存器區(qū)通用工作寄存器相當(dāng)于CPU內(nèi)部的小容量存儲(chǔ)器,用來存放參加運(yùn)算的數(shù)據(jù)、中間數(shù)據(jù)或地址。(5)專用寄存器區(qū)專用寄存器區(qū)也可稱為特殊功能寄存器區(qū)。8031單片機(jī)的CPU根據(jù)程序的需要訪問有關(guān)的專用寄存器,從而正確地發(fā)出各種控制命令,完成指令規(guī)定的操作。(6)堆棧8031單片機(jī)的堆棧安排在內(nèi)部RAM中,它的位置通過堆棧指針SP來設(shè)置,其深度可達(dá)128字節(jié)。(7)標(biāo)志寄存器標(biāo)志寄存器是用來存放ALU運(yùn)算結(jié)果的各種特征。程序在執(zhí)行過程中經(jīng)常需要根據(jù)這些標(biāo)志來決定下一步應(yīng)當(dāng)如何操作。2.28031單片機(jī)的引腳功能8031單片機(jī)采用40引腳的雙列直插封裝方式。圖2.1為8031單片機(jī)的引腳圖。140140239338437536635734833980313210311130122913281427152616251724182319222021P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VpdRXD/P3.0TXD/P3.1/INT0/P3.2/INT1/P3.3T0/P3.4T1/P3.5/WR/P3.6/RD/P3.7XTAL2XTAL1VSSVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7/EA/VPPALE//PROG/PSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8圖2.18031單片機(jī)的引腳圖40條引腳的功能簡(jiǎn)要說明如下:1.主電源引腳VCC和VSS(1)VCC(40)。正常操作時(shí)接+5V電源。(2)VSS(20)。接地。2.外接晶體引腳XTAL1和XTAL2(1)XTAL1(19)。接外部晶體和微調(diào)電容的一個(gè)引腳。(2)XTAL2(18)。接外部晶體和微調(diào)電容的另一個(gè)引腳。3.控制或其他電源復(fù)用引腳RST/Vpd、ALE//PROG、/PSEN和/EA/VPP(1)RST/Vpd(9)。當(dāng)振蕩器工作時(shí),在此引腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平將使單片機(jī)復(fù)位。當(dāng)VCC掉電期間,此引腳可接上備用電源,由Vpd向內(nèi)部RAM提供備用電源,以保持內(nèi)部RAM中的數(shù)據(jù)。(2)ALE//PROG(30)。當(dāng)訪問外部存儲(chǔ)器時(shí),地址所存允許ALE信號(hào)的輸出用于鎖存低8位地址信息。即使不訪問外部存儲(chǔ)器,ALE端仍以不變的頻率周期性地發(fā)出正脈沖信號(hào)。但是要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將少發(fā)出一個(gè)ALE信號(hào)。因此假若要將ALE信號(hào)直接作為時(shí)鐘信號(hào),那么程序中必須不出現(xiàn)訪問外部數(shù)據(jù)存儲(chǔ)器的指令,否則就不能將ALE作為時(shí)鐘信號(hào)。ALE端可以驅(qū)動(dòng)8個(gè)LSTTL電路。對(duì)于EPROM型單片機(jī),在EPROM編程期間,此引腳用于輸入編程脈沖信號(hào)(/PROG)。(3)/PSEN(29)。該端輸出外部程序存儲(chǔ)器讀選通信號(hào)。當(dāng)CPU從外部程序存儲(chǔ)器取指令(或數(shù)據(jù))期間,在12個(gè)振蕩周期內(nèi)將會(huì)出現(xiàn)2次/PSEN信號(hào)。但是如果CPU執(zhí)行的是一條訪問外部數(shù)據(jù)存儲(chǔ)器指令,那么在執(zhí)行這條指令所需的24個(gè)振蕩周期內(nèi)將會(huì)少發(fā)出2個(gè)/PSEN信號(hào)。CPU在訪問內(nèi)部程序存儲(chǔ)器時(shí),/PSEN端不會(huì)產(chǎn)生有效的/PSEN信號(hào)。/PSEN端同樣可以驅(qū)動(dòng)8個(gè)LSTTL電路。(4)/EA/Vpp(31)。訪問外部程序存儲(chǔ)器控制端。當(dāng)/EA端保持高電平時(shí),單片機(jī)復(fù)位后訪問內(nèi)部程序存儲(chǔ)器。當(dāng)/EA端保持低電平時(shí),則只訪問外部程序存儲(chǔ)器4.輸入/輸出引腳(1)P0.0~P0.7(39~32)。P0是一個(gè)8位漏極開路型雙向I/O口。在訪問外部存儲(chǔ)器時(shí)可作為地址/數(shù)據(jù)分時(shí)復(fù)用總線使用。當(dāng)P0作為地址/數(shù)據(jù)分時(shí)復(fù)用總線使用時(shí),在訪問存儲(chǔ)器期間它能激活內(nèi)部的上拉電阻。P0能以吸收電流的方式驅(qū)動(dòng)8個(gè)LSTTL電路。(2)P1.0~P1.7(1~8)。P1是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口。在對(duì)EPROM型單片機(jī)編程和驗(yàn)證程序時(shí),它接收低8位地址。P1能驅(qū)動(dòng)4個(gè)LSTTL電路。(3)P2.0~P2.7(21~28)。P2是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口。在訪問外部存儲(chǔ)器時(shí),它送出高8位地址。在對(duì)EPROM型單片機(jī)編程和驗(yàn)證程序期間,它接收高8位地址。P2可以驅(qū)動(dòng)4個(gè)LSTTL電路。(4)P3.0~P3.7(10~17)。P3是一個(gè)內(nèi)部帶上拉電阻的8位準(zhǔn)雙向I/O口。P3能驅(qū)動(dòng)4個(gè)LSTTL電路。P3每個(gè)引腳分別具有第二功能,如表2.1所示。表2.1P3口線的第二功能口線第二功能P3.0RXD(串行口輸入)P3.1TXD(串行口輸出)P3.2/INT0(外部中斷0外部輸入)P3.3/INT1(外部中斷1外部輸出)P3.4T0(定時(shí)器/計(jì)數(shù)器0外部輸入)P3.5T1(定時(shí)器/計(jì)數(shù)器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)2.3CPU時(shí)序CPU實(shí)質(zhì)上就是一個(gè)復(fù)雜的同步時(shí)序電路,所有的工作都是在時(shí)鐘信號(hào)控制下進(jìn)行的。每執(zhí)行一條指令,CPU的控制器都要發(fā)出一系列特定的控制信號(hào),這些控制信號(hào)在時(shí)間上的相互關(guān)系問題就是CPU的時(shí)序。CPU發(fā)出的控制信號(hào)一般分成兩類,一類是用于計(jì)算機(jī)內(nèi)部的,這類信號(hào)非常多,用戶并不直接接觸這些信號(hào);另一類信號(hào)是通過控制總線送到片外的,在使用計(jì)算機(jī)時(shí),用戶必須接觸到這些信號(hào)。單片機(jī)的指令由字節(jié)組成,而在討論單片機(jī)的時(shí)序時(shí),則以機(jī)器周期作為單位。在一個(gè)機(jī)器周期中,單片機(jī)可以完成某種規(guī)定的操作。8031單片機(jī)的每個(gè)機(jī)器周期包含6個(gè)狀態(tài)周期。由于每個(gè)狀態(tài)周期包含2個(gè)節(jié)拍,因此一個(gè)機(jī)器周期包含12個(gè)振蕩周期,若采用12MHz的晶體振蕩器,則每個(gè)機(jī)器周期恰為1us。每條指令都由一個(gè)或幾個(gè)機(jī)器周期組成,執(zhí)行一條指令的時(shí)間稱為指令周期。在8031單片機(jī)系統(tǒng)中,有單周期指令、雙周期指令和四周期指令。每一條指令的執(zhí)行都可以包括取指和執(zhí)行兩個(gè)階段。在取指階段,CPU從內(nèi)部和外部ROM中取出指令操作碼及操作數(shù),然后再執(zhí)行這條指令對(duì)于絕大部分指令在整個(gè)指令的取址和執(zhí)行過程中,ALE信號(hào)是周期性的信號(hào)。每出現(xiàn)一次ALE信號(hào),CPU就進(jìn)行一次取指操作。不同的指令,由于其字節(jié)數(shù)和周期數(shù)不同,所以具體的取指和執(zhí)行時(shí)序也有所不同。對(duì)于8031系統(tǒng)來說,有單字節(jié)單周期指令,雙字節(jié)單周期指令、單字節(jié)雙周期指令、雙字節(jié)雙周期指令、三字節(jié)雙周期指令以及單字節(jié)四周期指令。一般情況下每個(gè)機(jī)器周期將會(huì)出現(xiàn)兩次ALE信號(hào)。2.48031單片機(jī)的指令系統(tǒng)指令是CPU執(zhí)行某種操作的命令。一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部指令的集合稱為這個(gè)CPU的指令系統(tǒng)。8031匯編語言指令由操作碼字段和操作數(shù)字段兩部分組成。操作碼字段指示了計(jì)算機(jī)所要執(zhí)行的操作,由2~5個(gè)英文字母表示。操作數(shù)字段指出了參與操作的數(shù)據(jù)來源和操作結(jié)果存放的目的單元。操作數(shù)字段又分為目的操作數(shù)和源操作數(shù)兩部分。操作數(shù)可以是一個(gè)常數(shù),或者是一個(gè)數(shù)據(jù)所在的空間地址,即在執(zhí)行指令時(shí)可以從指定的地址空間取出操作數(shù)。操作碼和操作數(shù)都有對(duì)應(yīng)的二進(jìn)制代碼,指令代碼由若干字節(jié)組成。對(duì)于不同的指令,指令的字節(jié)數(shù)不同。8031單片機(jī)的指令系統(tǒng)具有255種操作代碼,一共構(gòu)造出111種指令,指令系統(tǒng)功能很強(qiáng),可分為下面5類:(1)數(shù)據(jù)傳送類(28條)(2)算術(shù)操作類(24條)(3)邏輯操作類(25條)(4)控制轉(zhuǎn)移類(17條)(5)布爾變量操作類(17條)2.58031的中斷系統(tǒng)2.5.1中斷的定義中斷就是指由于外部或內(nèi)部事件而改變?cè)瓉鞢PU正在執(zhí)行指令順序的一種工作機(jī)制。它是CPU和外設(shè)之間交換信息的一種方式,在引入中斷技術(shù)之后,解決了CPU和外設(shè)之間的速度配合問題,提高了CPU的工作效率和計(jì)算機(jī)處理故障的能力。中斷機(jī)制涉及到三個(gè)內(nèi)容:中斷源、中斷控制和中斷響應(yīng)。中斷源是指引起中斷的事件;中斷控制是指中斷的允許/禁止、優(yōu)先和嵌套等處理方式;中斷響應(yīng)是指確定中斷入口、保護(hù)現(xiàn)場(chǎng)、進(jìn)行中斷服務(wù)、恢復(fù)現(xiàn)場(chǎng)和中斷返回等過程。2.5.2中斷系統(tǒng)1.中斷系統(tǒng)的組成能夠?qū)崿F(xiàn)中斷功能的部件稱為中斷系統(tǒng)。8031單片機(jī)的中斷系統(tǒng)由中斷源、中斷控制電路和中斷入口地址電路等部分組成。中斷系統(tǒng)涉及到的4個(gè)寄存器是:定時(shí)器/計(jì)數(shù)器控制寄存器、串行口控制寄存器、中斷允許寄存器和中斷優(yōu)先級(jí)寄存器。2.中斷源8031單片機(jī)中有三類中斷源:兩個(gè)外部中斷、兩個(gè)定時(shí)器/計(jì)數(shù)器中斷和一個(gè)串行口中斷。這些中斷源提出中斷請(qǐng)求后會(huì)在專用寄存器中設(shè)置相應(yīng)的中斷標(biāo)志。各中斷源提出中斷請(qǐng)求的過程說明如下:(1)外部中斷外部中斷源是通過兩個(gè)外部引腳/INT0、/INT1引入的。/INT0為外部中斷0請(qǐng)求信號(hào),/INT1為外部中斷1請(qǐng)求信號(hào)。(2)定時(shí)器/計(jì)數(shù)器中斷定時(shí)器/計(jì)數(shù)器的中斷源是由其溢出位引入的。當(dāng)定時(shí)器/計(jì)數(shù)器到達(dá)設(shè)定的時(shí)間或檢測(cè)到設(shè)定的計(jì)數(shù)脈沖后,其溢出位置位。定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)脈沖由外部引腳T0和T1引入時(shí),定時(shí)器/計(jì)數(shù)器就變?yōu)橛?jì)數(shù)器。(3)串行口中斷串行口發(fā)送完一幀串行數(shù)據(jù)或接受到一幀串行數(shù)據(jù)后,都會(huì)發(fā)出中斷請(qǐng)求。專用寄存器SCON中的TI和RI為串行中斷請(qǐng)求標(biāo)志位。3.中斷系統(tǒng)的功能中斷系統(tǒng)即中斷管理系統(tǒng),指能夠?qū)崿F(xiàn)中斷功能的那部分硬件電路和軟件程序。中斷系統(tǒng)功能一般有下面幾種:(1)對(duì)于中斷申請(qǐng)的開放和屏蔽管理;(2)進(jìn)行中斷優(yōu)先級(jí)排隊(duì);(3)實(shí)現(xiàn)中斷嵌套;(4)響應(yīng)中斷;(5)中斷返回。2.5.3中斷響應(yīng)1.中斷請(qǐng)求信號(hào)的檢測(cè)8031的中斷請(qǐng)求信號(hào)是由中斷標(biāo)志、中斷允許標(biāo)志和中斷優(yōu)先標(biāo)志經(jīng)邏輯而得到。CPU工作時(shí),在每個(gè)機(jī)器周期中都會(huì)去查詢中斷請(qǐng)求信號(hào)。2.中斷請(qǐng)求的響應(yīng)條件8031單片機(jī)的CPU在檢測(cè)到有效的中斷請(qǐng)求信號(hào)同時(shí),還必須同時(shí)滿足下列三個(gè)條件才能在下一個(gè)周期響應(yīng)中斷:(1)無同級(jí)或更高級(jí)的中斷在服務(wù);(2)現(xiàn)行的機(jī)器周期是指令的最后一個(gè)周期;(3)當(dāng)前正執(zhí)行的指令不是中斷返回指令或訪問IP、IE寄存器等與中斷有關(guān)的指令。如果滿足響應(yīng)條件,CPU就在下一機(jī)器周期中響應(yīng)中斷,完成兩個(gè)工作:一是將中斷點(diǎn)的地址即程序計(jì)數(shù)器PC的內(nèi)容推入堆棧;二是根據(jù)中斷的不同來源,將程序的執(zhí)行轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序入口。3.中斷響應(yīng)的過程CPU響應(yīng)中斷的過程可分為設(shè)置標(biāo)志、保護(hù)斷點(diǎn)、選擇中斷入口、進(jìn)行中斷服務(wù)和中斷返回五個(gè)部分。(1)設(shè)置標(biāo)志響應(yīng)中斷后,由硬件自動(dòng)設(shè)置與中斷有關(guān)的標(biāo)志。(2)保護(hù)斷點(diǎn)中斷的斷點(diǎn)保護(hù)是由硬件自動(dòng)實(shí)現(xiàn)的,當(dāng)CPU響應(yīng)中斷后,硬件把當(dāng)前PC寄存器的內(nèi)容壓入堆棧。(3)選擇中斷入口根據(jù)不同的中斷源,選擇不同的中斷入口地址送入PC,從而轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。(4)進(jìn)行中斷服務(wù)由于各中斷入口地址間隔較近,通??砂才乓粭l絕對(duì)轉(zhuǎn)移指令,跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序。中斷服務(wù)程序通常還要考慮現(xiàn)場(chǎng)的保護(hù)和恢復(fù)。不同的中斷請(qǐng)求會(huì)有不同的中斷服務(wù)要求,中斷服務(wù)程序也各不相同。(5)中斷返回中斷服務(wù)程序最后執(zhí)行中斷返回指令RETI,標(biāo)志著中斷響應(yīng)的結(jié)束。

第3章語音芯片TC8830AF的基礎(chǔ)知識(shí)和外圍電路3.1語音芯片TC8830AF簡(jiǎn)介 1.芯片特點(diǎn)TC8830AF語音合成芯片是一種采取CMOS工藝,內(nèi)建ADM調(diào)制方式的單芯片語音錄制與再生的專用集成器件。它采用靜態(tài)RAM作為存儲(chǔ)器件,只要外圍配置一個(gè)由話筒、揚(yáng)聲器、放大器等組成的音頻電路,那么一個(gè)具有錄音與聲音再生的語音處理系統(tǒng)便建立起來了。下面是TC8830AF的一些主要特點(diǎn):(1)聲音數(shù)據(jù)的存取選用靜態(tài)RAM,可外接4片64K位或者4片256K位的SRAM芯片;(2)通過外部電路可以將外接存儲(chǔ)器容量擴(kuò)大至8M位;(3)連接話筒極其方便,并有11種命令供使用;(4)在手動(dòng)操作工作模式下,聲音的錄制與再生最多為16段;(5)提供四種比特率:32kbps、16kbps、11kbps、8kbps供選擇一種使用;(6)使用四片256k位SRAM存儲(chǔ)器,以及選擇16kbps比特率,錄音/放音時(shí)間達(dá)64秒左右;(7)錄制時(shí)片內(nèi)有話筒放大器,放音時(shí)片內(nèi)有頻帶濾波器;(8)自適應(yīng)增量δ調(diào)制方式ADM;(9)CMOS工藝;(10)片載陶瓷振蕩電路;(11)單一正電源供電,電壓為+5V;(12)可方便地將語音數(shù)據(jù)固化在EPROM中;(13)內(nèi)載10位D/A轉(zhuǎn)換器、電壓跟隨器輸出;(14)具有CPU、手動(dòng)兩種操作使用方式供選用。另外,還具有DMA及最小功耗維持工作方式;(15)67腳扁平封裝。2.結(jié)構(gòu)與組成TC8830AF語音合成芯片的內(nèi)部結(jié)構(gòu)由以下部分組成:地址計(jì)數(shù)器20位的地址計(jì)數(shù)器用以指定外部靜態(tài)RAM的地址,并且在聲音錄制和再生時(shí),其累加增以8為一個(gè)單位。在CPU控制下,該地址計(jì)數(shù)器的值能夠通過命令予以設(shè)置或讀出。停止地址寄存器20位的停止地址寄存器用以指示聲音錄音/再生過程停止時(shí)的地址。在CPU控制下,該值能夠通過命令進(jìn)行設(shè)定,但其值不能讀出。地址比較器當(dāng)?shù)刂酚?jì)數(shù)器的內(nèi)容與停止地址寄存器中的內(nèi)容相一致時(shí),地址計(jì)數(shù)器停止計(jì)數(shù)。而地址比較器是完成這一功能的檢測(cè)核心。變址寄存器在標(biāo)記索引模式下,變址寄存器用于指示在SRAM中的索引區(qū)的地址。用戶不能隨意讀取,但CPU管理下可以既讀又變更。狀態(tài)寄存器TC8830AF的狀態(tài)寄存器為四位,它用于指示TC8830AF的狀態(tài)。在CPU控制下,當(dāng)/RD端給定低電平時(shí),TC8830AF就在P0~P3這四根數(shù)據(jù)總線上反映狀態(tài)寄存器的四位內(nèi)容。CPU接口CPU接口電路用于連接外部的微處理器。SRAM接口該接口電路用于外接SRAM。話筒放大器TC8830AF的MICCOUT端的輸出被加壓偏置到Vref附近,并且能夠被直接引向ADI端。帶通濾波器TC8830AF芯片上具有第一級(jí)高通濾波器和第二級(jí)低通濾波器。ADM分析/合成電路A/D轉(zhuǎn)換器與電壓跟隨器時(shí)序發(fā)生控制電路3.2引腳功能6766656463626160595857565515425335245155064974884794610TC8830AF45114412431342144115401639173818371936203521342223242526272829303133FLOUTNCTESTD7NCD6NCD5NCD4NCNCD3D2D1D0A14A13A12VSS1A11A10A9A8A7A6ADDA5A4A3A2A1P0P1P2P3PH0PH1PH2PH3/RD/WRALER//W256KXOUTXINSTBY/CE4/CE3/CE2/CE1/CEA0FILINDAOADIMICOUTC2VSS2VDDC1MICINVREFCPUM/ACLEOS圖3.1TC8830AF引腳圖TC8830AF語音合成芯片采用67腳薄形扁平封裝,其引腳圖如圖3.1所示。按引腳圖所示序號(hào)排列順序?qū)C8830AF各引腳說明如下:(1)TC8830AF使用SRAM,與存儲(chǔ)器的連線一般來說一一對(duì)應(yīng)即可;(2)STBY端決定是否進(jìn)入低功耗維持狀態(tài);(3)與CPU接口的數(shù)據(jù)線為4位;(4)TC8830AF命令有11條,格式是半個(gè)字節(jié),4位的;(5)TC8830AF有DMA方式;(6)TC8830AF有錄放達(dá)63段的二種操作模式,即在手動(dòng)操作工作模式下的自動(dòng)段模式,以及在CPU操作工作模式下的標(biāo)記索引模式;(7)可讀寫語音數(shù)據(jù)存儲(chǔ)器。3.3操作原理3.3.1如何完成命令的寫入TC8830AF命令的寫入可由以下幾個(gè)步驟來完成。步驟一,利用/RD脈沖,讀取TC8830AF的狀態(tài),并且檢驗(yàn)BUSY標(biāo)志位;步驟二,如果BUSY位不是處于“忙”狀態(tài),則在P0—P3端設(shè)置好命令,并且利用/WR脈沖寫入一個(gè)命令;步驟三,對(duì)于3個(gè)半字節(jié)的命令,這時(shí)可寫入第2個(gè)半字節(jié),再寫第3個(gè)半字節(jié)。3.3.2TC8830AF語音芯片11種命令簡(jiǎn)要說明(1)NOP(半個(gè)字節(jié)命令)在聲音錄制等待狀態(tài)下,該命令設(shè)置進(jìn)入聲音再生等待狀態(tài)。另外,該命令還用于復(fù)位狀態(tài)寄存器中的OVR標(biāo)志位等等。(2)START(半個(gè)字節(jié)命令)該命令用于啟動(dòng)錄制或再生過程,在直接模式,通過地址計(jì)數(shù)器顯示出地址值。該命令還用于設(shè)置狀態(tài)寄存器中的EOS標(biāo)志位。(3)STOP(半個(gè)字節(jié)命令)在聲音錄制過程中,執(zhí)行該命令時(shí),錄制過程停止,地址計(jì)數(shù)器的值被寫入SRAM存儲(chǔ)器的索引區(qū),作為停止地址。另外,該命令還用于復(fù)位狀態(tài)寄存器中的EOS標(biāo)志。對(duì)于再生過程,該命令需執(zhí)行兩次,再生才停止,同時(shí)狀態(tài)寄存器中的EOS標(biāo)志復(fù)位。(4)ADLD1(6個(gè)半個(gè)字節(jié)命令)在地址計(jì)數(shù)器中設(shè)置5個(gè)連續(xù)的半字節(jié)數(shù)據(jù)構(gòu)成20位的地址值,并復(fù)位地址比較觸發(fā)器。另外,該命令可設(shè)置進(jìn)入聲音再生等待狀態(tài)。(5)ADLD2(6個(gè)半個(gè)字節(jié)命令)在停止地址寄存器中設(shè)置5個(gè)連續(xù)的半字節(jié)數(shù)據(jù)構(gòu)成20位的地址值,并復(fù)位地址比較觸發(fā)器。ADLD2設(shè)置的20位地址值必須大于ADLD1的20位地址值,即停止地址要大于起始地址。另外,該命令可設(shè)置進(jìn)入聲音再生等待狀態(tài)。(6)CNDT(2個(gè)半個(gè)字節(jié)命令)該命令用于定義比特率,連續(xù)的那半個(gè)字節(jié)還用于允許/禁止地址溢出探測(cè)器。另外,該命令還可用來設(shè)置進(jìn)入聲音再生等待狀態(tài)。(7)LABEL(3個(gè)半個(gè)字節(jié)命令)該命令通過連續(xù)的2個(gè)半字節(jié)的數(shù)據(jù)定義段號(hào)啟動(dòng)聲音的錄制/再生。在聲音錄制守候狀態(tài)下加上該命令,地址計(jì)數(shù)器的內(nèi)容將被寫入到SRAM存儲(chǔ)器的索引區(qū)域,同時(shí)啟動(dòng)聲音的錄制。在聲音再生等待狀態(tài)下,加上該命令,并讀取了啟動(dòng)地址和停止地址后,便啟動(dòng)聲音的再生。(8)ADRD(半個(gè)字節(jié)命令)讀取地址計(jì)數(shù)器的內(nèi)容,一次讀取其中的四位碼元,經(jīng)5次連續(xù)訪問后,按內(nèi)地址值的低位到高位,順序獲取到20位的地址計(jì)數(shù)器內(nèi)容。在此讀入過程期間,狀態(tài)寄存器的內(nèi)容不能被讀?。徊⑶以跊]有5次連續(xù)的訪問,即未讀出20位地址值之前,也不接受下一個(gè)命令。另外,該命令還可用于設(shè)置進(jìn)入聲音再生守候狀態(tài)。(9)REC(半個(gè)字節(jié)命令)該命令用于將聲音再生等待狀態(tài)切換進(jìn)入聲音錄制等待狀態(tài)。(10)DTRD(3個(gè)半個(gè)字節(jié)命令)該命令通過2個(gè)連續(xù)的讀訪問過程,從SRAM存儲(chǔ)器中讀出8位數(shù)據(jù)。該地址值由地址計(jì)數(shù)器指示。在這個(gè)讀周期期間,不會(huì)訪問狀態(tài)存儲(chǔ)器的內(nèi)容,地址計(jì)數(shù)器也不會(huì)加1。另外,該命令還用來設(shè)置進(jìn)入聲音再生等待狀態(tài)。(11)DTWR(3個(gè)半個(gè)字節(jié)命令)該命令通過2個(gè)連續(xù)的半字節(jié)數(shù)據(jù)而寫入SRAM存儲(chǔ)器中一個(gè)8位的數(shù)據(jù),該SRAM地址值由地址計(jì)數(shù)器決定,此時(shí)地址計(jì)數(shù)器不會(huì)加1。另外,該命令還用于設(shè)置進(jìn)入聲音再生等待狀態(tài)。在聲音錄制/再生過程中,上述的11條指令,只有STOP命令有效。3.3.3TC8830AF語音芯片狀態(tài)寄存器簡(jiǎn)介狀態(tài)寄存器由四位組成,在CPU操作工作模式下,當(dāng)/RD端被設(shè)為低電平時(shí),狀態(tài)寄存器的四位數(shù)據(jù)在P0—P3端口輸出,它反映了TC8830AF的工作狀態(tài)。狀態(tài)寄存器的每一位標(biāo)志位說明見表3.1。表3.1狀態(tài)寄存器位情況端口名稱P3P2P1P0狀態(tài)寄存器—OVRBUSYEOS可見,四位狀態(tài)寄存器中僅有三位狀態(tài)標(biāo)志位,下面對(duì)這三位分別介紹。(1)OVR溢出標(biāo)志該位指示錄制過程的結(jié)束。在錄制過程,一旦地址計(jì)數(shù)器超過SRAM存儲(chǔ)器的最大地址,OVR溢出標(biāo)志置“1”。該OVR溢出標(biāo)志由NOP指令來復(fù)位。(2)BUSY忙標(biāo)志該位指示TC8830AF處于何種狀態(tài),即該位為“1”時(shí),表明TC8830AF正處于復(fù)位狀態(tài)或進(jìn)行內(nèi)部命令的處理過程,在BUSY標(biāo)志位置“1”后,此時(shí)不要從微處理器發(fā)出任何命令給TC8830AF,如果發(fā)出命令,那么內(nèi)部狀態(tài)將是不確定的,然而當(dāng)發(fā)出ADLD1、ADLD2或LABEL命令時(shí),未輸入要求的數(shù)據(jù),那么BUSY標(biāo)志位將不能得到復(fù)位,BUSY標(biāo)志位在該命令執(zhí)行完畢仍然為“1”,難以進(jìn)行以后的處理或完成要求的操作。(3)EOS標(biāo)志位在聲音錄制或再生的等待過程中,該位置“1”,也就是說,該位指示著錄制/再生的工作情況。當(dāng)聲音錄制或再生啟動(dòng)后,該位清位“0”,以表示等待狀態(tài)的結(jié)束。該標(biāo)志位對(duì)應(yīng)TC8830AF的EOS端口的電平情況,即該位為“1”,EOS端口呈現(xiàn)高電平;為“03.3.4聲音再生的有關(guān)流程框圖圖3.2是利用標(biāo)記索引方式下的再生過程流程示意圖。由于標(biāo)記索引方式實(shí)質(zhì)上是依據(jù)時(shí)間軸,由TC8830AF自動(dòng)定義指定段的起始地址和終止地址,只要我們利用SRAM寫入的形式,可以作出對(duì)該指定段再生內(nèi)容的轉(zhuǎn)移。入口入口NOP命令輸出CNDT命令輸出LABEL命令輸出EOS=0?EOS=1?繼續(xù)下一段?N出口放音等待狀態(tài)選擇比特率YNNYY在比特率情況下選擇段。當(dāng)命令處理終止后,TC8830AF便啟動(dòng)聲音的放聲檢查/EOS標(biāo)志位或EOS端,看放聲啟動(dòng)否檢查/EOS標(biāo)志位或EOS端,看放聲結(jié)束否決定是否繼續(xù)進(jìn)行下一段的放聲圖3.2標(biāo)記索引方式下的再生流程框圖3.3.5標(biāo)記索引方式下的操作CPU操作工作模式下,標(biāo)記索引方式是其兩種具體模式下的一種。在標(biāo)記索引方式下,每一指定段的起始地址和終止地址被自動(dòng)寫入SRAM存儲(chǔ)器的索引區(qū)中。圖3.3是有關(guān)存儲(chǔ)器在標(biāo)記索引方式下的映象圖。RAM1RAM1變址區(qū)數(shù)據(jù)區(qū)0000H00FFH1FFFH3FFFH5FFFHRAM1RAM2RAM3RAM47FFFH64kSRAM變址區(qū)數(shù)據(jù)區(qū)00000H000FFH07FFFH0FFFFH17FFFH1FFFFHRAM1RAM1RAM2RAM3RAM4256kSRAM圖3.3標(biāo)記索引方式下的存儲(chǔ)器映象圖在標(biāo)記索引方式下,TC8830AF與SRAM存儲(chǔ)器的有關(guān)操作如下:1.錄音(1)隨著啟動(dòng)信號(hào)的輸入,變址寄存器尋址SRAM存儲(chǔ)器中的專用索引區(qū)域;(2)地址計(jì)數(shù)器的值是根據(jù)變址寄存器提供的地址寫入到SRAM存儲(chǔ)器的索引區(qū)域的。上述索引區(qū)域?yàn)?0000H—000FFH;(3)地址計(jì)數(shù)器尋址SRAM存儲(chǔ)器的數(shù)據(jù)區(qū)域,即00100H以后的聲音數(shù)據(jù)存儲(chǔ)區(qū);(4)通過ADM分析電路,聲音信號(hào)經(jīng)分析,即得到錄制;聲音的數(shù)字序列被寫入SRAM存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)區(qū)予以保存;(5)地址計(jì)數(shù)器自動(dòng)計(jì)數(shù),然后重復(fù)步驟(3)和(4),以獲得所需的連續(xù)聲音數(shù)據(jù),一個(gè)周期為1個(gè)比特率;(6)如果輸入一個(gè)停止信號(hào),變址寄存器尋址SRAM存儲(chǔ)器中的索引區(qū)域;(7)地址計(jì)數(shù)器的值,根據(jù)變址寄存器提供的地址被寫入SRAM存儲(chǔ)器的索引區(qū)域中;(8)地址計(jì)數(shù)器的計(jì)數(shù)值加1后,錄制便告完成。2.聲音的再生TC8830AF的聲音再生步驟如下:(1)輸入啟動(dòng)信號(hào)后,TC8830AF內(nèi)的變址寄存器尋址SRAM存儲(chǔ)器的索引區(qū)域;(2)TC8830AF的地址計(jì)數(shù)器、停止地址寄存器和有關(guān)其它單元從索引區(qū)里取出再生段的啟動(dòng)地址、停止地址和比特率等要素;(3)地址計(jì)數(shù)器尋址SRAM存儲(chǔ)器的聲音數(shù)據(jù)區(qū);(4)聲音數(shù)據(jù)送入ADM分析和合成電路,使聲音得以合成;(5)地址計(jì)數(shù)器計(jì)數(shù)值遞增,以獲取所需再生的聲音的數(shù)據(jù);(6)地址計(jì)數(shù)器的值與停止地址寄存器中已裝入的結(jié)束地址值相比較,如果兩者相一致,聲音再生便停止,同時(shí)地址計(jì)數(shù)器指示到結(jié)束地址加1的新地址上;如果不一致,則重復(fù)步驟(3)、(4)、(5)、(6),以獲得一個(gè)有效的聲音再生。3.4TC8830AF語音合成芯片的外圍電路TC8830AF可以使用EPROM、SRAM、ROM、E2PROM,一般直接與TC8830AF相連,可以連接四片64k位或256k位的存儲(chǔ)器。當(dāng)決定了外圍存儲(chǔ)器容量后,TC8830AF端的256k端應(yīng)根據(jù)實(shí)際使用情況決定接電平的高低。在CPU控制下的標(biāo)記索引模式下,SRAM存儲(chǔ)器的訪問時(shí)間最大為200ns。TC8830AF接可達(dá)4片存儲(chǔ)器,對(duì)于選擇使用的外接存儲(chǔ)器芯片數(shù)目是依靠其提供的地址線來自動(dòng)完成的。在連接二片或兩片以上存儲(chǔ)器芯片時(shí),TC8830AF的/CE1端必須與第一片存儲(chǔ)器的選通端/CE端相連,TC8830AF的/CE2端則與第二片存儲(chǔ)器的/CE端相連,其余類推。TC8830AF與存儲(chǔ)器的連接是一一對(duì)應(yīng)的并行關(guān)系。

第4章語音報(bào)時(shí)系統(tǒng)的設(shè)計(jì)根據(jù)任務(wù)書的要求,基于語音合成芯片TC8830AF的語音報(bào)時(shí)系統(tǒng)應(yīng)具有的功能有:能夠24小時(shí)在LED顯示器上顯示當(dāng)前時(shí)間,并且可通過鍵盤設(shè)置時(shí)間,24小時(shí)實(shí)時(shí)報(bào)時(shí),在整點(diǎn)半點(diǎn)時(shí)自動(dòng)報(bào)時(shí),時(shí)間精度為秒。4.1語音報(bào)時(shí)系統(tǒng)的總體設(shè)計(jì)思想及工作原理本語音報(bào)時(shí)系統(tǒng)的建立分為兩個(gè)步驟:首先是錄制本語音報(bào)時(shí)系統(tǒng)所需要的語音數(shù)據(jù)即語音庫的建立,其次是運(yùn)行系統(tǒng)的建立。本語音報(bào)時(shí)系統(tǒng)的總體設(shè)計(jì)思想為:使用8031作為整個(gè)系統(tǒng)的CPU,利用外擴(kuò)程序存儲(chǔ)器的8031單片機(jī)自身的定時(shí)器/計(jì)數(shù)器來實(shí)現(xiàn)時(shí)間的計(jì)數(shù);通過外接8155來擴(kuò)展8031的I/O口,通過8155的I/O口來外接4*3的鍵盤和6位8段LED顯示器,利用這些設(shè)備來實(shí)現(xiàn)時(shí)間數(shù)據(jù)的采集與顯示;利用8031對(duì)TC8830AF的控制來實(shí)現(xiàn)語音庫的建立和語音報(bào)時(shí),在語音庫建立時(shí),須將TC8830AF連接一個(gè)256K位的SRAM65256作為語音存儲(chǔ)器,錄音完畢后把SRAM65256中的語音數(shù)據(jù)固化到EPROM27256中,系統(tǒng)運(yùn)行時(shí)用EPROM27256替代SRAM65256連接到TC8830AF上作為語音庫以供放音時(shí)使用,這樣系統(tǒng)運(yùn)行時(shí)就不怕掉電造成語音庫的丟失。本語音報(bào)時(shí)系統(tǒng)的工作原理為:系統(tǒng)加電運(yùn)行后,自動(dòng)顯示初始時(shí)間為00點(diǎn)00分00秒,這時(shí)需要設(shè)置時(shí)間,通過按鍵盤上的*號(hào)鍵進(jìn)入設(shè)置時(shí)間模式,然后通過按鍵盤上的數(shù)字鍵來輸入時(shí)間,按時(shí)、分、秒的十位、個(gè)位的順序鍵入。設(shè)置完后,系統(tǒng)顯示設(shè)置后的時(shí)間,并開始正常運(yùn)行。顯示器每秒鐘更新一次顯示,即顯示當(dāng)前時(shí)間。系統(tǒng)運(yùn)行的任何時(shí)刻都可以響應(yīng)按鍵,若掃描到有#號(hào)鍵按下,則播報(bào)當(dāng)前時(shí)間;若掃描到有*號(hào)鍵按下,則進(jìn)入時(shí)間設(shè)置狀態(tài),且按時(shí)、分、秒的順序來接受鍵盤輸入的數(shù)據(jù);若沒有*號(hào)鍵按下,而掃描到有數(shù)字鍵按下,則不予響應(yīng)。系統(tǒng)運(yùn)行期間,當(dāng)?shù)竭_(dá)半點(diǎn)或整點(diǎn)時(shí),系統(tǒng)自動(dòng)報(bào)時(shí)。4.2語音報(bào)時(shí)系統(tǒng)的硬件設(shè)計(jì)4.2.1硬件的模塊化設(shè)計(jì)1.單片機(jī)8031程序存儲(chǔ)器的外擴(kuò)模塊由于8031單片機(jī)具有集成度高、功能強(qiáng)、編程靈活、指令豐富、運(yùn)算速度快、體積小等優(yōu)點(diǎn),并且它的外圍接口芯片也非常完善,所以本系統(tǒng)采用它作為控制系統(tǒng)的核心是合理的。由于8031無內(nèi)部程序存儲(chǔ)器,故選用容量為2K的EPROM2716作為其外擴(kuò)程序存儲(chǔ)器。8031的P0口作為地址/數(shù)據(jù)分時(shí)復(fù)用總線,故需74LS373地址鎖存器來鎖存低8位地址。由于使用的是外部程序存儲(chǔ)器,故需將/EA端置為低電平,使CPU只訪問外部程序存儲(chǔ)器。CPU的取指過程如下:首先從P0口(低8位)、P2口(高8位,這里只需連3根)送出地址信息,與此同時(shí)從ALE引腳送出地址鎖存允許信號(hào),該信號(hào)送至74LS373的使能端,在ALE信號(hào)消失時(shí),將P0口送出的低8位地址信息鎖存到74LS373的輸出端。由于74LS373的輸出允許/OE接地,因此低8位地址一直被允許輸出,這樣,由74LS373輸出的低8位地址和P2口送出的高8位地址,確定了對(duì)外部程序存儲(chǔ)器的尋址單元。當(dāng)ALE信號(hào)消失后,P0口就由輸出方式變?yōu)檩斎敕绞郊锤】諣顟B(tài),等待從程序存儲(chǔ)器中讀出指令。緊接著CPU送出外部程序存儲(chǔ)器讀選通信號(hào)/PSEN,該信號(hào)送到了2716的/OE和/CE端,即輸出允許和片選端。這樣CPU就從2716被選中的單元中讀取了相應(yīng)的指令,從而完成了取指。2.8031與TC8830AF的連接及TC8830AF與語音數(shù)據(jù)庫的連接模塊此模塊中,在語音錄制時(shí)和語音報(bào)時(shí)系統(tǒng)運(yùn)行這兩個(gè)階段,8031與TC8830AF的連接是相同的,而TC8830AF與語音數(shù)據(jù)庫的連接是不一樣的。語音錄制時(shí),因?yàn)橐獙?duì)存儲(chǔ)器進(jìn)行寫操作,故必須使用SRAM。另考慮到用8kbps的速率錄制本系統(tǒng)所需的語音,256K位的容量足以存儲(chǔ)此語音報(bào)時(shí)系統(tǒng)的數(shù)據(jù),所以選用SRAM65256芯片作為語音數(shù)據(jù)庫。在系統(tǒng)運(yùn)行期間,TC8830AF連接的是EPROM27256,考慮到系統(tǒng)運(yùn)行時(shí)萬一掉電,SRAM中的數(shù)據(jù)可能會(huì)丟失,所以語音錄制完后,需將SRAM中的語音數(shù)據(jù)固化到EPROM中,以保證掉電后數(shù)據(jù)不會(huì)丟失。下面介紹8031與TC8830AF的連接。TC8830AF的P0-P3與8031的P0.0-P0.3相連,作為8031與TC8830AF之間的命令和狀態(tài)的雙向數(shù)據(jù)直接總線。另外,8031的P1.0與TC8830AF的復(fù)位段/ACL相連,在錄音時(shí),需要復(fù)位;在放音時(shí),禁止復(fù)位。8031的P1.1、P1.2分別與TC8830AF的/RD、/WR相連,用于8031控制TC8830AF的讀寫選通。8031的P1.3與TC8830AF的STBY相連,用于設(shè)置進(jìn)入守候狀態(tài),錄音和放音時(shí)應(yīng)設(shè)為低電平。8031的P1.5與TC8830AF的/CE的端相連,用于選通TC8830AF。TC8830AF的CPUM固定為高電平,即令其工作在CPU操作模式下,端口256K也接高電平,因?yàn)樵撓到y(tǒng)選用的是256K位的語音存儲(chǔ)器。語音的錄制是通過8031來控制TC8830AF,對(duì)SRAM65256進(jìn)行寫操作,從而建立語音庫。TC8830AF的A0-A14地址線與65256的A0-A14對(duì)應(yīng)相連,TC8830AF的數(shù)據(jù)線D0-D7對(duì)應(yīng)相連;TC8830AF的/CE1端與65256的/CS端相連,片選65256;TC8830AF的R/W端與65256的/WE直接相連,同時(shí)通過反相器連接到65256的/OE端。語音報(bào)時(shí)系統(tǒng)的報(bào)時(shí),是通過8031對(duì)TC8830AF的控制對(duì)EPROM27256進(jìn)行讀操作,讓TC8830AF在半點(diǎn)整點(diǎn)報(bào)時(shí),或是響應(yīng)鍵盤的#號(hào)鍵,播報(bào)當(dāng)前時(shí)間。TC8830AF的地址線、數(shù)據(jù)線引腳分別于EPROM27256的地址、數(shù)據(jù)線引腳相連,TC8830AF的/CE連接EPROM的/CE片選端。TC8830AF的R/W端通過反相器74LS04連接到EPROM的/OE端,來控制EPROM的讀選通。3.8031外擴(kuò)8155連接4*3鍵盤和LED顯示器模塊為實(shí)現(xiàn)本語音報(bào)時(shí)系統(tǒng)的時(shí)間設(shè)置功能和時(shí)間顯示功能,必須加上外設(shè)鍵盤和顯示器。8031自身的I/O有限,而連接鍵盤和顯示器需要的I/O接口比較多,故本系統(tǒng)通過外接8155作為8031的擴(kuò)展I/O口。8155的地址數(shù)據(jù)總線AD0-AD7與8031的P0口相連;8155的RESET端與8031的P1.7相連,用來控制8155的復(fù)位;8155的IO/M端和/CE端分別連接8031的P2.6和P2.7,通過P2.6來決定8155是作為I/O口還是存儲(chǔ)器;8155的/WR和/RD端分別與8031的/WR和/RD端相連,從而控制8155的讀寫選通;8155的ALE端和8031的ALE/PROG端相連,用以鎖存8155的地址信息、片選信號(hào)和I/O信號(hào)。由于本系統(tǒng)需要設(shè)置時(shí)間,還要具有實(shí)時(shí)報(bào)時(shí)功能,從而需要有十個(gè)數(shù)字鍵和兩個(gè)功能鍵,故使用4*3的鍵盤。同時(shí)由于鍵盤操作的頻率比較小,所以通過外部中斷來掃描鍵盤。在鍵盤的列線上連接電阻及正電源使無鍵閉合時(shí)列線列線總保持在高電平,三列線上的電平通過連個(gè)與門及一個(gè)同或門然后接到8031的外部中斷/INT0。這三個(gè)門電路的作用是控制一行中同時(shí)有多個(gè)鍵按下的情況。當(dāng)無鍵或一行有多個(gè)按下時(shí),/INT0為高電平。任意一鍵按下時(shí),/INT0變?yōu)榈碗娖?,這時(shí)CPU響應(yīng)中斷并執(zhí)行中斷服務(wù)程序。鍵盤的行線通過二極管連接到8155的A口,作為輸出線;鍵盤的列線連接到8155的C口,作為輸入線。二極管的作用是控制一列由多個(gè)鍵按下時(shí)只能掃描一行。8155與LED顯示器的連接,由于LED需要的接口比較多,故需要加上74LS138譯碼器來實(shí)現(xiàn)對(duì)LED顯示器的片選,7447譯碼/驅(qū)動(dòng)器來驅(qū)動(dòng)LED的段選擇。PB口用來連接LED顯示器,PB0-PB3與7447的A-D相連,PB4-PB6與74LS138的A-C相連。LED顯示器用的是共陽極的,而74LS138輸出的是低電平,故加三極管對(duì)其片選進(jìn)行反相驅(qū)動(dòng)。74LS138的Y0-Y5分別連接在6個(gè)LED的片選端相連的三極管的基極,用來片選LED顯示器。三極管的發(fā)射極接高電平,集電極與LED的片選端相連。7447譯碼/驅(qū)動(dòng)器的a-g與每個(gè)LED的前7段分別相連,只有第二個(gè)和第四個(gè)LED的“.”斷設(shè)為低電平,以讓其一直導(dǎo)通顯示。4.2.2語音報(bào)時(shí)系統(tǒng)的硬件總體設(shè)計(jì)1.語音錄制系統(tǒng)的硬件總體設(shè)計(jì)語音報(bào)時(shí)系統(tǒng)首先需要建立報(bào)時(shí)所需的語音庫,所以先要設(shè)計(jì)語音錄制系統(tǒng)。將模塊1(8031程序存儲(chǔ)器的外擴(kuò)模塊)和模塊2(TC8830AF與語音數(shù)據(jù)庫的連接模塊)這兩個(gè)模塊組合起來,就構(gòu)成了語音錄制系統(tǒng)。圖4.1為語音錄制系統(tǒng)的硬件設(shè)計(jì)圖。如圖4.1所示,在8031的P1.6上連接一個(gè)單刀雙擲開關(guān),用來控制每段錄音的開始與結(jié)束。本系統(tǒng)采用的是標(biāo)記索引方式下的錄音,若要開始錄音,則將開關(guān)打到低電平,一段錄完后將開關(guān)擲向高電平,若要進(jìn)行下一段的錄音則再將開關(guān)打到低電平。2.語音報(bào)時(shí)系統(tǒng)的硬件總體設(shè)計(jì)語音報(bào)時(shí)系統(tǒng)的硬件設(shè)計(jì),就是將模塊1(8031程序存儲(chǔ)器的外擴(kuò)模塊)、模塊2(TC8830AF與語音數(shù)據(jù)庫的連接模塊)以及模塊3(8031外擴(kuò)8155連接4*3鍵盤和LED顯示器模塊)這三個(gè)模塊組合起來構(gòu)成的。圖4.2為基于TC8830AF的語音報(bào)時(shí)系統(tǒng)的總體硬件圖。在語音錄制好后,再將SRAM65256中的內(nèi)容固化到EPROM27256中,同時(shí)將程序存儲(chǔ)器EPROM2716的內(nèi)容換成系統(tǒng)運(yùn)行時(shí)的程序。如圖4.2所示,此語音報(bào)時(shí)系統(tǒng)的硬件設(shè)計(jì)中,模塊1中的8031外擴(kuò)程序存儲(chǔ)器用來實(shí)現(xiàn)本系統(tǒng)的核心控制功能,首先是完成時(shí)間的計(jì)數(shù),其次是響應(yīng)鍵盤的輸入,送出顯示器所需的數(shù)據(jù),最后是控制語音報(bào)時(shí)。模塊2實(shí)現(xiàn)的功能是語音報(bào)時(shí)。模塊3的功能是時(shí)間的顯示與設(shè)置,以及實(shí)時(shí)報(bào)時(shí)。綜合考察本設(shè)計(jì)所用的器件較合理,本系統(tǒng)能夠?qū)崿F(xiàn)所要求的功能,而且本系統(tǒng)也是可實(shí)現(xiàn)的,即本系統(tǒng)是可行的。

圖4.1語音錄制系統(tǒng)的硬件設(shè)計(jì)圖

圖4.2語音報(bào)時(shí)系統(tǒng)的總體硬件圖

4.3語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì)軟件設(shè)計(jì)和硬件設(shè)計(jì)一樣也分為兩個(gè)步驟。首先是語音錄制系統(tǒng)的軟件設(shè)計(jì),其次是語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì)。4.3.1語音錄制系統(tǒng)的軟件設(shè)計(jì)1.語音錄制系統(tǒng)的設(shè)計(jì)思想本語音報(bào)時(shí)系統(tǒng)的語音庫包括:“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“點(diǎn)”、“分”、“秒”、“現(xiàn)在是北京時(shí)間”。本錄音系統(tǒng)的軟件設(shè)計(jì)思想為:通過8031對(duì)TC8830AF進(jìn)行控制,使其工作在CPU工作模式的標(biāo)志索引方式下,一段一段地將語音錄制到SRAM65256中。根據(jù)TC8830AF的標(biāo)記索引方式下的工作原理,語音錄制后,數(shù)據(jù)在SRAM中的格式為:00H-0FFH為索引數(shù)據(jù)的存儲(chǔ)區(qū)域,從100H開始為語音數(shù)據(jù)的存儲(chǔ)區(qū)域。本錄音系統(tǒng)在標(biāo)記索引方式下錄音后,每一段在SRAM索引區(qū)域的地址及段的內(nèi)容如下:00H-03H:段0起始地址存儲(chǔ)語音:“零”04H-07H:段1起始地址存儲(chǔ)語音:“一”08H-0BH:段2起始地址存儲(chǔ)語音:“二”0CH-0FH:段3起始地址存儲(chǔ)語音:“三”10H-13H:段4起始地址存儲(chǔ)語音:“四”14H-17H:段5起始地址存儲(chǔ)語音:“五”18H-1BH:段6起始地址存儲(chǔ)語音:“六”1CH-1FH:段7起始地址存儲(chǔ)語音:“七”20H-23H:段8起始地址存儲(chǔ)語音:“八”24H-27H:段9起始地址存儲(chǔ)語音:“九”28H-2BH:段10起始地址存儲(chǔ)語音:“十2CH-2FH:段11起始地址存儲(chǔ)語音:“點(diǎn)”30H-33H:段12起始地址存儲(chǔ)語音:“分”34H-37H:段13起始地址存儲(chǔ)語音:“秒”38H-3BH:段14起始地址存儲(chǔ)語音:“現(xiàn)在是北京時(shí)間”3CH-3FH:段14結(jié)束地址2.錄音系統(tǒng)的程序設(shè)計(jì)說明如圖4.3所示為錄音程序的流程圖。由圖看出其流程為:首先定義中斷入口,在TC8830AF的命令寫入延時(shí)用到了定時(shí)器0;其次選中TC8830AF,復(fù)位STBY禁止TC8830AF進(jìn)入守候狀態(tài),再復(fù)位TC8830AF;然后定義語音錄制的比特率,用REC命令使TC8830AF進(jìn)入錄制等待狀態(tài);這樣就可以人為的控制每一段錄音的開始與結(jié)束。如圖4.1所示,將開關(guān)打在低電平端,開始錄音;打在高電平端,停止錄音。開始開始設(shè)置中斷入口選中TC8830AF,復(fù)位STBY及/ACLCNDT命令定義比特率REC命令進(jìn)入錄音等待狀態(tài)是否準(zhǔn)備好錄音EOS=0?EOS=1?停止錄制?所有段錄完?結(jié)束YLABEL命令寫入段序號(hào)并開始錄音NNYYSTOP命令停止該段的錄制YNNYNNNN圖4.3錄音程序流程圖4.3.2語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì)1.語音報(bào)時(shí)系統(tǒng)的軟件設(shè)計(jì)思想首先介紹軟件設(shè)計(jì)的思想:首先初始化8031的內(nèi)存,設(shè)定中斷入口,設(shè)定啟動(dòng)8031定時(shí)器/計(jì)數(shù)器,并以時(shí)間顯示程序作為主程序;利用定時(shí)器/計(jì)數(shù)器0的中斷來實(shí)現(xiàn)時(shí)間的計(jì)數(shù),并在中斷服務(wù)時(shí)判斷是否為半點(diǎn)或整點(diǎn);通過外部中斷0來響應(yīng)鍵盤的輸入,有鍵按下時(shí),進(jìn)行鍵盤掃描。系統(tǒng)的軟件設(shè)計(jì)分為主要的五大模塊:初始化程序模塊、主程序模塊、定時(shí)器0的中斷服務(wù)程序模塊、外部中斷0的中斷服務(wù)程序模塊、語音報(bào)時(shí)模塊。本系統(tǒng)中8031的內(nèi)部RAM的分配如下:30H:時(shí)的十位LED顯示存儲(chǔ)地址31H:時(shí)的個(gè)位LED顯示存儲(chǔ)地址32H:分的十位LED顯示存儲(chǔ)地址33H:分的個(gè)位LED顯示存儲(chǔ)地址34H:秒的十位LED顯示存儲(chǔ)地址35H:秒的個(gè)位LED顯示存儲(chǔ)地址36H:秒計(jì)數(shù)器CL_S的存儲(chǔ)地址37H:分計(jì)數(shù)器CL_M的存儲(chǔ)地址38H:時(shí)計(jì)數(shù)器CL_H的存儲(chǔ)地址40H:鍵盤掃描程序中,存儲(chǔ)鍵值計(jì)數(shù)器的地址41H:重置時(shí)間時(shí),存儲(chǔ)當(dāng)前應(yīng)重置的LED地址的寄存器地址位尋址區(qū)中:22H:*號(hào)鍵的標(biāo)志位23H:#號(hào)鍵的標(biāo)志位2.各模塊程序設(shè)計(jì)說明(1)初始化程序模塊系統(tǒng)的初始化主要包括:設(shè)置中斷入口;定義定時(shí)器T0的定時(shí)初值和時(shí)分秒計(jì)數(shù)器的地址;設(shè)置堆棧的首址;將顯示器緩沖器的各單元清0;清除中斷允許IE;8031外部中斷0的初始化:設(shè)置/INT0為低電平有效,開外部中斷0,并設(shè)為低優(yōu)先級(jí);8031定時(shí)器T0的中斷初始化:主要包括定義工作組寄存器為組1,設(shè)置T0的工作方式為方式1,設(shè)置定時(shí)初值為3CB0H,時(shí)分秒計(jì)數(shù)器全部清0,設(shè)置1s所需定時(shí)累加的次數(shù)為20次,開定時(shí)器T0的中斷,設(shè)置為高優(yōu)先級(jí),并啟動(dòng)定時(shí)器;最后打開中斷總允許位EA,跳轉(zhuǎn)到主程序。初始化程序的流程圖如圖4.4所示。開始開始設(shè)置中斷入口定義定時(shí)器T0的定時(shí)初值定義時(shí)分秒的計(jì)數(shù)器的地址設(shè)置堆棧的首地址將顯示緩沖器清0,即30-35H清0將顯示緩沖器的首地址放入41H中IE清0,禁止所有中斷調(diào)用外部中斷0的初始化程序調(diào)用定時(shí)器0中斷的初始化程序打開總允許位EA跳轉(zhuǎn)到主程序圖4.4初始化程序流程圖(2)顯示主程序模塊主程序以顯示程序?yàn)橹骶€,在系統(tǒng)初始化以后(包括中斷初始化和8155的初始化),進(jìn)入顯示程序,并循環(huán)顯示。此系統(tǒng)有兩個(gè)中斷,定時(shí)器的中斷每隔50ms產(chǎn)生一次,外部中斷0是隨機(jī)產(chǎn)生的。當(dāng)中斷產(chǎn)生時(shí),暫停執(zhí)行主程序,轉(zhuǎn)而執(zhí)行相應(yīng)的中斷服務(wù)程序,服務(wù)程序執(zhí)行完畢后返回主程序。主程序流程圖如圖4.5所示。顯示程序的功能就是將顯示緩沖器中的內(nèi)容輸出到LED數(shù)碼管上顯示出來。顯示程序的具體實(shí)現(xiàn)見附錄中的程序清單。開始選中8155并復(fù)位8155開始選中8155并復(fù)位8155令8155工作在I/O口方式定義8155的A、B口輸出,C口輸入設(shè)置工作組寄存器為組0調(diào)用顯示程序(3)定時(shí)器0的中斷服務(wù)程序模塊系統(tǒng)初始化時(shí)設(shè)置T0為每50ms中斷一次,中斷20次計(jì)時(shí)1s,然后改變時(shí)分秒計(jì)數(shù)器的值,每1s鐘設(shè)置一次#號(hào)鍵的標(biāo)志位,即將其置1,從而控制1s內(nèi)只響應(yīng)一次#號(hào)鍵的報(bào)時(shí);每秒更新一次顯示器;若分計(jì)數(shù)器的值到達(dá)30,即到達(dá)半點(diǎn),或是時(shí)計(jì)數(shù)器的值改變了,即到達(dá)整點(diǎn)時(shí),調(diào)用報(bào)時(shí)程序。定時(shí)中斷服務(wù)程序模塊的流程圖如圖4.6所示。圖中的時(shí)分秒轉(zhuǎn)換程序,就是將時(shí)分秒計(jì)數(shù)器的值更新到顯示器的緩沖器中。(4)外部中斷0的中斷服務(wù)程序模塊鍵盤安排為(PA3,PC0)01H,(PA3,PC1)02H,(PA3,PC2)03H;(PA2,PC0)04H,(PA2,PC1)05H,(PA2,PC2)06H;(PA1,PC0)07H,(PA1,PC1)08H,(PA1,PC2)09H;(PA0,PC0)#號(hào)鍵,(PA0,PC1)00H,(PA0,PC2)*號(hào)鍵。其中有兩個(gè)功能鍵即#號(hào)鍵和#號(hào)鍵。#號(hào)鍵的功能是報(bào)時(shí),*號(hào)鍵的功能是設(shè)置時(shí)間。當(dāng)系統(tǒng)響應(yīng)外部中斷后,首先是關(guān)外部中斷,隨后進(jìn)行鍵盤掃描,掃描完畢打開中斷。鍵盤掃描程序的流程是:首先逐行進(jìn)行掃描,檢測(cè)是否有鍵按下,若有鍵按下,則掃描鍵所在的列,并進(jìn)行鍵值的計(jì)算。最后進(jìn)入鍵值功能判斷程序,判斷該鍵是數(shù)字鍵還是功能鍵,然后執(zhí)行相應(yīng)的程序。外部中斷0的中斷服務(wù)程序的流程圖如圖4.7所示。鍵值功能判斷程序的流程是:若檢測(cè)到*號(hào)鍵,將顯示緩沖器清0,進(jìn)入時(shí)間的設(shè)置,并將*號(hào)鍵標(biāo)志位置1,以響應(yīng)輸入的數(shù)字鍵;若檢測(cè)到#號(hào)鍵,先判斷*號(hào)鍵標(biāo)志位是否為1,是則清除*號(hào)鍵標(biāo)志,并調(diào)用時(shí)分秒轉(zhuǎn)換程序,以恢復(fù)顯示時(shí)間,否則直接判斷#號(hào)鍵標(biāo)志位是否為1,則清除#號(hào)鍵標(biāo)志位并且系統(tǒng)調(diào)用報(bào)時(shí)程序;若#號(hào)鍵標(biāo)志為0,即一秒鐘內(nèi)已響應(yīng)過該鍵,則忽略此鍵,已保證不會(huì)過于頻繁地報(bào)時(shí);若判斷為數(shù)字鍵,則先判斷*號(hào)鍵標(biāo)志是否為1,不是則忽略此鍵,是將輸入的數(shù)字存入顯示緩沖器,且按時(shí)、分、秒的十位、個(gè)位順序逐一存儲(chǔ),存儲(chǔ)前要檢查該數(shù)字是否超過時(shí)間的范圍。如小時(shí)的十位只能小于等于2;分、秒的十位都要小于6,若是超出范圍系統(tǒng)應(yīng)不予顯示,需要重新輸入該位的數(shù)字。當(dāng)6位數(shù)據(jù)都已經(jīng)存入顯示緩沖器,則改變時(shí)分秒計(jì)數(shù)器的值,即成功設(shè)置時(shí)間。鍵值功能判斷程序流程圖如圖4.8所示。入口入口保護(hù)現(xiàn)場(chǎng)設(shè)置工作組寄存器為組1IS中斷次數(shù)R7減1R7=0?IS中斷次數(shù)R7重置為14H秒計(jì)數(shù)器加1,#鍵標(biāo)志置1秒計(jì)數(shù)=60?秒計(jì)數(shù)器清0,分計(jì)數(shù)器加1分計(jì)數(shù)=30?分計(jì)數(shù)=60?分計(jì)數(shù)器清0,時(shí)計(jì)數(shù)器加1時(shí)計(jì)數(shù)=24?時(shí)計(jì)數(shù)器清0調(diào)用報(bào)時(shí)程序調(diào)用時(shí)分秒轉(zhuǎn)換程序恢復(fù)現(xiàn)場(chǎng)中斷返回NNNYNNYYY圖4.6定時(shí)中斷服務(wù)程序模塊流程圖入口入口保護(hù)現(xiàn)場(chǎng)并關(guān)外部中斷0設(shè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論