基于ISD4004单片机的火车站自动语音播报系统
1.6 信号变换
系统信号取自车站信号室控制继电器的触点,主要是交流24 V的开关量信号,必须将其转换为单片机系统可以匹配的TTL电平,也就是将交流24 V变换为直流5 V,其信号电平变换电路如图5所示。交流信号由二极管D32整流,电容C32滤波,经限流电阻R32输入光电耦合器4N25,经内部发光管和光敏接收管有效实现光电转换,同时将外部信号的电气网络与单片机控制系统隔离开来,提高系统的可靠性和抗干扰能力。变换后输出的信号是低电平,为保持输入信号和输出信号电平同步,后级加反相器,输出标准的TTL 5 V信号,送往并行接口8255。
![](http://m.amcfsurvey.com/editerupload/fetch/20130926/173248_2_0.jpg)
2 软件总体设计
系统软件设计直接影响到系统的整体性能。软件主要功能是通过对铁路信号进行实时查询,准确判断信号是否有效,并可靠查找信号所对应的语音存储地址,取出信息进行实时播报。软件程序包括主控程序、信号查询程序、语音播报程序、数据传送程序、ISD4004的上电和掉电程序。程序中多次使用延时子程序,由于结构简单、通用性强、本文不再阐述。
2.1 主控程序
主控程序流程见图6,系统上电时要进行初始化,完成对I/O口、信号单元及信号标志位的清零和ISD4004及8255的初始化设置,并完成在系统上电时自检和产品信息广告的的语音播报。然后进入信号的查询和语音播报的循环控制流程。为了防止系统误报、漏报或连报,在程序设计时充分考虑这方面的因素,如采用信号延时防抖判定,信号电平的高低交错标志判断及信号单元地址查表等方法,提高系统的可靠性。
2.2 信号查询子程序
信号查询子程序的流程见图7,系统30多路信号分别占用AT89C51单片机的部分I/O线和可编程接口8255的A、B、C口24路输入线。程序对多路信号进行逐一查询,并对到来的有效信号进行分单元标记储存,以便将参数传递给主控程序。
![](http://m.amcfsurvey.com/editerupload/fetch/20130926/173248_2_1.jpg)
2.3 语音播报子程序
ISD4004芯片所有操作必须由微控制器控制的操作命令,通过串行通信协议SPI接口送入。SPI控制寄存器控制芯片的录放音、信息检索、上电、掉电、开始和停止等功能,由软件编程指令改变SPI控制寄存器的控制位来实现,SPI控制寄存器的控制位如图8所示,指令格式是:8位控制码+16位地址码。ISD的任何操作在运行位C4置1时开始,置0时结束,如果遇到EOM或OVF,则产生一个中断,使用“读”指令使中断状态位移出ISD的MISO引脚时,控制及地址数据也同步从MOSI端移入。因此要注意移入的数据是否与器件当前进行的操作兼容。当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。
![](http://m.amcfsurvey.com/editerupload/fetch/20130926/173248_2_2.jpg)
评论