引言
目前,在自動(dòng)取款機(jī),、自動(dòng)售貨機(jī),、工業(yè)報(bào)警系統(tǒng)、公路收費(fèi)系統(tǒng),、汽車防撞系統(tǒng),、智能玩具等領(lǐng)域具有語音輸出功能的儀器設(shè)備越來越多。我們的工作和生活環(huán)境更加人性化,、智能化,。但在工業(yè)生產(chǎn)現(xiàn)場,數(shù)碼輸出的手持式測量儀器得到大量應(yīng)用,,給測量人員讀取測量結(jié)果帶來了極大的方便,。但是具體操作時(shí),測量人員需要將儀器置于便于觀察測量結(jié)果的地方,,然后手持測量探頭進(jìn)行測量,,由于測量環(huán)境的復(fù)雜性,特別是在狹窄的工業(yè)生產(chǎn)現(xiàn)場,既便于實(shí)施測量作業(yè)又便于觀測測量結(jié)果,,二者有時(shí)不能兼顧,。此時(shí),如果儀器具有語音輸出結(jié)果的功能,,將會給測量工作人員帶來極大的方便,。筆者設(shè)計(jì)了一個(gè)基于單片機(jī)STC89C52RC、DS18B20溫度傳感器,、語音芯片ISD1730構(gòu)成的語音溫度測量系統(tǒng),,給出了語音的分段錄入、各段語音存放地址的確定,、各段語音的修正,、多段語音組合輸出等環(huán)節(jié)的詳細(xì)設(shè)計(jì)過程。
1 系統(tǒng)結(jié)構(gòu)及軟硬件設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)及工作原理
具有語音輸出功能的單片機(jī)測量,、顯示系統(tǒng)結(jié)構(gòu)框圖如圖1所示,。系統(tǒng)主要由傳感器輸入,、STC89C52RC及其外圍電路,、顯示電路、語音電路和電源電路構(gòu)成,。設(shè)計(jì)時(shí)將需要播報(bào)的語音段(或字)錄入語音芯片(系統(tǒng)失電后語音信息并不會丟失),,系統(tǒng)工作時(shí)STC89C52RC會對傳感器的信號進(jìn)行采集,通過處理后一方面將結(jié)果輸出顯示,,另一方面分析需要播報(bào)哪些語音段,,指令語音模塊將需要播報(bào)的語音段按要求組合進(jìn)行播報(bào)。
1.2 系統(tǒng)硬件電路
1.2.1 數(shù)據(jù)采集與顯示部分
單片機(jī)及其外圍電路由STC89C52RC,、復(fù)位電路,、振蕩電路等構(gòu)成單片機(jī)最小系統(tǒng);數(shù)字溫度傳感器DS18B20以一線形式與STC89C52RC的P3.7端口連接,;采用4位數(shù)碼管顯示,,顯示數(shù)據(jù)通過STC89C52RC的P0口,經(jīng)過74LS573鎖存驅(qū)動(dòng)后對數(shù)碼管段控制,,P2.0~P2.2通過74LS 138譯碼后對數(shù)碼管的字控制,,實(shí)現(xiàn)動(dòng)態(tài)掃描顯示。
1.2.2 語音電路設(shè)計(jì)
語音芯片采用美國Winbond公司的ISD1730,,工作電壓范圍為2.4~5.5V,,適合與單片機(jī)共用電源。該芯片適用于需要多段語音存儲與回放的各種高端電子系統(tǒng),,根據(jù)其外接振蕩電阻的大小不同,,可以存儲20~60s的信息。語音電路如圖2所示。在電路中,,振蕩電阻為80kΩ,,最小存儲分辨率為125 ms,可以存放30 s的語音,。信號以自然語音的形式按行存儲在其內(nèi)部的多級固態(tài)存儲器內(nèi),,可以通過指令中的11位地址對每一行的信息精確尋址,存儲的語音信息斷電后不會丟失,,理論上可以保持一百年,,存儲10萬次。
對該芯片的操作有獨(dú)立按鍵和微控制器SPI接口2種方式,。當(dāng)按鍵方式操作時(shí),,通過將圖中的S1~S4分別接地,就可以實(shí)現(xiàn)對ISD1730芯片復(fù)位,、語音刪除,、語音錄入、語音回放等操作,,這些操作也可以通過STC89C52RC實(shí)現(xiàn),。ISD1730提供了4線(SCLK、MOSI,、MISO等)SPI接口與STC89C52RC連接,,系統(tǒng)采用了STC89C52RC的P1.0、P1.1,、P1.2,、P1.3口模擬SPI時(shí)序?qū)SD1730進(jìn)行操作。語音輸出方式有2種,,系統(tǒng)以PWM的形式驅(qū)動(dòng)一個(gè)8Ω的D級揚(yáng)聲器(SPEAKER),,也可以配置成AUD(電流)或AUX(電壓)單端輸出的方式驅(qū)動(dòng)外部的音頻放大器。
1.3 對語音信息的操作
1.3.1 語音信號錄入
可以采用商業(yè)的語音拷貝機(jī)或手動(dòng)錄入方式,,將語音信號錄入語音芯片,;手動(dòng)錄入時(shí),首先借助于聲音魔法師,、文語轉(zhuǎn)換小精靈或其他的文字轉(zhuǎn)聲音軟件,,在電腦上將需要錄入的文字轉(zhuǎn)換成多段語音信息,然后將電腦的耳機(jī)輸出口與如圖2所示的Analn引腳連接,,也可以將發(fā)音設(shè)備對準(zhǔn)MIC,;閉合S33鍵,打開音源,,進(jìn)行錄制,,錄制時(shí)指示燈LED閃亮;松開S33鍵則該段語音錄制結(jié)束,LED熄滅,,一段語音錄制完成,。同理可錄制下一段;全部語音錄制完成后,,閉合S44鍵并保持,,器件將會依次將錄制的語音全部播放出來,如果錄制不理想,,可以刪除重來,;閉合S33鍵并保持,LED閃爍7次,,錄制的信息將全部刪除,。
1.3.2 各段語音在芯片內(nèi)地址的確定
語音錄制完成后,要實(shí)現(xiàn)對多段語音組合輸出,,還必須知道每段語音的存儲地址,。STC89C52RC與ISD1730之間采用SPI通信協(xié)議,TC89 C52RC通過MOSI引腳發(fā)送指令給ISD1730,,ISD1730語音芯片通過MISO引腳返回給STC89C52RC指令執(zhí)行的情況和自己內(nèi)部的狀態(tài),,每一個(gè)SPI指令執(zhí)行時(shí)都會從ISD1730返回2個(gè)字節(jié)的數(shù)據(jù)反映出芯片的狀態(tài),這2個(gè)字節(jié)的D5~D15位反映了存儲器中當(dāng)前語音段的開始存放地址,,因此通過軟件查詢就可以將存儲器中各段語音的存儲地址找出來,。下面是其主要程序片段:
當(dāng)系統(tǒng)初始化完成后,執(zhí)行以上程序,,利用串口調(diào)試程序可以觀察到返回的是每段語音存放的開始行的地址。其結(jié)束行的地址為下一段語音開始行的前一行地址,,這樣就可以得到每段語音存放的開始和結(jié)束地址,。
1.3.3 指定地址段語音的檢查和播報(bào)地址的確定
知道每段語音的存放地址后,還必須對每段語音進(jìn)行檢查,,屏蔽多余的部分,。將每段語音的開始地址和結(jié)束地址放在一個(gè)數(shù)組里面,執(zhí)行下面的程序可以將指定段語音播放出來:
采用手動(dòng)錄制的語音,,由于抖動(dòng)和操作者的快慢影響,,錄制的語音段的前后部分可能存在盲音或者不需要的信息。通過執(zhí)行上面的程序可以檢測出來,,然后修改該段語音在數(shù)組里的開始和結(jié)束地址,,繼續(xù)執(zhí)行上面的程序,反復(fù)幾次使效果達(dá)到滿意,,確定最終的播報(bào)地址,,播報(bào)時(shí)就屏蔽了不需要的部分。
1.3.4 多段語音回放
確定了每段語音的播放地址后,需要將多段語音組合,,流利,、自然的播放出來。該系列的語音芯片內(nèi)部有一個(gè)先進(jìn)先出的緩沖存儲器,,可以存放2段語音的存放地址,。當(dāng)?shù)?段語音播放完后,忽略其結(jié)束標(biāo)志(EOM)繼續(xù)播第2段語音,,同時(shí)將第3段語音的地址裝入緩沖存儲器,。這樣,可以減小播放2段信息之間的時(shí)間,,使語音更流暢,,就像播放一段語音一樣。圖3是連續(xù)播放3段語音的流程圖,。當(dāng)需要播放更多段語音時(shí),,簡單修改即可。
結(jié)語
介紹了基于單片機(jī)STC89C52RC控制的多段語音組合輸出設(shè)計(jì)過程中的幾個(gè)關(guān)鍵步驟,。
?、偬貏e是錄音時(shí),并不需要知道各段語音的確切地址和精確時(shí)間,,便于單位和個(gè)人制作,,并研制了語音測溫儀經(jīng)測試,該測溫儀語音播報(bào)流暢,、連貫,、準(zhǔn)確。
值得注意的是:
在硬件設(shè)計(jì)中,,數(shù)字地和模擬地要單獨(dú)走線,,最后一點(diǎn)接地。
?、谧⒁鉁y量數(shù)據(jù)的顯示與語音播報(bào)之間的協(xié)調(diào),,由于顯示的速度比播報(bào)的速度快得多,在播報(bào)語音時(shí),,顯示數(shù)據(jù)可能不連續(xù),,解決方法是將顯示數(shù)據(jù)鎖存或者在播報(bào)指定段信息的等待期間插入顯示程序。
?、墼谶x擇單片機(jī)STC89C52RC與語音芯片ISD1730的連接端口時(shí),,由于各端口的內(nèi)部結(jié)構(gòu)不一樣,帶負(fù)載的能力不同,,選擇P1口可靠性較好,。