1 语音报站器硬件电路设计
目前市场上流通的语音报站器,大多采用的不是ISD4004系列的芯片,这与其刚推出不久以及价格偏高有关.但随着ISD4004应用的增多以及价格的回落,再加上ISD4004系列芯片本身的优点,可以相信,在语音报站器中采用ISD4004系列语音芯片是完全可行的.笔者设计了该装置的硬件电路,并进行了上车调试,取得了较为满意的效果.
本文讨论的报站器主电路主要由单片机89C52和ISD4004构成.该系统的硬件电路连接图如图1所示.
本系统主要分为三部分:单片机控制部分、放音部分和显示部分.显示电路采用的是通过P3.0、P3.1控制的两个7段数码管的静态显示器,在此不作详细介绍;控制部分主要由单片机89C52构成,包含必要的按键电路、复位电路和看门狗电路等外围电路;放音部分主要由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 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位的开始放音指令.
本文介绍的报站器电路已经经过上车实验调试,能够稳定可靠工作.
当您的分辨率为1280时
会见到此侧边栏