在现代工业控制过程中,广泛应用了工作状态和故障状态报警装置,通常它以声、光形式提醒操作者及时处理出现的问题。随着新技术的发展,人们又开始将语音技术应用到这一领域。它以更直观、易懂、更方便、准确的形式向操作者提供有关信息,使操作者能够更准确、快速地处理系统问题。美国ISD公司生产的ISD系列智能语音存储芯片音质好,长期断电语音信号不丢失,非常适合于电子产品的开发应用。笔者成功应用ISD4004和AT89C51单片机设计了火车站信号自动语音播报系统,通过对火车站铁路线的上行和下行控制、车辆调度、系统主副电源的启用等多路信号进行检测并采集,根据安全隐患的防范要求,由单片机控制查询安全警示语音信息并播报,实现安全操作提示及报警。系统在火车站信号室控制台上安装使用,运行稳定,信号播报准确,取得了很好的效果。

1 硬件电路设计
    
系统硬件电路设计原理框图见图1,由微控制器AT89C51、ISD4004语音电路、音频功率放大电路、可编程并行接口8255、光电隔离、电平转换、信号输入接口、系统时钟、复位及键盘等单元电路组成。

1.1 ISD4004的特性
    ISD4004系列语音存储芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列,内置微控制器串行通信接口。芯片所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送人。外部的音源信号在芯片内采用多电平直接模拟量存储技术,信息可进行多段处理,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。存于片内闪烁存贮器中的信息,可在断电情况下保存100年。芯片工作电压为3 V,工作电流为25~30 mA,维持电流1μA,不耗电,单片录放时间8~16 min,可反复录音10万次。
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所示。

ISD4004的片选信号SS引脚与AT89C51单片机的I/O口P1.0连接,由程序指令产生有效的低电平信号。串行数据输入MOSI引脚和串行数据输出MISO引脚分别与P1.1和P1.3连接,串行收发的数据信息在程序指令的控制下,由片内移位寄存器锁存,其同步时钟信号SCLK由单片机P1.2控制。行地址时钟RAC和中断请求信号INT分别与P3.2(INT1)和P3.3(INTO)连接。 
1.4 音频输出
    系统信号所对应的提示语音,如“上行列车开过来了,区间占用”、“请求上行发车,信号开放”等信息,已通过专用设备按地址分段固化到ISD4004内部E2PROM的存储单元。在程序控制下,相应的语音信号由ISD4004的13脚(AUOUT)输出,经耦合电容C4和音量控制电位器RW,送入低噪声功率放大集成电路进行放大,推动扬声器发声。为使输出语音噪声达到最小,系统的模拟地和数字地分开走线,尽可能在靠近供电端处相连,并且分别引到ISD4004芯片的VSSA和VSSD管脚上,退耦电容也应尽量靠近芯片。
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 信号变换 
    系统信号取自车站信号室控制继电器的触点,主要是交流24 V的开关量信号,必须将其转换为单片机系统可以匹配的TTL电平,也就是将交流24 V变换为直流5 V,其信号电平变换电路如图5所示。交流信号由二极管D32整流,电容C32滤波,经限流电阻R32输入光电耦合器4N25,经内部发光管和光敏接收管有效实现光电转换,同时将外部信号的电气网络与单片机控制系统隔离开来,提高系统的可靠性和抗干扰能力。变换后输出的信号是低电平,为保持输入信号和输出信号电平同步,后级加反相器,输出标准的TTL 5 V信号,送往并行接口8255。

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

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

3 结 语
    阐述了基于ISD4004芯片设计的单片机控制语音播报系统在火车站信号控制室实际应用的一个事例,主要介绍了系统软、硬件的设计方法,其目的就在于提供一种多路工业过程控制在线语音提示或报警的微机控制模块,可以稍加改造,方便地与常规工业控制系统或设备配合使用,甚至还可以方便地与复杂系统和DCS系统配合使用,完成各种工业控制和监测系统的工作状态报警和操作提示。

火车站信号自动语音播报系统的设计相关推荐

  1. 八楼电梯的c语言程序,本科毕业设计—电梯自动语音提示系统.doc

    电梯自动语音提示系统 院 系:信息科学与工程学院 专 业 班:电子科学与技术1102班 姓 名: 学 号: 指导教师: 2015年5月 电梯自动语音提示系统 The Elevator Automati ...

  2. 51单片机温度语音播报系统TTS播报DS18B20温度LCD1602显示

    实践制作DIY- GC0023-温度语音播报系统 一.功能说明: 基于51单片机设计-温度语音播报系统 功能介绍: 1.STC89C52单片机(STC89C51/52 AT89C51/52 任选其一) ...

  3. 【NLP】Pyhon+讯飞开放平台:​手把手带你写一个智能语音播报系统

    手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...

  4. java语音播报天气_Home Assistant系列 -- 自动语音播报天气

    在树莓派上要让 Home Assistant  发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...

  5. 基于matlab语音增强,基于MATLAB的语音增强系统的设计

    187 2010 年第 05 期,第 43 卷 通 信 技 术 Vol.43,No.05,2010 总第 221 期 Communications Technology No.221,Totally ...

  6. 51单片机TTS温度湿度语音播报系统 DHT11 LCD1602

    实践制作DIY- GC0049-TS温度湿度语音播报系统 一.功能说明: 基于51单片机设计-TS温度湿度语音播报系统 功能介绍: 1.STC89C52单片机(STC89C51/52 AT89C51/ ...

  7. 基于单片机的自动追日系统设计_基于单片机的自动浇花系统的设计

    龙源期刊网 http://www.qikan.com.cn 基于单片机的自动浇花系统的设计 作者:吴蓓 张阳 来源:<现代信息科技> 2018 年第 03 期 摘 要:为了解决人们生活中由 ...

  8. 毕设--自动浇花系统的设计

    目录 毕设--自动浇花系统的设计 1.作品实物图 2.PCB原理图 3.元器件清单 4.土壤温湿度采集与显示 5.硬件电路设计 6.程序源码 7.资料获取 毕设–自动浇花系统的设计 注:本毕设资源可在 ...

  9. 自动语音播报WinCC报警消息

    文章转载至微信公众号:人机常情 WinCC 自动语音播报WinCC报警消息 原创 He havefun 人机常情 WinCC 3月3日 作者:胡世川 - 西门子数字化工业集团自动化部 实现思路: 实时 ...

最新文章

  1. openJDK之lambda——List的forEach如何实现的
  2. Python之路,day3-Python基础
  3. windows下实现微秒级的延时
  4. Html跨页面调用函数,一个cshtml如何在另一个cshtml中调用一个函数?
  5. Scrapy 爬虫框架四 —— 动态网页及其 Splash 渲染
  6. UIWindow创建局部弹框
  7. CRT链接ubuntu报错The remote system refused the connection
  8. 四阶龙格库塔法(Runge-Kutta)求解常微分方程的 Matlab程序及案例
  9. 百度2014校园招聘-研发工程师笔试题(济南站)
  10. k8s集群添加master节点
  11. WebSocket协议数据格式解析
  12. 全新的跨平台app软件开发工具——Lae软件开发平台
  13. oppoK9Pro游戏性能怎么样
  14. Java 心心跳动,能把女朋友感动哭的效果
  15. 赵俊峰内蒙古大学计算机学院,内蒙古大学计算机学院研究生导师:赵俊峰
  16. react-native系列(13)动画篇:Animated动画库和LayoutAnimation布局动画详解
  17. 理解电脑上的串口对应的端口号(com口)
  18. ABCNet v2: Adaptive Bezier-Curve Network forReal-time End-to-end Text Spotting
  19. 偏微分方程的MATLAB解法
  20. 称金币问题: 有27枚金币,其中一个是假的。假的比真的略轻。现在有一个天平,问最少几次可以找出假币?

热门文章

  1. 流体力学(水力学)满分实验报告——伯努利方程
  2. UML ~ Unified Modeling Language ~ 统一建模语言。+ 软件设计原则。
  3. HFS安装PHP,Http-File-Server 一个好用的HFS模版,界面非常漂亮,功能也很齐全。 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  4. 二阶矩过程、平稳过程和随机分析
  5. Matlab - Solidworks 机器人建模(5)—— 给模型添加摩擦力
  6. Google搜索引擎的奥秘
  7. 软件测试的项目职责、分工、测试流程详细讲解
  8. python保留n位有效数字
  9. MySQL数据库命令(第二节)
  10. 移动端避免使用100vh