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芯片工作正常,可以放音。如果没有听到放音则调试后级放音电路,看是否是后级电路有问题。 本文介绍的报站器电路已经经过上车实验调试,能够稳定可靠工作。












评论