多功能語(yǔ)音人機(jī)接口模塊的設(shè)計(jì)及實(shí)現(xiàn)
關(guān)鍵詞:人機(jī)接口;語(yǔ)音錄制;語(yǔ)音播放;液晶顯示;RS232接口
1 引言
指紋門(mén)禁系統(tǒng)、POS系統(tǒng)(電子收款系統(tǒng))、ATM(自動(dòng)取款機(jī))等嵌入式應(yīng)用系統(tǒng)都需要友好的人機(jī)接口。高端應(yīng)用的人機(jī)接口一般都采用觸摸屏,但價(jià)格高,一般性應(yīng)用難以接受。觸摸屏加鍵盤(pán)模式的應(yīng)用目前只見(jiàn)于各大銀行的ATM機(jī)上。所以開(kāi)發(fā)一款簡(jiǎn)單易用且價(jià)格低廉的人機(jī)接口產(chǎn)品有著重要意義和廣闊的應(yīng)用前景。筆者采用微控制器控制鍵盤(pán)、液晶顯示、語(yǔ)音芯片、標(biāo)準(zhǔn)通信口來(lái)實(shí)現(xiàn)語(yǔ)音人機(jī)接口模塊。該語(yǔ)音人機(jī)模塊具有接口友好、實(shí)現(xiàn)方便、成本低廉等特點(diǎn)。它適應(yīng)于成本敏感,主處理器處理能力強(qiáng)大但控制能力弱的場(chǎng)合。
筆者設(shè)計(jì)的人機(jī)接口模塊已應(yīng)用于某指紋門(mén)禁系統(tǒng)中。該系統(tǒng)中,主處理器(DSP數(shù)字信號(hào)處理器)主要用來(lái)處理指紋算法(指紋增強(qiáng)、二值化、細(xì)化、特征提取及特征匹配等),如果要求主處理器擴(kuò)展適當(dāng)外圍電路來(lái)實(shí)現(xiàn)人機(jī)接口,勢(shì)必會(huì)影響整個(gè)系統(tǒng)的處理速度,因?yàn)橹讣y處理算法有著很高的時(shí)間和空間復(fù)雜度,將占用絕大部分處理器資源。采用該智能語(yǔ)音人機(jī)接口模塊后,微控制器通過(guò)RS232接口與主處理器(DSP)交換數(shù)據(jù),大大提高了指紋處理程序的運(yùn)行速度,從而提高了整個(gè)系統(tǒng)的性能。
2 人機(jī)接口模塊總體設(shè)計(jì)
人機(jī)接口模塊主要由AT89C51型微控制器、ISD2560型語(yǔ)音錄放器件、LCMl602型液晶顯示、RS232接口、鍵盤(pán)和控制執(zhí)行單元組成。人機(jī)接口模塊組成框圖如圖l所示。
微控制器負(fù)責(zé)整個(gè)模塊的功能控制和與主處理器的通信。鍵盤(pán)用來(lái)接收用戶(hù)輸入信號(hào)。語(yǔ)音錄放單元實(shí)現(xiàn)交互提示語(yǔ)言的錄制和播放。液晶顯示單元輔助用戶(hù)輸入并為用戶(hù)顯示提示信息(包括在模塊開(kāi)發(fā)調(diào)試過(guò)程中的調(diào)試信息)??刂茍?zhí)行單元屬于可選用單元,針對(duì)具體應(yīng)用進(jìn)行取舍。指紋門(mén)禁系統(tǒng)中需要控制執(zhí)行單元來(lái)彈開(kāi)電子鎖。
3 各組成單元的設(shè)計(jì)及實(shí)現(xiàn)
下面以人機(jī)模塊的4個(gè)主要組成單元來(lái)說(shuō)明。重點(diǎn)論述語(yǔ)音錄放電路單元和液晶顯示接口單元的設(shè)計(jì)與實(shí)現(xiàn),并給出調(diào)試通過(guò)的匯編源代碼。
3.1 鍵盤(pán)、控制執(zhí)行單元
鍵盤(pán)是4x4結(jié)構(gòu),微控制器從Pl口通過(guò)掃描方式接收鍵盤(pán)輸入信息。控制執(zhí)行單元由基本三極管電路驅(qū)動(dòng)繼電器,通過(guò)微控制器的通用I/O口來(lái)控制。鍵盤(pán)、控制執(zhí)行單元易于實(shí)現(xiàn),在此不再贅述。
3.2 RS232接口單元
采用帶有1個(gè)UART(通用異步收發(fā)器)的微控制器,用UART來(lái)實(shí)現(xiàn)RS232接口是非常容易的。原因在于,UART的收發(fā)協(xié)議與RS232接口是一致的,只存在電氣特性上的差異。故UART只需進(jìn)行電平轉(zhuǎn)換即可配置成RS232串口。
利用MAX232來(lái)實(shí)現(xiàn)電平轉(zhuǎn)換,將UART轉(zhuǎn)換為RS232串口。電路圖如圖2所示。
3.3 語(yǔ)音錄放單元
為了使本系統(tǒng)的人機(jī)接口更加友好,采用了用戶(hù)易于接受的語(yǔ)音交互方式。語(yǔ)音播放單元選用的語(yǔ)音器件是ISD2560。ISD2560是美國(guó)ISD(Infor-mation Storage Devices)公司的高性能單片語(yǔ)音錄放集成電路,具有音質(zhì)好、斷電信息不丟失及與微處理器接口方便等特點(diǎn),并且只需很少的外圍電路就能組成語(yǔ)音錄放基本電路。
介紹ISD2500系列的文獻(xiàn)很多,故對(duì)其內(nèi)部結(jié)構(gòu)的介紹從略。下面重點(diǎn)探討ISD2560在此模塊中與微控制器的硬件接口設(shè)計(jì)及軟件實(shí)現(xiàn)。
ISD2560主要有3類(lèi)信號(hào),分別是錄放控制信號(hào):P/R、CE、PD及A0-A9;級(jí)聯(lián)及放音狀態(tài)指示信號(hào):OVF、EOM;模擬語(yǔ)音輸入輸出信號(hào):MIC、MI-CREF、SP+和SP-。主要信號(hào)的功能如表1所列。ISD2560與微控制器的接口電路如圖3所示。
ISD2560的錄音總長(zhǎng)度為60 s,要使語(yǔ)音器件分段錄放音,只需給出錄音或放音的起始地址。微控制器的P0口(P0口有一4.7 kΩ的上拉電阻)與P3.6、P3.7配合作為語(yǔ)音器件的地址輸入。但當(dāng)P3.6與P3.7均為高電平時(shí)(即A8與A9為高電平)。A0-A6分別對(duì)應(yīng)ISD2560的7種工作模式(其中A2對(duì)應(yīng)M2為保留待用模式)。A0-A6作為模式控制輸入時(shí),高電平有效。例如當(dāng)A8、A9和A3均為高電平時(shí),語(yǔ)音器件工作在循環(huán)放音模式M3下。微處理器的通用I/O口P2.2、P2.3和P2.4分別接至語(yǔ)音器件的控制輸入端P/R、PD和CE,用來(lái)控制語(yǔ)音器件的錄放及功耗。每段錄音結(jié)束處,ISD2560會(huì)自動(dòng)插入信息結(jié)束標(biāo)記EOM(End-Of-Message),這樣在播放語(yǔ)音至信息段尾時(shí),在EOM引腳上會(huì)產(chǎn)生一個(gè)持續(xù)12.5 ms的低電平脈沖。將EOM接至微控制器的中斷輸入口INT0,就會(huì)在每段信息播放完畢后觸發(fā)微控制器中斷。在中斷子程序中,可以重新設(shè)定語(yǔ)音器件的地址,然后緊接著播放與上一段信息連貫的詞句,從而實(shí)現(xiàn)片斷語(yǔ)句的連續(xù)組合播放。這種硬件連接有助于節(jié)省語(yǔ)音時(shí)間資源,從而大大節(jié)省硬件成本。
控制錄音和放音的基本時(shí)序如圖4所示。編寫(xiě)控制語(yǔ)音器件錄放程序時(shí),圖4中標(biāo)示出的幾個(gè)關(guān)鍵的時(shí)間參數(shù)是需要重點(diǎn)注意的。由于各控制信號(hào)(P/R、PD、A0-A9)都是在使能信號(hào)CE的下降沿采樣,故采樣前這些控制信號(hào)都必須穩(wěn)定建立,采樣后必須保持一段時(shí)間,以確保正確精準(zhǔn)的采樣,避免語(yǔ)音器件的誤動(dòng)作。TSETC和TSETA分別是P/R和A0-A9的建立時(shí)間;TPUD是器件從省電模式中退出后,能進(jìn)行正常工作的時(shí)間延遲,也可理解為PD的建立時(shí)間;THOLD是P/R和A0-A9的保持時(shí)間。另外,需要注意的是,錄音過(guò)程中,CE在MIC輸入的過(guò)程中始終要保持低電平,一旦CE或PD變?yōu)楦唠娖剑浺魧⑼V?。而在放音過(guò)程中,CE只需持續(xù)低電平TCEP(典型值為100 ns)時(shí)間即可。
理解微控制器與ISD2560時(shí)序上的這些特點(diǎn)后,給出微控制器控制語(yǔ)音器件錄音和放音的程序代碼。限于篇幅,只給出錄放音的核心控制代碼:
需要注意的是,上述代碼實(shí)現(xiàn)的功能是整片錄音然后整片放音。如果需要分段錄音、放音,只需要改動(dòng)錄放音的起始地址(由PO、A8、A9給出)及錄放音的等待延遲即可。開(kāi)始錄入語(yǔ)音或錄制完畢時(shí),最好有液晶顯示或某一特定指示燈亮,用來(lái)提示用戶(hù)錄音的開(kāi)始與結(jié)束。而放音時(shí),只需給出待播放語(yǔ)音段的起始地址和足夠的等待時(shí)間,放音過(guò)程遇到信息結(jié)束標(biāo)志后會(huì)自動(dòng)結(jié)束。限于篇幅,代碼中省略了液晶顯示的提示(需要實(shí)現(xiàn)液晶顯示時(shí),只需給出待顯示碼及有關(guān)控制命令,直接調(diào)用下文給出的液晶接口子程序可以很方便實(shí)現(xiàn))。全部代碼都已調(diào)試通過(guò),加上延遲子程序后可直接拷貝使用。
在特殊應(yīng)用場(chǎng)合,如需要播放更長(zhǎng)的語(yǔ)音信息,可以利用溢出標(biāo)志信號(hào)(OVF)來(lái)實(shí)現(xiàn)多個(gè)語(yǔ)音器件的級(jí)聯(lián)。
3.4 液晶顯示功能的設(shè)計(jì)與實(shí)現(xiàn)
從節(jié)約成本及提高系統(tǒng)可靠性的角度考慮,為實(shí)現(xiàn)液晶顯示功能,本設(shè)計(jì)選用通用LCM(液晶模塊)。LCM重量輕、體積小、功耗低、壽命長(zhǎng)、工作溫度寬,可顯示多達(dá)192種常用字符(包括所有大小寫(xiě)字母及常用符號(hào)),還可自編8種顯示字符以滿(mǎn)足特殊的顯示需求。值得一提的是LCM指令功能強(qiáng)大,可以組合成各種輸入、顯示、移位方式以滿(mǎn)足不同的應(yīng)用需求。LCM內(nèi)部集成了液晶控制(一般兼帶驅(qū)動(dòng)功能)芯片,向外提供數(shù)據(jù)傳輸及控制線(xiàn)接口,與微控制器(或微處理器)接口方便。
圖5給出LCM與微控制器的接口,下面介紹各接口線(xiàn)的功能。
LCM由+5 V電壓供電,液晶驅(qū)動(dòng)電壓Vo由20kΩ電位器分壓得到。可通過(guò)調(diào)節(jié)電位器來(lái)調(diào)節(jié)顯示屏的對(duì)比度。當(dāng)確認(rèn)指令控制正確,但屏上看不到顯示結(jié)果時(shí),不要輕易懷疑LCM已壞。這往往是由于液晶顯示的驅(qū)動(dòng)電壓不夠而引起的,此時(shí),可調(diào)節(jié)電位器,直至看到清晰的輸出。BLl、BL2(有的數(shù)據(jù)手冊(cè)上標(biāo)為A、K)分別是LCM背光燈(此LCM是光反射原理顯示的,在光線(xiàn)不足條件下,很難看清其顯示,這時(shí)必須要有背光才能看到其顯示)的陽(yáng)極與陰極。如果不需要控制背光的亮滅,可直接接至+5 V電源兩端,讓背光燈在模塊上電后一直點(diǎn)亮。
微控制器的PO口復(fù)用(上文設(shè)計(jì)中已作為ISD2560的地址選擇信號(hào))作為L(zhǎng)CM的數(shù)據(jù)總線(xiàn)(DB0-DB7),P2.5、P2.6、P2.7分別控制LCM的使能信號(hào)E、讀寫(xiě)控制信號(hào)R/W、寄存器選擇信號(hào)RS。數(shù)據(jù)總線(xiàn)是傳送指令及顯示數(shù)據(jù)的通道;使能信號(hào)E為下跳變有效;讀寫(xiě)控制信號(hào)R/W用來(lái)控制數(shù)據(jù)讀寫(xiě),高電平時(shí)為從LEM的內(nèi)部寄存器中讀取數(shù)據(jù),低電平時(shí),向LEM的內(nèi)部寄存器中寫(xiě)入數(shù)據(jù)。RS是寄存器選擇控制信號(hào),其高、低電平分別選擇數(shù)據(jù)寄存器、指令寄存器。
要編寫(xiě)微控制器訪(fǎng)問(wèn)控制LCM的程序代碼,必須徹底理解LCM的訪(fǎng)問(wèn)控制時(shí)序,如圖6所示。
圖6的簡(jiǎn)要說(shuō)明:RS在訪(fǎng)問(wèn)期間,具體的電平取決于所訪(fǎng)問(wèn)的寄存器類(lèi)型。R/W(Read)、R/W(Write)分別與其他控制信號(hào)及數(shù)據(jù)信號(hào)構(gòu)成完整的LCM讀、寫(xiě)控制時(shí)序。AT89C51執(zhí)行一條單周期指令的時(shí)間為1μs(選用12 MHz晶體時(shí))。TCS、TCH、TWEH、TDH、TCE都是ns(納秒)級(jí)的量,因而只需順序給出指令即可滿(mǎn)足時(shí)序要求。需要指出是TDS在讀寫(xiě)操作時(shí)的意義是不同的。在讀操作時(shí),TDS表示數(shù)據(jù)輸出的延遲(最大值100 ns);在寫(xiě)操作時(shí),表示待寫(xiě)入數(shù)據(jù)的最小建立時(shí)間(40 ns)。程序中的NOP指令是為了保證最低時(shí)序要求有較充分的裕度,以確保高度的可靠性。
上述代碼全部通過(guò)調(diào)試,運(yùn)行正確穩(wěn)定,可直接拷貝使用。
4 結(jié)束語(yǔ)
該人機(jī)接口模塊所有功能均已調(diào)試通過(guò),工作穩(wěn)定可靠。
模塊提供有+3.3 V電壓及備用I/0接口引出線(xiàn),為將來(lái)擴(kuò)展之用。如可采用低電壓版本的微控制器(AT89LV51、W78LE51等),這種微控制器的引腳電平與主處理器的引腳電平兼容,硬件上可以直接連接。閑置的I/0線(xiàn)可擴(kuò)展I2C接口的E2PROM,用來(lái)存儲(chǔ)需長(zhǎng)時(shí)間保存的數(shù)據(jù)。
本模塊可擴(kuò)展,裁剪性強(qiáng),針對(duì)特定的應(yīng)用場(chǎng)合增加或刪除某些單元電路即可實(shí)現(xiàn)新系統(tǒng)的人機(jī)接口。