公交车语音自动报站系统的设计第3稿11
发布时间:2024-10-18
发布时间:2024-10-18
公交车语音自动报站设计
本科生毕业论文(设计)
系(院)物理与电子工程学院
专 业 电子信息工程
论文题目公交车语音自动报站系统的设计
学生姓名
指导教师 吴波(讲师)
(姓名及职称)
班 级 07级电信1班
学 号
完成日期:2011 年4月
公交车语音自动报站设计
公交车语音自动报站系统的设计
李春容
物理与电子工程学院 电子信息工程 07331046
[摘 要] 本文介绍了一种利用红外线技术,模拟公交车语音自动报站的系统的设计制作过程。该设计以STC89C52单片机为控制核心,ST188作为进出站识别系统,再由单片机控制语音芯片APR9600输出事先录入的站点信息,达到语音播报的目的,同时LCD显示当前的站台信息。
[关键词]单片机 反射式红外传感器 模数转换芯片 语音芯片
1前言
现今社会,公交事业关乎到大多数城市居民的出行,可公交车上的报站系统依然无法满足大家对其的要求。现在公交车上普遍使用的人工按键报站会出现报站不准确(由于司机在操作报站系统时经常会按错键或忘记按键,而且在调整系统时会连续报出几个站点,让不熟悉路线站点的乘客不知所措),并且每次报站时都需要由驾驶员对报站器进行操作,而在车辆起动与进站时,往往是路面情况最复杂的时候,驾驶员既要对行驶中的汽车进行起动或制动等操作,同时还要兼顾报站系统的操作,给行驶中的车辆带来一定的安全隐患。
虽然现在已经有些大城市的某些公交车上已经采用GPS定位系统自动报站,但其昂贵的成本,难以实现普及,特别是一些中小城市难以负担。本设计针对目前常见公交车报站系统的主要缺陷,介绍了基于单片机控制的公交车语音自动报站系统,该系统费用廉价,可以普及。
2 总体方案设计
2.1 方案例举
方案一:由麦克风输入语音信号,经过放大处理后送至AD采样转换成单片机可以识别的数字信号,再存放在外部存储器(EEPROM)里面,当到站的时候,在有单片机从中取出声音信号,送给DA转换成模拟的音频信号,再经过音频放大器将信号放大,最后送到扬声器,进行语音播报。
公交车语音自动报站设计
方案二:把预先制作好的语音信息,分别都烧录到一块一次性集成语音芯片内,当到站或出站的时候就由单片机控制驱动电路,分别驱动对应的语音报站芯片,让其进行语音播报,从而达到自动报站的目的。
方案三:采用可以反复录制和播放的语音芯片,由单片机控制录音和放音,将预先制作好的语音分段录入语音芯片,当要进行语音播报的时候,由单片机控制语音芯片,输出相应的语音信息,在将输出的语音信息经过放大器放大,最后送至扬声器播放[5]。 2.2 方案分析
方案一:设计思路简单,但是要求单片机有较高运行速度,硬件电路设计复杂,信号很容易收到干扰,实现比较困难。
方案二:运用一次性语音芯片是个不错的方法,它使得单片机控制非常方便,运用集成电路,可以有效的抗干扰。但是他需要使用很多的语音芯片,使得该系统的体检大大增加,同时它不能满足不同公交线路的使用,而且它的语音下载也需要专门的下载器件,不方便多次录音使用。
方案三:此方案的设计思路明确,其最大优点是采用到了可以反复录音和放音的语音芯片,可以实现重复录放音的功能,可以满足当公交线路改变的情况下重新录音使用,而且采用了集成芯片,让电路具有更强的抗干扰性[5]。
综合上述三个方案,并进行优化论证,主要考虑其设计思路明确,外部电路简单等优点,最后决定采用方案三。 2.3系统总体设计结构
该公交车自动报站系统是由单片机模块、键盘输入控制、语音播报模块、显示模块以及红外识别模块共同组成。系统基本原理结构是:对红外识别模块采集的相应信号进行处理,然后由控制模块对处理后的信号进行分析判断,并控制显示模块和语音模块。公交车语音自动报站系统的设计基本原理结构框图如图2.1所示。
公交车语音自动报站设计
系统实现的功能主要有:
(1)利用红外反射原理,实现对公交车的进站与出站的识别; (2)播报及显示相应的站台信息;
(3)进站与出站时,分别发出相应的响应;
3 系统硬件设计
3.1系统整体硬件电路
整个硬件系统结构设计部分主要包括STC89C52单片机主控制模块、红外识别模块、液晶显示模块、语音播报模块、按键输入模块以及电源模块。系统总电路图如图3.1所示。
图3.1系统原理图
公交车语音自动报站设计
3.2 红外识别模块设计
ST188作为进出站识别传感器,其原理是根据接受管接受到发射管发送出去的红外线的反射量的大小来来识别线路情况。ST188采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,检测距离可调整范围大,4-13cm可用,采用非接触检测方式[7]。其光电特性(Ta=25℃)和极限参数(Ta=25℃)如表3.1和3.2[7]。
表3.1光电特性(Ta=25℃)
表3.2极限参数(Ta=25℃)
为了保证传感器正常工作,在发射管的输入端接入了限流电阻,在接受管的输出端增加了一个上拉电阻,以保证检测信号的准确,其电路原理图如图3.4[7]。
公交车语音自动报站设计
图3.4反射式红外传感器内部结构原理图
3.3模数转换模块
由于传感器输出的信号是模拟信号,因此需要用模数转换芯片ADC0809将它转换为数字信号,然后才能提供给单片机读取,其电路电路如下图3.5。
图3.5数模转换电路
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,其转换时间为100μs左右。因此可以直接与系统数据总线相连,表3.3为通道选择表[6]。
表3.3 通道选择表
图3.6 ADC0809引脚图
公交车语音自动报站设计
为了使AD0809正常的工作,除了电源之外的另外一个条件就是500kHz左右的时钟信号,为了电路设计简单,将单片机的定时器2输出口与AD0809的时钟输入口相连,用单片机产生500kHz的时钟信号。 3.4 键盘输入控制模块
按键电路是由按键开关经上拉电阻分别接P3.0、P3.1、P3.2口构成,同时3个IO口还与74HC04以相与的方式连接,最后的输出连接至单片机的外部中断口,以外部中断方式进行键盘扫描,其电路如图3.7所示。三个按键分别起到设置、录音和放音作用:按下1键,表示对模式的选择,即:公交车播报模式、手动录音模式、手动放音模式;按下2键,表示录音模式的开始或结束;按下3键,表示放音模式的开始或结束。
图3.7按键电路图
3.5 单片机最小系统模块
STC89C52 是一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
公交车语音自动报站设计
图3.8单片机最小系统原理图
3.6 语音电路模块
设计采用APR9600来播报当前站台信息语音模块主要由扬声器构成。语音模块由APR9600语音芯片和扬声器构成。APR9600采用模拟存储技术的一款音质好、噪音低、不怕断电、可以反复录音的新型语音电路。单片电路课录放32-60秒,串行控制时可分256段以上,并行控制时最多可分8段[1]。
APR9600芯片的内部,录音时外部音频信号通过话筒输入和线路输入方式进入,话筒可采用普通的驻极体话筒,在芯片内话筒放大器中自带自动增益调节,可由外接阻容件设定响应速度和增益范围,如果信号幅度在100mv左右即可进入线路输入端,音频信号由内部滤波器、采样电路处理后以模拟量方式存入专用快闪存储器FLASHRAM中。由于FLASHRAM是非易失器件,断电等因素不会使存储的语音丢失。
APR9600芯片有两种控制模式,即并行控制模式和串行模式。并行控制模式在控制放音和录音分的段是一定的,因此选用串行控制模式可以自由选择。RE=0,为录音状态;RE=1为放音状态[1]。
表3.4APR9600操作模式表
公交车语音自动报站设计
为了使操作更加方面,在语音芯片的控制上,不再是才用按键操控,而是直接与单片机IO口连接,通过单片机来实现多语音芯片的所有操作,其硬件电路如图3.9。
图3.9 APR9600电路原理图
3.7 LCD液晶显示电路设计
本设计采用LCD1602来显示当前相关信息。LCD的D0~D7 八位双向数据口接单片机的P1口,控制端口与单片机的P3.0~P3.2相连,通过单片机自动控制相关数据的写入。LCD1602引脚图如图3.10所示。
图3.10 LCD1602引脚图
各个引脚的功能如表3.5所示。
公交车语音自动报站设计
表3.5 LCD1602引脚功能说明
图3.11 LCD1602与单片机接口电路图
4 系统软件设计
4.1 主程序设计流程图
主程序贯穿这个系统,是实现整个系统功能的主体,其主要功能:通过ST188反射式红外传感器识别到站和出站,通过按键设定来进行相关的模式选择和功能设定,其中的模式包括录音模式、放音模式和公交语音播报模式。其流程如图4.1。
公交车语音自动报站设计
4.2键盘扫描控制模块
本系统采用外部中断方式进行键盘扫描。工作原来为:在没有按键按下的时候,没有产生中断,有按键按下的时候由高电平跳变到低电平,产生一个下降沿,触发中断,然后在中断服务程序中进行键盘扫描并获得不同的按键信息,根据不同的按键来进行不同的设定控制。其流程图如图4.2。
图4.2 键盘扫描流程图
键盘扫描程序:
void out0(void) interrupt 0 {
//外部中断0 键盘扫描
公交车语音自动报站设计
key_num=key_scan(); }
unsigned char key_scan(void) {
unsigned char aa; if((P3&0x0b)!=0x0b) {
while(aa--); if((P3&0x0b)!=0x0b) {
switch (P3&0x0b) {
case 0x0a:return(1);break; case 0x09:return(2);break;
case 0x03:return(3);break; } } }
else return(0); }
4.3信号采集模块
该模块主要是通过单片机控制模数转换芯片来获取当前的道路位置信息,其控制流程图4.3。
图4.3 AD转换控制流程图
信号采集程序:
公交车语音自动报站设计
unsigned char get_ad(unsigned char abc) {
unsigned char Vx=0; switch(abc) {
case 0:{abc_c=0;abc_b=0;abc_a=0;break;} case 1:{abc_c=0;abc_b=0;abc_a=1;break;} case 2:{abc_c=0;abc_b=1;abc_a=0;break;} case 3:{abc_c=0;abc_b=1;abc_a=1;break;} case 4:{abc_c=1;abc_b=0;abc_a=0;break;} case 5:{abc_c=1;abc_b=0;abc_a=1;break;} case 6:{abc_c=1;abc_b=1;abc_a=0;break;}
case 7:{abc_c=1;abc_b=1;abc_a=1;break;} }
START=1;START=0; //启动转换 while(EOC==0); //查询法读结果 OE=1;
Vx=P1&0xfe; OE=0; return(Vx); }
4.4语音模块
该模块主要通过单片机控制语音芯片的工作模式来完成不同模式的工作,要达到语音播报的功能,首先就是要将声音信号播报信号录如语音芯片并能够自由的控制其播放,到达不同的站点控制播报相对应的语音信息。 4.4.1 录音模式
通过控制语音芯片工作在录音模式,采用串行控制的方式来控制录音的段数,并在液晶屏上显示录音时间,其操作流程如图4.4。
图4.4 录音模式流程图
公交车语音自动报站设计
4.4.2 放音模式
通过控制语音芯片工作在放音模式,采用串行控制的方式来控制放音的段数,并在液晶屏上显示放音时间,用来检测录音是否正确,其操作流程如图4.5。
图4.5 放音模式流程图
4.4.3 公交报站模式
通过控制语音芯片工作在放音乐模式,并根据信号采集模块采集的站点信息来控制控制的播放相对应的语音信息,同时液晶显示器给以文字提示,其操作流程如图4.6。
图4.6公交报站模式流程图
5 系统的制作测试与分析
5.1 硬件制作与调试
根据上述对各个模块方案的分析和论述,选择适合该设计要求的电路控制芯片和元器件,进行硬件的安装、焊接的制作过程,进而在进行硬件性能的检测。根据
公交车语音自动报站设计
上述系统硬件和软件的设计基础,进行系统的调试,以检查系统设计的完整性和可行性。调试主要用到的开发工具为Proteus。根据仿真成功的基础制作硬件电路,以使电路的可行性有所保障,硬件制作后对硬件进行调试和改进,使得电路系统能够实现预期的功能。 5.1.1 软件仿真
该系统的软件仿真采用Proteus软件。在Proteus元件库找出所要需要的元件,根据设计的电路在Proteus电路仿真窗口把各元件连接起来形成电路,再将通过了调试的程序加载到单片机上,就可以运行看能否实现功能。然后再通过单步运行,慢慢调试,直到满足要求。系统软件仿真电路如图5.1所示。
图5.1 Proteus仿真环境
5.1.2 硬件制作
根据前面对硬件的仿真设计和具体的调试,证明系统硬件电路部分具有可行性。所以在此基础上选取符合各单元电路性能要求的元器件进行筛选、测试、焊接。经过对单元电路的调试和系统功能的整体测试、优化和修改,形成了满足设计任务要求的硬件系统。公交车语音自动报站系统正常工作时的外形如图5.2所示。
公交车语音自动报站设计
图5.2 硬件实物图
第一个按键:模式的选择,即放音模式、录音模式、正顺序显示模式;第二个键:录音的开始或结束;第三个键:放音的开始。系统在正常工作时,让第一个按键选择到正顺序显示模式,当红外检测到第一条黑线时即出站,语音芯片会播报欢迎词;当红外检测到第二条黑线时即进站,语音芯片会播报第一个站的站名,液晶显示当前站名;当红外检测到第三条黑线时即出站,语音芯片会播报下一站的站名,液晶显示下一站的站名;当红外检测到第四条黑线时即进站,语音芯片会播报第二个站的站名,液晶显示当前的站名;依次类推。 5.2 软件测试与分析
根据上述硬件系统电路的制作与调试,结合软件设计,进行系统的调试,同时检查系统设计的完整性和可行性。调试中主要用到的开发工具有KEIL。 5.2.1 软件调试
在编写软件程序时,先编写各部分子程序,分别对各程序进行编译检查是否有语法错误,完成后再检查功能程序是否正确,单步执行程序,观察各个寄存器、变量、数组的变化是否正确。在每部分子程序调试通过后,结合电路对所有程序进行调试。根据系统实现的功能,编写出完整的主程序,在KEIL里完成程序编译后生成HEX文件。将HEX文件加载到Proteus设计的总电路中进行总体的调试,直至全部功能实现。最后将调试好程序下载到STC89C52单片机里,再通过对做好的硬件观察现象是否正确,功能是否实现,若有问题则要重新进行以上操作,直至成功。5.2.2 系统软件仿真
我采用KEIL软件汇编编程来实现系统软件仿真这一环节。进入KEIL软件仿真环境时,首先要选定编程单片机的型号,本设计我选用STC89C52。选定好芯片后,将程序写入软件文本窗口,然后保存进行编译,通过设置各个标志位和地址数据,