董进
(江苏电子信息职业学院计算机与通信学院,江苏淮安 223003)
虽然公共交通系统朝着越来越人性化、高效化、智能化的方向发展,但还有不少地区使用传统的公交司机按键报站的模式,容易造成疲劳驾驶,进而对乘客的生命安全造成一定影响,也会一定程度上造成乘车时间的浪费。随着科技产业的快速更迭,微型计算机电路在众多领域得到了施展的空间[1-3],其中在声音传播方面,使用微机电路与声音芯片相融合就可以完美地使用声音合成技术。本文通过对单片机、GPS收发模块以及语音解码芯片的使用完成公交站台的自动播报。考虑到现有的公交系统的问题结合公交车的实际运营环境,目标就是完全抛弃人工报站的方式,设计出一种以由单片机为核心主控,再由GPS 技术为基础的自动报站系统,进而实现公交车在进入站点和走出站点时的自动语音播报。
设计一个基于单片机控制的语音自动报站系统,要求实现的功能如下3种功能。
1)可以设置上、下行路线。
2)可以显示当前的站名、下一站的站名进行设置。
3)具备手动和自动报站两种功能。
其中设置上、下行路线是指用户可以自定义站点相隔的距离长短,通常情况站与站点要相隔大于200米这样会更加便于GPS的精确定位;同样的用户可以自定义每一站站点的名称,通过转换把抽象的经纬度变成直观具体的地点名称;最后分为手动和自动报站两个模式,自动报站是把事先测量好的站点的经纬度存入单片机的存储模块中然后通过GPS 的实时定位数据与存储数据进行比对,数据相同时就会自动报站,同时在液晶显示屏上显示播报的信息。
当然机器难免会出现一些故障,此时可以启用备用的按键进行手动报站,这两种方式最后实现的效果是完全一致。系统工作流程如图1所示。
图1 系统工作流程图
该系统的硬件主要包括单片机、GPS、按键、语音、存储和屏幕显示和电源等功能模块;软件方面用GPS模块和单片机STC89C52RC 之间通过串口来进行数据的交换。而按键模块方面是通过手动的方式来实现公交的自动报站。本系统详细的结构如图2所示。
图2 智慧候车亭自动报站系统框图
本系统的硬件部分含有VK16U6GPS 模块、核心单片机STC89C52RC 模块、LCD12864 显示模块、按键模块、MX500S-10P语音模块等部分,每块电路通过与单片机上的引脚插口的组合连接,展现其各自的功能。
本系统核心单片机采用STC89C52RC,将MCU(中央处理器)、ROM(只读存储器)、RAM(随机存取存储器)以及IO接口(输入输出接口)等元器件集中在一块电子印刷板上。它同时还具有实时运算速度快、能源功率消耗少以及抗干扰性强等明显的优势,同时它由顶而下兼容旧版的C51型号单片机设备。
单片机STC89C52RC引脚示意如图3所示。
图3 STC89C52RC引脚图
主要用到的引脚主要的是:P0(即图3中39至32)对应连接LCD12864 模块的RB0-RB7 接口,P2.7、P2.6、P2.5(即图3 中28、27、26) 口对应连接至LCD12864 模块的E、RW、RS 口,P3.0、P3.1(即图3 中10、11),连接下载程序接口RXD、TXD,最后是VCC接5V左右的电源,VSS接地。
晶振电路是单片机拥有的一种特殊电路,就它本身而言也是单片机架构中必有的一项环节,毫不夸张地说是起决定作用,它的本质为时钟电路,所产生的时钟频率越快单片机指令执行的速度也越快。传统意义而言晶振频率是极高的,最高可达到百万分之一。此外通过压控振荡器(VCO)产生的外部电压也可以使得某些晶振的频率在一定的范围内发生改变。
综合而言晶振的存在是为了帮助系统的时钟信号维持相对的平衡关系,因此一个系统必带一个晶振,该晶振的使用频率为11.0592M。如图4所示。
图4 外部晶振设计
复位电路是单片机上的一个保护电路,作用是恢复单片机原始状态,目前选择的这个STC89C52 内部集成了这一项设计,具体为高电平复位,当然外部复位电路也同时保留了下来,通过连接单片机的RST引脚也可实现。
本系统用到的是业内标准的高精度GPS 尺寸为25mm×25mm×4mm,拥有5Hz 的实时定位速率,UART/TTL、232、USB2.0三种格式的可选接口也是比较齐全。使用KDS 0.5PPM 高精确度TCXO,内建RTC 晶体及皮法电容能够更快地热启动以及内置EEPROM能自由丰富配置参数。
用到的引脚接口为RXD、GND、VCC_N(即为DEF接口),其中RXD 为串行输入接口与单片机STC89C52RC 相连,主要目的是把GPS 接收到的数据发送给单片机进行解析处理,GND 为接地接口,VCC为电源接口。
本系统设计使用的是型号为LCD12864 液晶显示模块,如图5 所示。其中数字12864 为尺寸比例是128×64,可以显示汉字和简单图片。另外就是它也具备低功耗低电压的优势,可以在轻量级的设备上使用。综合来说在LCD12864模块是当前价位实现液晶显示功能的最佳选择。
图5 LCD12864液晶显示屏引脚图
LCD12864液晶显示屏引脚图如图5所示。
LCD液晶模块使用到的引脚是VSS、BLK(即图5中的1、20)接地,VDD、PBS、RST、BLA(即图5中的2、15、17、19)连电源接口,RS、RW、RE(即图5中的4、5、6)接单片机STC89C52RC的P2口,也就是P2.5、P2.6、P2.7。
MX500S 为串口可供选择的一种MP3 芯片,它的优点是对于MP3、WAV格式的文件能完美支持,同时支持使用电脑更新SPI-flash。通过使用串口指令就能完成音乐的播放,舍弃掉复杂的底层操作,便捷稳定则是该款产品的最大优势。此外该芯片也是经过深度定制,具体定制内容:为了固定语音播放而开发的低成本的打包方案。按键电路与晶振电路并联,按键模块与单片机STC89C52RC 的P3.7 KEY 口进行连接。本系统外放采用最为简单的喇叭模块,是面对绝大多数场景的最优选择。
本系统设计的软件编程部分使用KEIL 4 这个专业的汇编软件来完成,KEIL 软件具有编译灵活小巧,简便易于操作等特点,采用C语言进行软件代码编写。
主程序能够对各个子程序进行调度。按下开始按钮,先是初始的加载界面,然后进入主界面,选择是否启动GPS模式,如果选择启动就通过GPS接受当前经纬度信息,经过比对后就进行语音播报再通过单片机解析把位置信息转化成站点名称显示在LCD 液晶显示屏上然后停车结束。如果选择不启动GPS模式,就按下按键,同样的单片机就会把预先设置好的站点信息投放到LED显示屏幕上,随后语音播报完成整个流程,如图6所示。
图6 主程序流程图
LCD12864 液晶显示模块的子程序操作流程为:先要接收到主程序的指令信息后,将其设置输入为模式子函数的状态,选择是否要初始化LCD 子函数,选择是否显示定位子函数,接着在显示字符子函数和站点信息设置及调用,从而达到显示站名信息功能,如图7所示。
图7 LCD液晶模块流程图
MX500 语音模块子程序建立在收到主程序的指令信息后,输出一个负脉冲信号,语音芯片内部指针指向本站点的语音段,然后再输出一个负脉冲信号,最后依靠喇叭播报当前指针指向的语音段。流程图如图8所示。
图8 语音模块子程序流程图
单片机上电后,选择经过GPS 扫描后,倘若检测到GPS 信号。经过判断数据是否有效。完成后通过内在核心自行计算经度和纬度信息,最后发送给单片机核。程序流程图如图9所示。
图9 GPS解析流程图
开机调试具体包括以下六大步骤。
1)使用USB 充电线一端连接实物一端连接充电宝,等待电源接通屏幕亮起。
2) 此时需要走到户外把实物静置几分钟等待GPS 定位完成并且会在屏幕上显示详细的当前经纬度位置信息,然后把收到的经纬度信息与站台名称记录,前往下一站点再经过同样的方式收集并且记录当前的经纬度以及站台信息,总计重复四次。
3)成定位信息收集后利用KEIL软件完成代码的编写。代码编写如图10所示。
图10 代码编写显示图
代码编写完成之后通过KEIL软件生成hex文件。文件生成结果如图11所示。
图11 文件生成结果显示
4)用STC 单片机下载软件并将文件烧入单片机。软件截图如图12所示。
图12 STC软件截图
5)使用手机自带的录音软件把自动播报的语音录好并将语音格式调整为MP3格式以及32bit的码率并且按照播报的顺序排列整齐。
6)通过USB 数据线把录音文件拷入单片机就完成整个调试步骤。
本文基于GPS 设计了一种智慧候车亭自动报站系统,首先简述了系统工作原理及总体设计架构,从单片机模块及最小系统、VK16U6GPS模块、LCD12864液晶显示模块、MX500S-10P 语音模块等方面给出了硬件部分设计思路及方法,从系统主程序设计、LCD液晶显示子程序、语音模块子程序、GPS 解析软件流程图等方面阐述了软件部分设计思路及方法,最后进行了该系统的调试。