一種基于單片機控制的ISD4004語音芯片應用電路
3 軟件設計
3.1 程序流程圖
如圖2所示:
圖2
3.2 程序工作思想
電路上電后,程序首先完成程序的初始化,隨后查詢按鍵狀態,進入系統待機狀態。如果有按鍵按下,則轉去執行該按鍵指向的工作程序。按鍵包括放音鍵,停止鍵,加一,減一鍵以及特殊語鍵。在待機狀態下,如果放音鍵首次被按下,程序將首先判斷是去還是回(公交車路徑一般是既去又回的),并點亮相應的指示燈。自動讀出第一站的放音內容,站號顯示1。如果不是首次按下,程序則首先判斷當前站號,并以該站號為依據獲得存放該站放音內容的首地址。調用放音子程序,讀入前面獲得的本站放音內容首地址,開始放音。每一句放音完畢后,ISD4004的中斷引腳(25腳)會自動送一低電平信號。在硬件設計中,該引腳與單片機的 P3.3連接。因此,會引起一次中斷,在中斷子程序中會有一個計數器記錄中斷次數,從而判斷何時一站結束,站號加一并刷新顯示。加一鍵按下后則使程序放音內容轉向下一站,減一鍵則使程序放音內容轉向上一站,相應的站號顯示也將隨之刷新。特殊語鍵按下后,程序轉向執行特殊語放音(譬如拐彎請注意等語句)。停止鍵被按下將中止當前的放音狀態。
3.3 部分工作子程序
為了便于讀者對ISD4004應用的理解,本文給出了部分操作程序。
該部分程序主要完成放音操作,把獲得的放音內容的地址送到ISD4004中,完成放音。下面給出的就是放音部分程序。放音子程序:
PLAY:
ACALL POWERUP ;上電子程序
ACALL DELAY25 ;延遲子程序,至少延遲25ms
CLR P1.6 ;選中ISD4004
MOV PLAY2,#11100000B ;存放SETPLAY命令
MOV A,PLAY0 ;送放音地址低8位
ACALL SEND ;調用送地址子程序
MOV A,PLAY1 ;送放音地址高8位
ACALL SEND
MOV A,PLAY2 ;送SETPLAY命令
ACALL SEND
SETB P1.6
CLR P1.6
MOV PLAYING,#11110000B ;送入放音指令
MOV A,PLAYING
ACALL SEND
SETB P1.6
RET
POWERUP: ;送上電指令子程序
MOV POWING,#00100000B ;送入語音芯片上電信號
MOV A,POWUPING
CLR P1.6
ACALL SEND
SETB P1.6
RET
SEND: ;向ISD4004送指令,地址等的子程序
CLR MOSI
CLR P3.2
MOV R1,#8
OUTBIT1:
CLR P3.2 ;時鐘下降
RRC A
MOV MOSI,C ;輸出1位
NOP
NOP
NOP
SETB P3.2 ;時鐘上升沿到
NOP
NOP
NOP
DJNZ R1,OUTBIT1
RET
3.4 編程以及調試時要注意的一些問題
在放音程序中,要嚴格按照ISD4004的要求編程。首先要送上電指令,然后等待25毫秒的延遲,再送16位放音起始地址,最后送8位的開始放音指令。
在放音電路的調試過程中,首先測量ISD4004的工作電壓是否3伏,如果是則進入下級調試。再看是否可以送入放音地址,對此可以測量AUDOUT引腳的電壓,若為1.2伏則說明可以讀入放音地址。隨后測量是否能夠放音,可以測量AUDOUT引腳電壓,若為1.2伏,則說明ISD4004芯片工作正常,應該可以放音。如果還沒有聽到放音,則可以調試后級放音電路,看是否后級電路的問題。
4 結束語
本文通過對ISD4004語音芯片在語音報站器中的一個實際應用的簡單介紹,使讀者熟悉了1SD4004的基本應用。同時本文介紹的報站器電路已經經過上車實驗調試,能夠可靠穩定工作。
參考文獻
1 李華 《MCS-51系列單片機實用接口技術》 北京航空航天大學出版社 1993年
2 薛鈞義 張彥斌 《MCS-51/96系列單片微型計算機及其應用》 西安交通大學出版社 1997年第2版
3 王振紅 李洋 郝承祥 《ISD4004語音芯片的工作原理及其在智能控制系統中的應用》 電子器件 2002年3月第25卷第1期
評論