摘 要:基于ISD1420芯片,給出一種利用單片機(jī)89C51控制的語(yǔ)音編輯器,分析該系統(tǒng)的構(gòu)成、硬件方案、用戶界面以及軟件方案。首先給出整個(gè)系統(tǒng)的總體構(gòu)成以及框圖,同時(shí)給出一個(gè)硬件系統(tǒng)的設(shè)計(jì)方案和軟件流程,也給出了一個(gè)簡(jiǎn)要的方法去實(shí)現(xiàn)用戶界面。語(yǔ)音編輯器具有分段、錄音、播放、組合播放等基本的語(yǔ)音編輯功能,具有MIC與線路錄音兩種模式,利用該方法設(shè)計(jì)的語(yǔ)音編輯器既可以單獨(dú)用來(lái)對(duì)音頻設(shè)備進(jìn)行語(yǔ)音編輯,也可以以模塊的形式加入到其他設(shè)備上。
關(guān)鍵詞:ISD1420;語(yǔ)音編輯;軟件方案;硬件方案;用戶界面
中圖分類號(hào):TP302.1文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2010)06-051-04
Design of Voice Editor Based on ISD1420
ZHANG Shihai1,HE Yonghong2,ZHANG Zaibing1,XIE Yunbo1
(1.Chongqing Information Technology College,Chongqing,404001,China;
2.College of Communication and Information Engineering,Chongqing University of Posts and Telecommunications,Chongqing,400065,China)
Abstract:A voice editor based on ISD1420,which uses microchip 89C51 to control the system′s construction,user interface and solutions of hardware and software flow are introduced,The voice editor has voice,sound recording,playback,combined voice playback and other basic editing functions.With the MIC and line recording mode,the voice editor using this method may be individually edited foraudio equipment devices,but also can be added to other devices in the form of module.
Keywords:ISD1420;voice editing;software solutions;hardware solutions;user interface
0 引 言
在嵌入式系統(tǒng)飛速發(fā)展的今天,人們的身邊無(wú)時(shí)無(wú)刻不存在著嵌入式的產(chǎn)品[1]。利用單片機(jī)和ISD1420芯片設(shè)計(jì)的語(yǔ)音編輯器可以方便地對(duì)播放的語(yǔ)音文件進(jìn)行分段播放、分段組合、以及分段錄音等功能。該語(yǔ)音編輯器可以用在測(cè)試儀以及其他產(chǎn)品上,也可以單獨(dú)用來(lái)控制語(yǔ)音播放設(shè)備。
1 系統(tǒng)構(gòu)成
語(yǔ)音編輯器要具有分段錄音、分段播放、分段組合播放等基本的語(yǔ)音編輯功能及良好的用戶操作界面。
系統(tǒng)設(shè)計(jì)主要圍繞用戶操作界面展開(kāi)。在單片機(jī)控制下,對(duì)ISD1420進(jìn)行上述基本的語(yǔ)音編輯操作。其系統(tǒng)結(jié)構(gòu)如圖1所示。
顯示器 顯示用戶在對(duì)系統(tǒng)進(jìn)行操作時(shí)的相關(guān)信息。如,分段地址、錄放音提示、分段組合操作提示等等,以直觀地指示用戶操作。
鍵盤(pán) 圍繞語(yǔ)音編輯功能,系統(tǒng)應(yīng)為用戶提供一個(gè)友好的操作界面,以使用戶方便靈活地使用本系統(tǒng)。
單片機(jī) 作為系統(tǒng)的控制核心,從鍵盤(pán)接受用戶命令,以控制系統(tǒng)顯示及語(yǔ)音電路工作。
圖1 系統(tǒng)結(jié)構(gòu)圖
ISD1420是一種錄音數(shù)據(jù)永久保存、高保真、低耗電、適用于同單片機(jī)接口的新一代語(yǔ)音器件[2],是系統(tǒng)功能實(shí)現(xiàn)的核心。在單片機(jī)控制下實(shí)現(xiàn)了題目要求的所有功能。
2 硬件方案
2.1 顯示部分
在分段錄音和放音過(guò)程中,系統(tǒng)應(yīng)該為用戶提供段地址顯示,以為其指示當(dāng)前正在操作的那個(gè)段,段地址為兩位。在這些操作中,系統(tǒng)還應(yīng)該提供操作指示,如提示開(kāi)始、進(jìn)行中、結(jié)束等。系統(tǒng)設(shè)置一位數(shù)碼管,以閃爍、字符等形式提示用戶操作。系統(tǒng)選擇3位LED七段數(shù)碼管,已基本滿足操作提示的需求,如圖2所示。
圖2 數(shù)碼管顯示部分
3位LED七段數(shù)碼管采用靜態(tài)顯示方式,其顯示穩(wěn)定,程序簡(jiǎn)單,電路實(shí)現(xiàn)也不復(fù)雜。它的顯示數(shù)據(jù)由8位D觸發(fā)器74LS374鎖存輸出,驅(qū)動(dòng)數(shù)碼管顯示。8位D觸發(fā)器的輸入采用總線連接。其鎖存控制由單片機(jī)的寫(xiě)命令WR[3],加上地址信息進(jìn)行;其地址分配為FE00H,F(xiàn)D00H,F(xiàn)B00H。
2.2 鍵盤(pán)
鍵盤(pán)是人機(jī)的主要界面,所有用戶命令都是由它向單片機(jī)發(fā)出的。首先進(jìn)行交互設(shè)計(jì),根據(jù)功能要求設(shè)置功能鍵,包括錄音、放音、組合、分段等按鍵,其操作使用方法見(jiàn)用戶使用手冊(cè)。
對(duì)段地址,系統(tǒng)需要0~9的按鍵,以保證用戶能夠?qū)ぶ稩SD1420的所有段[4]。系統(tǒng)總共由14個(gè)鍵構(gòu)成。
為滿足系統(tǒng)結(jié)構(gòu)的簡(jiǎn)單起見(jiàn),系統(tǒng)采用與鍵盤(pán)單獨(dú)接口。系統(tǒng)利用P1口與鍵盤(pán)陣列連接。其中,低4位作為單片機(jī)的鍵盤(pán)列掃描輸入;高4位作為單片機(jī)的鍵盤(pán)行掃描輸出。
系統(tǒng)采用中斷方式管理鍵盤(pán),使系統(tǒng)能夠?qū)崟r(shí)地響應(yīng)用戶操作。鍵盤(pán)陣列的4列線,連接到4與門(mén)的輸入。4與門(mén)的輸出連接單片機(jī)INT1,為低有效。平時(shí)沒(méi)有按鍵按下時(shí),4與門(mén)連接的上拉電阻使與門(mén)的輸出為高電平,無(wú)中斷產(chǎn)生。這時(shí)程序從列輸入的是1111。
在掃描鍵盤(pán)時(shí),程序首先讓行掃描輸出0000,這樣,在這4行中的14個(gè)鍵,只要有一個(gè)鍵按下,與門(mén)都能輸出低電平而產(chǎn)生中斷。程序可通過(guò)鍵盤(pán)中斷服務(wù)程序具體確定是那一個(gè)鍵按下,如圖3所示。
它的具體方法是,依次向各行(P1.7~P0.0)輸出0,程序就能從列端口讀出對(duì)應(yīng)按鍵所在位置的列編碼(P1.3~P0.0)。如表1所示。這樣程序就能得到低4位與高4位的掃描值,得到對(duì)應(yīng)鍵盤(pán)的編碼值。
2.3 ISD1420
與顯示器一起采用總線連接,段地址單片機(jī)通過(guò)74LS374鎖存后,再輸入到ISD1420,74LS374鎖存控制信號(hào)構(gòu)成同顯示器,由單片機(jī)的WR加上地址信號(hào)組合構(gòu)成。它的地址分配為7F00H。單片機(jī)通過(guò)一條輸出指令完成語(yǔ)音電路的段地址輸出,以控制語(yǔ)音電路分段操作,如圖4所示。
系統(tǒng)控制芯片的PLAYE端口,平時(shí)為高電平,當(dāng)出現(xiàn)下降沿時(shí)開(kāi)始錄音[5]。
圖3 按鍵結(jié)構(gòu)圖
表1 按鍵與行列編碼對(duì)照表
信號(hào)EOM是語(yǔ)音段結(jié)束標(biāo)志,當(dāng)錄音結(jié)束,若存儲(chǔ)器沒(méi)完,ISD1420會(huì)自動(dòng)為其加上EOM標(biāo)志符[6],表示該段錄音結(jié)束。放音時(shí),當(dāng)遇到EOM標(biāo)志符,EOM信號(hào)會(huì)由高電平輸出一個(gè)低脈沖。該信號(hào)連至單片機(jī)的T1/P3.5引腳[7],使單片機(jī)能夠及時(shí)知道該語(yǔ)音段結(jié)束,以便控制下一步操作。
圖4 ISD1420芯片電路圖
2.4 單片機(jī)
這里選擇的89C51具有40個(gè)I/O口。系統(tǒng)不能采用簡(jiǎn)單的最小系統(tǒng)連接,由上述可知,它無(wú)法滿足該系統(tǒng)的需求。該設(shè)計(jì)可利用它的開(kāi)放總線連接更多的設(shè)備。
該設(shè)計(jì)將3個(gè)數(shù)碼管和語(yǔ)音芯片通過(guò)總線方式接入系統(tǒng)。低位地址不用,所以不用進(jìn)行低8位的地址擴(kuò)展。選擇A8,A9,A10分別作為3個(gè)數(shù)碼低電平的有效地址信號(hào),再與單片機(jī)的WR信號(hào)組合,以構(gòu)成帶地址信息的寫(xiě)控制信號(hào)。這樣,程序便可像訪問(wèn)存儲(chǔ)器一樣訪問(wèn)這些端口,其地址為:FE00H,F(xiàn)D00H,F(xiàn)B00H。語(yǔ)音芯片也是采用這種方式進(jìn)入系統(tǒng)的,其地址是7F00H。這種方式既可使電路簡(jiǎn)單,也可使操作簡(jiǎn)單[8]。P1口作為系統(tǒng)的鍵盤(pán)掃描接口,連接如前述,這里不再贅述。
3 用戶界面
用戶界面如下:
鍵盤(pán):0~9、[錄音]、[放音]、[組合]、[分段]。
顯示:3位7段數(shù)碼管。段號(hào)2位,以確定錄音、放音位置;計(jì)數(shù)器1位,9~0減1計(jì)數(shù)。
指令格式:<參數(shù)表> <命令>。
四個(gè)主要功能為:
(1) 分段
操作:分段數(shù)+[分段]
(2) 錄音
操作:欲錄音段號(hào)+[錄音]
顯示:當(dāng)按下[錄音]時(shí),欲錄音段號(hào)閃3下后,計(jì)數(shù)顯示9;錄音開(kāi)始,計(jì)數(shù)器減1,直到0,錄音結(jié)束。
(3) 回放
操作:欲放音段號(hào)+[放音]4)、組合放音:功能用于檢查組合放音效果。
操作:段號(hào)i+[組合]+段號(hào)j+[組合]+…+段號(hào)n+[組合]+[放音]
顯示:在組合時(shí),顯示段號(hào),閃爍,按下[組合]后顯示消失,再重復(fù);組合放音時(shí),顯示當(dāng)前放音段號(hào);計(jì)數(shù)器先顯示組合段總數(shù),每放完一段減1,直到0。
4 軟件方案
內(nèi)存分配如下:
顯示緩沖為3個(gè)單元,第一、二單元用于存放段號(hào),第三單元用于存放計(jì)數(shù)器值。
組合段緩沖為一個(gè)單元,為一個(gè)放音段地址??紤]單片機(jī)的存儲(chǔ)容量與系統(tǒng)成本。設(shè)計(jì)考慮10個(gè)單元,F(xiàn)F為組合結(jié)束標(biāo)志。當(dāng)?shù)谝粏卧扔贔F時(shí),為緩沖器空,ISD1420的段地址從該緩沖區(qū)取出。軟件流程圖如圖5所示。
圖5 軟件流程圖
為方便起見(jiàn),系統(tǒng)采用平均分段管理方式。根據(jù)ISD1420語(yǔ)音芯片器件使用手冊(cè)可知,最多可分為160個(gè)段。其中,0~159為分段使用的有效地址。系統(tǒng)按1 s四個(gè)字的語(yǔ)速算,對(duì)于20 s的存儲(chǔ)空間來(lái)說(shuō),最多不能超過(guò)80個(gè)段,該時(shí)段空間最小為1個(gè)字。其分段范圍為1<分段數(shù)<80,在這個(gè)前提下,用戶可根據(jù)實(shí)際需求來(lái)分段,段號(hào)為0~79。
在執(zhí)行[分段]命令時(shí),要將地址間隔計(jì)算出來(lái),以便段號(hào)與語(yǔ)音芯片地址映射。地址間隔存于專用地址間隔單元spacing中。
分段寄存器seg_num:存放執(zhí)行[分段]命令后的分段數(shù)。用戶進(jìn)行錄音、放音的段號(hào),程序必須驗(yàn)證在此范圍方可執(zhí)行,否則提示錯(cuò)誤信息“E”。系統(tǒng)默認(rèn)分段數(shù)seg_num為 40, spacing為4,分段確定后,段地址可以由下式計(jì)算:
分段地址= seg_num×spacing
地址間隔=160/seg_num
暫存器temp:系統(tǒng)預(yù)留一個(gè)單元。用來(lái)以二進(jìn)制數(shù)方式存放段號(hào)。以temp_ sign為暫存器標(biāo)志,用于指示按鍵輸入,其等于0時(shí),段號(hào)只有1位;等于1時(shí),段號(hào)有2位。前次數(shù)字鍵是十位,當(dāng)前數(shù)字鍵是個(gè)位。如果是兩位數(shù),程序要對(duì)這兩位二-十進(jìn)制數(shù)進(jìn)行計(jì)算,轉(zhuǎn)換成二進(jìn)制數(shù),即BCD十位×10+BCD個(gè)位,存入temp。當(dāng)執(zhí)行錄音、放音、分段操作時(shí),程序從temp取參數(shù),計(jì)算段地址。用戶在輸入段號(hào)時(shí),如果出現(xiàn)錯(cuò)誤,可重新輸入。第一次輸入的段號(hào),將被第二次輸入的段號(hào)覆蓋。
組合段緩沖ally_ buf:系統(tǒng)預(yù)留10個(gè)單元,只有執(zhí)行組合放音時(shí)才用。組合是所有段中任意選擇10個(gè)段構(gòu)成的隊(duì)列。系統(tǒng)用ally_pointer作為入隊(duì)地址指針,以ally_out作為出隊(duì)地址指針。組合放音時(shí),在該指針指示下,依次將錄音段從緩沖區(qū)中取出播放,以構(gòu)成短語(yǔ),直到ally_out=ally_pointer。程序在沒(méi)有執(zhí)行[組合]功能時(shí),保持ally_pointer=0;當(dāng)用戶按下[組合]鍵時(shí),程序應(yīng)將暫存器temp的內(nèi)容傳入ally_ buf中,并修改ally_pointer。在執(zhí)行[放音]時(shí),程序首先檢查ally_pointer是否等于0,是,執(zhí)行temp的段放音;否則,執(zhí)行ally_ buf的段放音,直到FF標(biāo)志[9]。用戶指令單元dictate:存放用戶指令。主程序從這里識(shí)別用戶命令,并執(zhí)行命令。
命令標(biāo)志sign_dic:其等于0時(shí),當(dāng)前按鍵為數(shù)字鍵。等于1時(shí),當(dāng)前按鍵為命令鍵。
命令與數(shù)字的識(shí)別:當(dāng)鍵盤(pán)碼大于7F時(shí),為數(shù)字按鍵,否則為命令按鍵。
七段顯示:0~9,E為錯(cuò)誤提示。這里采用共陰極7段數(shù)碼管,如圖6所示。
出口如下:
temp為對(duì)應(yīng)段號(hào)的二進(jìn)制數(shù)??梢灾苯佑?jì)算段地址,最大范圍,小于分段數(shù)seg_num。
sign_dic等于1時(shí),請(qǐng)求執(zhí)行dictate中的命令。
dictate為命令代碼[10]。
圖6 七段數(shù)碼管
5 結(jié) 語(yǔ)
按照該方法設(shè)計(jì)的語(yǔ)音編輯器可行性強(qiáng),操作簡(jiǎn)單,界面清晰,在實(shí)際的生活中,該語(yǔ)音編輯器經(jīng)過(guò)改進(jìn)后可以很方便地應(yīng)用到MP3,DVD,錄音筆等音頻設(shè)備中,同時(shí)也可以用到遠(yuǎn)程語(yǔ)音控制中。與其他的相比,該語(yǔ)音編輯器具有價(jià)格更低廉,可單獨(dú)作為器件來(lái)實(shí)現(xiàn),因此具有一定的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]馬洪連.嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.
[2]ISD1420數(shù)據(jù)手冊(cè)[EB/OL].http://www.winbond.com.
[3]李朝青.單片機(jī)原理及接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1998.
[4]徐捷,徐華中.ISD1420語(yǔ)音芯片在PIC單片機(jī)系統(tǒng)的應(yīng)用[D].武漢:武漢理工大學(xué),2006.
[5]劉沛.基于ISD1420的語(yǔ)音報(bào)警器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2004,27(12):19-21.
[6]李平,李亞榮,關(guān)天民.基于ISD1420的高響度語(yǔ)音電路設(shè)計(jì)[J].儀表技術(shù),2005(1):75-76.
[7]張毅剛.MCS-51單片機(jī)原理及應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.
[8]蔣懷偉,尹志強(qiáng),朱衛(wèi)國(guó).ISD1420語(yǔ)音芯片在單片機(jī)控制系統(tǒng)中的應(yīng)用研究[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2002(Z1):1 036-1 040.
[9]張守波,郭松林.高保真語(yǔ)音錄放電路及其在儀器中的應(yīng)用[J].儀表技術(shù),2004(3):26-27.
[10]ISD Data Sheet.ISD1400 Series Single Chip Voice Record/Playback Devices .http://www.21 ic.Com,2004.