1、摘 要目前城市的公交车一般都安装了语音报站系统,给乘客带来了很好的乘车体验。不过大部分的语音报站系统都是人工报站系统,需要司机人工操作,这样会分散司机的注意力,给车子行驶带来很大的安全隐患。本文叙述了采用 Atmel 公司的 AT89S52 单片机设计的一款公交语音自动报站系统,它具有如下功能:(1)利用 LCD12864 液晶来实现站名信息的显示;(2)利用北京宇音天下科技公司生产的中文语音合成模块 SYN6288 实现站名信息的播报;(3)使用 DF 无线收发模块及 PT2262、PT2272 编解码芯片实现无线信号的收发和站名的识别。该自动报站系统结构简单、成本低、音质清晰、可靠性高,提
2、高了公交的服务质量,促进城市经济和公交事业的和谐发展。关键词 单片机;液晶显示;语音合成;自动报站;无线通讯Abstract At present, bus-stop-name reading system is installed in buses commonly. It gives passengers more convenience. Since most of the bus-stop-name reading systems is artificial, it needs manual operation. It would divert the drivers attentio
3、n and reduce the driving safety.It is discussed the design of automatic bus-stop-name reading system using AT89S52 single chip microcomputer produced by the Atmel company, it has these functions.(1)displays the information of bus-stop-name using LCD12864 LCD;(2) realizes the reading of bus-stop-name
4、 information using Chinese speech synthesis module SYN6288;(3) achieves the receiving and transmitting of wireless signal and identifying of the bus-stop-name. Using DF wireless transceiver module and PT2262,PT2272 decoding chip. The automatic bus-stop-name reading system is simple in structure, low
5、 in cost, sound quality, high reliability, it improves the quality of bus service, promotes the harmonious development of public transport undertakings and urban economy.Key words Single chip microcomputer(SCM) Liquid crystal display Speech synthesis Automatic bus-stop-name reading Radio communicati
6、on第 1 章 绪论1.1 课题研究背景与意义公交车为外出的人们提供了方便快捷的服务,而公交车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多城市已经被淘汰。近年来,随着科学技术的发展和进步,微型计算机技术已经在许多领域得到了广泛的应用1。在声学领域,微机技术和各种语音芯片的相结合,即可完成语音合成技术,使得汽车报站的实现成为可能,从而为市民提供了更加人性化的服务。鉴于传统公交报站系统的不足之处,结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交车自动报站系统。1.2 报站器的动态发展趋势公交车行驶在现代文明程度高的市区,它是一道流动的
7、风景线,因而对整车外形及至色彩都有更高的要求。作为公交车还要求有醒目和减少乘务人员劳动强度的电子报站器、电子显示路牌、无人售票装置、前后电视监视系统等新技术的采用也将越来越善及。公交报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。目前公交报站有三种方式,一种是利用 GPS 全球卫星定位系统2 ,在司机座位后面的隔板上,安装了一台15 英寸的液晶电视和 GPS 信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没有听清楚报站的话,通过显示屏,乘客也可以一目了然。目前在美国部分城市 GPS 卫星定位系统已经投入使用,国内也有此类
8、产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站的方式,而他们都离不开司务人员,加大了乘务人员的工作强度。手动电子报站一般由司机或者乘务人员控制,经常出现错报、误报的情况。城市公共交通是市民出行的主要交通工具之一。提供舒适、安全、便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是不断追求的目标。因此,如何设计一款能自动报站、成本低、报站语音效果好的报站系统成为本课题的研究重点。第 2 章 系统的设计方案2.1 系统设计的任务设计一个基于单片机控制的语音自动报站系统,要求实现的功能如下:(1)可以设置上、下行路线;(2)可以显
9、示当前的站名、下一站的站名、时间和日期、并能进行对日期和时间进行设置;(3)具备手动和自动报站两种功能;(4)方便用户修改站名和站数,更新快捷方便。2.2 系统方案选择(1)采用 AT89S52 单片机作为系统设计的核心51 系列单片机具有高效能、资源占用率低等特点。目前 51 系列单片机的应用非常广泛。结合 C 语言、汇编等程序,单片机可以实现丰富的功能,并且部分设计可以直接在 Proteus环境上进行仿真实现相应的功能。(2)语音播报方案一、采用专门的语音芯片3该类芯片有 ISD、PM、ALPHA 等系列。常用的如 ISD4004,可以录入长达 8 分钟的语音,8K 采样率。虽然这些语音芯
10、片音质失真度较小,但背景噪声很大,还得额外加功放,无额外发挥功能。方案二、采用 SYN6288 语音合成模块SYN6288 语音合成模块通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。文本识别智能、语音合成效果和智能识别效果非常优越。还具有体积小、硬件接口简单、性价比高的优点。考虑报站需良好音质,而且要求控制方便,所以决定采用方案二。(3)自动报站实现方案方案一:采用 GPS 定位系统,对公交车定位,当公交车的经纬度与车站的经纬度相接近时便报站。此方案精度高,稳定性好,但 GPS 价高几百,且必须先对车站的经纬度进行精确勘察,编程难度大、数据处理复杂、精确度要求很高,其工作量可谓
11、艰巨。方案二:采用现成的无线收发模块,如 PT2272/PT2262 收发模块4 ,价格只需 10 元左右,虽廉价但稳定性极高,距离几 十米到上百米,调节方便,信号传输的距离达到报站的要求;PT2272/PT2262 最多可有 12 位(A0 A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供 531441 种地址码,对一个城市来说已够用,故选用此方案。(4)人机界面信息的显示采用 LCD12864 大液晶进行信息的显示。LCD12864 可以显示字符、汉字、图片等大量信息,而且控制简单。传统的数码管、1602 液晶等器件显示的信息有限,并且这些器件只能显示字符和数字,不能显示
12、汉字。所以本系统选择性价比高的 LCD12864 大液晶进行信息显示。2.3 系统设计的体系结构公交语音报站系统有两种报站模式:手动模式和自动模式。(1)手动模式手动模式的方框图如图 2-1 所示。在公交车即将到站时,由驾驶员人手操作按键,进行站名的播报。在公交车站台设置无线遥控发射器,当公交车离站台一定距离时(距离可根据具体环境进行调整) ,接收器接收到发射器的信号,经过编码验证后,将信号送入主控制器电路板。主控制器电路板由单片机控制,通过编写程序,按照顺序发出控制信号给语音合成模块,调用语音模块中的语音信息,自动播报如“XX 车站到了,下车的乘客后门请 ”等信息,整个过程完全由单片机控制完
13、成,无需公交车驾驶员参与。2.4 本章小结本章简要讲述了自动报站系统的设计任务,针对课题的要求提出了相关的方案并分别进行了详细的说明比较。通过比较,选择出最佳的方案作为最后的设计方案。第 3 章 系统硬件设计根据第 2 章介绍的系统设计要求和设计思路,确定该系统的硬件设计结构如图 3-1 所示。硬件电路主要由 MCU 微处理控制单元、LCD 液晶显示模块、语音芯片、按键控制、实时时钟电路、晶振电路、串口部分等模块化电路组成。语音合成模块原理图本系统接收模块数据位有六位,数据口接到单片机 P2.0P2.5 口,遥控接收器接收到站台发来的无线信号后,将信号送入单片机,单片机根据程序对输入的信号进行
14、编码验证,从语音合成模块中调用对应的报站语音,驱动功率放大器播报站台信息。当出现异常情况时,司机可通过键盘上的按键强制对播报信息进行调整,意外情况解除后,公交车接收到新的站台信号,通过编码验证后,程序就可以恢复自动运行,保障公交报站顺利进行。3.7.4 按键部分原理图按键电路连接图如图 3-16 所示。第 4 章 程序设计4.1 模块介绍本系统软件设计分为以下几个模块:(1)主程序模块主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。主程序的流程图如 4-1 所示。(2)无线接收程序当接收模块接收到站台无线发射模块发射过来的 6 位二进制代码时,单片机马上进入中断,然后检
15、测和判断接收到的代码,最后根据判断出的代码进行相应的语音播报及信息显示等操作。(3)时钟子程序(4)按键子程序按键采用独立模式,单片机循环检测按键的状态,一旦检测按键被按下,则执行相应的处理,其中包括时钟(日期时间)的设置、中断按键的处理等等。(5)液晶显示子程序(6)语音报站子程序4.2 程序流程图(1)主程序流程图主程序流程图如图 4-1 所示。主程序先对液晶、串行口、中断、时钟等进行初始化设置,然后程序一直循环检测时钟调整按键是否被按下(即是判断标志位 flag 是否等于 0) ,如果此按键被按下,则执行时钟调整功能,否则执行时间显示、语音报站、报站信息显示等功能。无线自动报站模式:采用
16、外中断 0,也就是检测单片机 P3.2 管脚是否为被拉为低电平;手动报站模式:采用查询模式,也就是检测单片机 P3.3 管脚是否被拉为低电平。(2)语音报站子程序流程图语音报站子程序流程图如图 4-2 所示。首先检测上、下行路线控制按键是否按下,如果没按下,等待;如果按下,进行始发站信息的播报并显示。同时开启无线信号的接收、识别站台自动播报或者进行手动播报。(3)无线接收子程序流程图无线部分程序设计流程图如图 4-3 所示。首先对系统进行初始化设置,在公交车运行过程中,不断对站台发出的无线信号进行检测,当检测到信号时,单片机进入中断,在中断系统中首先进行防干扰处理,防干扰程序按照相同的站台编码
17、信号只触发程序工作一次的思路来编写,这样避免了公交车在靠站台过程中因反复接收到无线信号而引起重复报站或者程序混乱。4.3 部分程序设计及编程说明4.3.1 发声部分子程序/串口发送数据void UART_Trans(uchar n)SBUF = n; while(TI=0); /发送数据 TI=0;void Speech(uchar *buf, uchar len)uchar i = 0; /循环计数变量uchar xor = 0x00; /校验码初始化BUSY = 1;headLEN_OFFSET = len + 3; /计算正文长度(1 命令字 + 1 命令参数 + 文字长度 + 1 校验
18、位)/发送数据包头(0xFD + 2 字节长度 + 1 字节命令字 + 1 字节命令参数)for(i = 0; i #include “LCD12864.h“#include “DS1302.h“#include “SYN6288.h“#include “ANJIAN.h“#include “BAOZHAN.h“#include “WUXIAN.h“#include “YONGHU.h“#include “GJBZ_INIT.h“#include #include #define uint unsigned int#define uchar unsigned charvoid xi_tong_
19、init()TMOD=0x20; SCON=0xD8; PCON=0x00;IE=0x81;TCON=0x01;TH1=0xFD;TR1=1;void main(void) xi_tong_init();init_lcd();clrram_lcd();Initial_DS1302();up_flag=0;down_flag=0;done=0; while(1) while(done=1)keydone(); while(done=0) show_time(); Setkey();baozhan1();show_baozhan();void show_time() DS1302_GetTime(TimeToStr( DateToStr( gotoxy(1,0);print(CurrentTime.TimeString);gotoxy(2,0);print(CurrentTime.DateString);gotoxy(1,5);print(“星期“);gotoxy(1,7);print(week_value); mdelay(500);