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