一种基于单片机控制的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期
评论