ISD4004語音芯片在語音報站器中的應用
2 軟件設計 程序流程圖如圖2所示。 電路上電后,首先完成程序的初始化,隨后查詢按鍵狀態,進入系統待機狀態。如果有按鍵按下,則轉去執行該按鍵指向的工作程序。按鍵包括放音鍵、停止鍵、加一鍵、減一鍵以及特殊語鍵。在待機狀態下,如果放音鍵首次被按下,程序將首先判斷是去還是回(公交車路徑一般是既去又回的),并點亮相應的指示燈,自動讀出第一站的放音內容,站號顯示1。如果不是首次按下,則首先判斷當前站號,并以該站號為依據獲得存放該站放音內容的首地址;然后調用放音子程序,讀入前面獲得的本站放音內容首地址,開始放音。每一句放音完畢后,ISD4004的中斷引腳(25腳)會自動送一低電平信號。在硬件設計中,該引腳與單片機的P3.3連接,因此會引起一次中斷,在中斷子程序中有一個計數器記錄中斷次數,從而判斷何時當前一站結束,站號加一并刷新顯示。加一鍵按下后,程序放音內容轉向下一站;減一鍵按下后,則使程序放音內容轉向上一站,相應的站號顯示也將隨之刷新;特殊語鍵按下后,程序轉向執行特殊語放音(譬如“拐彎請注意”等語句);停止鍵按下,將中止當前的放音狀態。為了便于讀者對ISD4004應用的理解,本文給出了部分程序。 該部分程序主要完成放音操作,把獲得的放音內容的地址送到ISD4004中,完成放音。 PLAY ACALL POWERUP 上電子程序 ACALL DELAY25 延遲子程序,至少延 遲25ms CLR P1.6 選中ISD4004 MOV PLAY2#11100000B 存放SETPLAY命令 MOV APLAY0 送放音地址低8位 ACALL SEND 調用送地址子程序 MOV APLAY1 送放音地址高8位 ACALL SEND MOV APLAY2 送SETPLAY命令 ACALL SEND SETB P1.6 CLR P1.6 MOV PLAYING#11110000B 送入放音指令 MOV APLAYING ACALL SEND SETB P1.6 RET POWERUP 送上電指令子程序 MOV POWING#00100000B 送入語音芯片上電信號 MOV APOWUPING 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 MOSIC 輸出1位 NOP NOP SETB P3.2 時鐘上升沿到 NOP NOP NOP DJNZ R1OUTBIT1 RET 放音程序中,要嚴格按照ISD4004的要求編程。首先要送上電指令,然后等待25μs的延遲,再送16位放音起始地址,最后送8位的開始放音指令。 在放音電路的調試過程中,首先測量ISD4004的工作電壓是否是3V,如果是則進入下級調試。再看是否可以送入放音地址,對此可以測量AUDOUT引腳的電壓,若為1.2V則說明可以讀入放音地址。再后測量是否能夠放音,可以測量AUDOUT引腳電壓,若為1.2V則說明ISD4004芯片工作正常,可以放音。如果沒有聽到放音則調試后級放音電路,看是否是后級電路有問題。 本文介紹的報站器電路已經經過上車實驗調試,能夠穩定可靠工作。












評論