基于ISDl420的語(yǔ)音編輯器設計
系統控制芯片的PLAYE端口,平時(shí)為高電平,當出現下降沿時(shí)開(kāi)始錄音。
信號EOM是語(yǔ)音段結束標志,當錄音結束,若存儲器沒(méi)完,ISD1420會(huì )自動(dòng)為其加上EOM標志符,表示該段錄音結束。放音時(shí),當遇到EOM標志符,EOM信號會(huì )由高電平輸出一個(gè)低脈沖。該信號連至單片機的T1/P3.5引腳,使單片機能夠及時(shí)知道該語(yǔ)音段結束,以便控制下一步操作。
2.4 單片機
這里選擇的89C51具有40個(gè)I/O口。系統不能采用簡(jiǎn)單的最小系統連接,由上述可知,它無(wú)法滿(mǎn)足該系統的需求。該設計可利用它的開(kāi)放總線(xiàn)連接更多的設備。
該設計將3個(gè)數碼管和語(yǔ)音芯片通過(guò)總線(xiàn)方式接入系統。低位地址不用,所以不用進(jìn)行低8位的地址擴展。選擇A8,A9,A10分別作為3個(gè)數碼低電平的有效地址信號,再與單片機的WR信號組合。以構成帶地址信息的寫(xiě)控制信號。這樣,程序便可像訪(fǎng)問(wèn)存儲器一樣訪(fǎng)問(wèn)這些端口,其地址為:FE00H,FD00H,FB00H。
語(yǔ)音芯片也是采用這種方式進(jìn)入系統的,其地址是7F00H。這種方式既可使電路簡(jiǎn)單,也可使操作簡(jiǎn)單。P1口作為系統的鍵盤(pán)掃描接口,連接如前述,這里不再贅述。
3 用戶(hù)界面
用戶(hù)界面如下:
鍵盤(pán):0~9、[錄音]、[放音]、[組合]、[分段]。
顯示:3位7段數碼管。段號2位,以確定錄音、放音位置;計數器1位,9~O減l計數。
指令格式:參數表>命令>。
四個(gè)主要功能為:
(1)分段
操作:分段數+[分段]
(2)錄音
操作:欲錄音段號+[錄音]
顯示:當按下[錄音]時(shí),欲錄音段號閃3下后,計數顯示9;錄音開(kāi)始,計數器減l,直到O,錄音結束。
(3)回放
操作:欲放音段號+[放音]4)、組合放音:功能用于檢查組合放音效果。
操作:段號i+[組合]+段號j+[組合]+…+段號n+[組合]+[放音]
顯示:在組合時(shí),顯示段號,閃爍,按下[組合]后顯示消失,再重復;組合放音時(shí),顯示當前放音段號;計數器先顯示組合段總數,每放完一段減1,直到O。
4 軟件方案
內存分配如下:顯示緩沖為3個(gè)單元,第一、二單元用于存放段號,第三單元用于存放計數器值。組合段緩沖為一個(gè)單元,為一個(gè)放音段地址??紤]單片機的存儲容量與系統成本。設計考慮10個(gè)單元,FF為組合結束標志。當第一單元等于FF時(shí),為緩沖器空,ISD1420的段地址從該緩沖區取出。軟件流程圖如圖5所示。
為方便起見(jiàn),系統采用平均分段管理方式。根據ISDl420語(yǔ)音芯片器件使用手冊可知,最多可分為160個(gè)段。其中,O~159為分段使用的有效地址。系統按1 s四個(gè)字的語(yǔ)速算,對于20 s的存儲空間來(lái)說(shuō),最多不能超過(guò)80個(gè)段,該時(shí)段空間最小為1個(gè)字。其分段范圍為1分段數80,在這個(gè)前提下,用戶(hù)可根據實(shí)際需求來(lái)分段,段號為O~79。在執行[分段]命令時(shí),要將地址間隔計算出來(lái),以便段號與語(yǔ)音芯片地址映射。地址間隔存于專(zhuān)用地址間隔單元spacing中。分段寄存器seg_num:存放執行[分段]命令后的分段數。用戶(hù)進(jìn)行錄音、放音的段號,程序必須驗證在此范圍方可執行,否則提示錯誤信息“E”。系統默認分段數seg_num為40,spacing為4,分段確定后,段地址可以由下式計算:
分段地址=seg_num×spacing
地址間隔=160/seg_num
暫存器temp:系統預留一個(gè)單元。用來(lái)以二進(jìn)制數方式存放段號。以temp_sign為暫存器標志,用于指示按鍵輸入,其等于0時(shí),段號只有1位;等于1時(shí),段號有2位。前次數字鍵是十位,當前數字鍵是個(gè)位。如果是兩位數,程序要對這兩位二一十進(jìn)制數進(jìn)行計算,轉換成二進(jìn)制數,即BCD十位×10+BCD個(gè)位。存入temp。當執行錄音、放音、分段操作時(shí),程序從temp取參數,計算段地址。用戶(hù)在輸入段號時(shí),如果出現錯誤,可重新輸入。第一次輸入的段號,將被第二次輸入的段號覆蓋。
組合段緩沖ally_buf:系統預留1O個(gè)單元,只有執行組合放音時(shí)才用。組合是所有段中任意選擇10個(gè)段構成的隊列。系統用ally_point-er作為入隊地址指針,以ally_out作為出隊地址指針。組合放音時(shí),在該指針指示下,依次將錄音段從緩沖區中取出播放,以構成短語(yǔ),直到ally_out=ally_pointer。程序在沒(méi)有執行[組合]功能時(shí),保持ally_pointer=O;當用戶(hù)按下[組合]鍵時(shí),程序應將暫存器temp的內容傳入ally_buf中,并修改ally_pointer。在執行[放音]時(shí),程序首先檢查ally_pointer是否等于0,是,執行temp的段放音;否則。執行ally_buf的段放音,直到FF標志。用戶(hù)指令單元dictate;存放用戶(hù)指令。主程序從這里識別用戶(hù)命令,并執行命令。命令標志sign_dic:其等于O時(shí),當前按鍵為數字鍵。等于1時(shí),當前按鍵為命令鍵。命令與數字的識別:當鍵盤(pán)碼大于7F時(shí),為數字按鍵,否則為命令按鍵。七段顯示:O~9,E為錯誤提示。這里采用共陰極7段數碼管,如圖6所示。
出口如下:
temp為對應段號的二進(jìn)制數??梢灾苯佑嬎愣蔚刂?,最大范圍,小于分段數seg_num。
sign_dic等于1時(shí),請求執行dictate中的命令。
dictate為命令代碼。
5 結語(yǔ)
按照該方法設計的語(yǔ)音編輯器可行性強,操作簡(jiǎn)單,界面清晰,在實(shí)際的生活中,該語(yǔ)音編輯器經(jīng)過(guò)改進(jìn)后可以很方便地應用到MP3,DVD,錄音筆等音頻設備中,同時(shí)也可以用到遠程語(yǔ)音控制中。與其他的相比,該語(yǔ)音編輯器具有價(jià)格更低廉,可單獨作為器件來(lái)實(shí)現,因此具有一定的實(shí)用價(jià)值。
電子血壓計相關(guān)文章:電子血壓計原理
評論