本文介紹了由Flash單片機AT89C2051及數碼語音芯片ISD2560組成的電腦語音系統設計出了系統的硬件電路,給出了錄、放音實用的源程序。目前基于單片微機的語音系統的應用越來越廣泛,如電腦語音鐘、語音型數字萬用表、手機話費查詢系統、排隊機、監控系統語音報警以及公共汽車報站器等等。
語音芯片應用電路
ISD2560 是ISD 系列單片語音錄放集成電路的一種,是一種永久記憶型錄放語音電路,錄音時間為60 秒,能重復錄放達10 萬次。它采用直接電平存儲技術,省去了A/D、D/A 轉換器。ISD2560 集成度高,內部包括前置放大器、內部時鐘、定時器、采樣時鐘、濾波器、自動增益控制、邏輯控制、模擬收發器、解碼器、和480KB 的EERPOM 等。內部EERPOM存儲單元,均勻分為600 行,具有600 個地址單元,每個地址單元指向其中一行,每一個地址單元的地址分辨率為100MS。ISD2560 控制電平與TTL 電平兼容,接口簡單,使用方便。
ISD2560 內置了若干操作模式,可用最少的外圍器件實現最多的功能。操作模式也有地址端控制;當最高位都為1 時,其他地址端最高就選擇某個模式。因此操作模式和直接尋址相互排斥。操作模式可由微控制器也可有硬件實現。基本電路原理圖如下:錄音按下錄音鍵接地,是PD 端、P/R 端為低電平,此時啟動錄音;結束時松開按鍵,單片機有讓P/R 端回到高電平,既完成一段語音的錄制。同樣的方法可錄取第二段、第三段等。值得注意的是,錄音時間不能超過預先設定的每段語音的時間。放音的操作更為簡單,按下錄音鍵接高電平,使P/D 端P/R 端為低電平啟動方音功能;結束時,松開按鍵,即完成一段語音的播放。
采樣單片機控制語音芯片
錄音時,按下錄音鍵,單片機通過D 端口線設置語音段的起始地址,再使PD 端、P/R 端為低電平啟動錄音;結束時,松開按鍵,單片機有讓P/R 端回到高電平,即完成一段語音的錄制。同樣的方法可以錄取第二段、第三段等。值得注意的是,錄音時間不能超過預先設定的每段語音的時間。
放音時,根據需播放的語音內容,找到相應的語音段起始地址,并通過口線送出。P/R 端設為低電平,并讓/CE 端產生一負脈沖啟動放音,這時單片機只需要等待ISD2560信息結束信號。信號為一負脈沖,在負脈沖的上升沿,該段語音才播放結束,所以單片機必須要檢測到的上升沿才能播放第二段,否則播放的語音就不連續。ISD2560 與單片AT89C2051的接口電路以及外圍電路如圖所示。單片機的P1 口、P3.4 和P3.5 分別與ISD2560 的地址線相連,用以設置語音段的起始地址。P3.0~P3.3 用以控制錄放音狀態。P3.7 連接一按鍵,供錄音時使用。由TL7705($0.1875) 構成可靠復位及電源監視電路。
ISD2560 雖然提供了地址輸入線,但它的內部信息段的地址卻無法讀出。本系統采用單片機來控制,不需讀出信息地址,而直接設置信息段起始地址。其實現方式有兩種:一是由于ISD2560的地址分辨率為100 ms,所以可用單片機內部定時器定時100 ms,然后再利用一計數器對單片機定時次數進行計數,則計數器的計數值為語音段所占用的地址單元。該方式能充分利用ISD2560內部的E2PROM,在字段較多時可利用該方法。二是語音字段如果較少,則可根據每一字段的內容多少,直接分配地址單元。一般按每1 s 說3 個字計算,60 s 可說180 個字,再根據ISD2560 的地址分辨率為100 ms,即可計算出語音段所需的地址單元數。本電路采用第二種方式。