基于ISD4004和AT89C51单片机实现火车语音播报系统的设计

网友投稿 384 2022-11-18

基于ISD4004和AT89C51单片机实现火车语音播报系统的设计

1.1 ISD4004的特性

1.2 ISD4004的引脚及封装形式

ISD4004采用28脚的SOIC封装,其引脚排列如图2所示。

1.3 ISD4004与AT89C51单片机的接口

ISD4004工作于SPI串行接口,按照同步串行数据传输的SPI协议,所有串行数据传输开始于单片机主控器发送给ISD4004的片选信号SS下降沿。SS在传输期间必须保持为低电平,在两条指令之间则保持为高电平。来自串行数据输入端MOSI引脚的数据在串行同步时钟上升沿被锁存,对ISD4004串行数据输出端MISO引脚的数据在SCLK的下降沿被移出。ISD4004的任何一个录音和放音操作(含快进),都是按分段地址进行的,每段包含若干行,每行相当于存储单元,在行地址时钟信号RAC的控制下进行录放信息的存储管理。RAC信号周期为200 ms,高电平占空比为3/4。当录音和放音操作到内部存储单元地址的末尾时,会产生一个OVF或EOM结束标志信号,如果遇到EOM或OVF,则产生一个低电平有效的INT中断信号,该中断状态在下一个SPI周期开始时被清除。ISD4004与AT89C51单片机连接如图3所示。

1.4 音频输出

1.5 I/O口的扩展

系统36路信号要经微控制器处理,至少要36个I/O口线才能满足需求,靠AT89C51剩余的I/O口显然是不够的,必须进行I/O口的扩展。系统采用可编程序并行输入输出接口芯片8255扩展不足的I/O口,具体硬件连接见图4。8255是微处理器扩展系统所用的标准外围并行接口电路,采用NMOS工艺制造,40脚双列直插式DIP封装形式。8255与外部设备交换信息通过A口、B口、c口的24条I/O线来完成的,每个口都是8位。其中C口又分为上C口(PC7~PC4高4位)和下C口(PC3~PC0低4位)。可通过编程的方法来规定端口的工作方式为输入,在主控程序初始化时完成。8255片选信号由P1.4完成,地址总线A0和A1通过地址锁存器74LS373锁定。

1.6 信号变换

2 软件总体设计

系统软件设计直接影响到系统的整体性能。软件主要功能是通过对铁路信号进行实时查询,准确判断信号是否有效,并可靠查找信号所对应的语音存储地址,取出信息进行实时播报。软件程序包括主控程序、信号查询程序、语音播报程序、数据传送程序、ISD4004的上电和掉电程序。程序中多次使用延时子程序,由于结构简单、通用性强、本文不再阐述。

2.1 主控程序

主控程序流程见图6,系统上电时要进行初始化,完成对I/O口、信号单元及信号标志位的清零和ISD4004及8255的初始化设置,并完成在系统上电时自检和产品信息广告的的语音播报。然后进入信号的查询和语音播报的循环控制流程。为了防止系统误报、漏报或连报,在程序设计时充分考虑这方面的因素,如采用信号延时防抖判定,信号电平的高低交错标志判断及信号单元地址查表等方法,提高系统的可靠性。

2.2 信号查询子程序

信号查询子程序的流程见图7,系统30多路信号分别占用AT89C51单片机的部分I/O线和可编程接口8255的A、B、C口24路输入线。程序对多路信号进行逐一查询,并对到来的有效信号进行分单元标记储存,以便将参数传递给主控程序。

2.3 语音播报子程序

ISD4004芯片所有操作必须由微控制器控制的操作命令,通过串行通信协议SPI接口送入。SPI控制寄存器控制芯片的录放音、信息检索、上电、掉电、开始和停止等功能,由软件编程指令改变SPI控制寄存器的控制位来实现,SPI控制寄存器的控制位如图8所示,指令格式是:8位控制码+16位地址码。ISD的任何操作在运行位C4置1时开始,置0时结束,如果遇到EOM或OVF,则产生一个中断,使用“读”指令使中断状态位移出ISD的MISO引脚时,控制及地址数据也同步从MOSI端移入。因此要注意移入的数据是否与器件当前进行的操作兼容。当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。

语音播报子程序,要严格按照以上ISD4004的要求编程,其流程见图9。系统确认当前播报信号有效时,通过查找语音存放地址,得到16位的播报地址。首先要调用上电子程序,送上电指令,然后等待约25μs的延迟,再传送16位放音起始地址参数和8位从指定地址开始放音的指令,分别调用数据发送子程序,完成信息的播报。

2.4 数据发送子程序

数据发送子程序流程图见图10,主要将16位放音地址和8位功能控制指令数据按照SPI协议标准,在串行时钟同步下传送到ISD4004的MOSI。

2.5 上电、掉电子程序

ISD4004可实现电源操作模式的管理,通过指令编程完成上电和掉电的操作,其程序流程图见图11和图12。芯片掉电后进入低功耗状态,耗电电流1μA左右,只有在上电操作完成后芯片才能正常工作。

3 结 语

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Jmeter BlazeMeter实现web录制过程
下一篇:vue父子组件通信以及非父子组件通信的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~