毕业设计样板.docx
《毕业设计样板.docx》由会员分享,可在线阅读,更多相关《毕业设计样板.docx(20页珍藏版)》请在冰豆网上搜索。
毕业设计样板
摘要
目前城市的公交车一般都安装了语音报站系统,给乘客带来了很好的乘车体验。
不过大部分的语音报站系统都是人工报站系统,需要司机人工操作,这样会分散司机的注意力,给车子行驶带来很大的安全隐患。
本文叙述了采用Atmel公司的AT89S52单片机设计的一款公交语音自动报站系统,它具有如下功能:
(1)利用LCD12864液晶来实现站名信息的显示;
(2)利用北京宇音天下科技公司生产的中文语音合成模块SYN6288实现站名信息的播报;(3)使用DF无线收发模块及PT2262、PT2272编解码芯片实现无线信号的收发和站名的识别。
该自动报站系统结构简单、成本低、音质清晰、可靠性高,提高了公交的服务质量,促进城市经济和公交事业的和谐发展。
关键词单片机;液晶显示;语音合成;自动报站;无线通讯
Abstract
Atpresent,bus-stop-namereadingsystemisinstalledinbusescommonly.Itgivespassengersmoreconvenience.Sincemostofthebus-stop-namereadingsystemsisartificial,itneedsmanualoperation.Itwoulddivertthedriver'sattentionandreducethedrivingsafety.Itisdiscussedthedesignofautomaticbus-stop-namereadingsystemusingAT89S52singlechipmicrocomputerproducedbytheAtmelcompany,ithasthesefunctions.
(1)displaystheinformationofbus-stop-nameusingLCD12864LCD;
(2)realizesthereadingofbus-stop-nameinformationusingChinesespeechsynthesismoduleSYN6288;(3)achievesthereceivingandtransmittingofwirelesssignalandidentifyingofthebus-stop-name.UsingDFwirelesstransceivermoduleandPT2262,PT2272decodingchip.Theautomaticbus-stop-namereadingsystemissimpleinstructure,lowincost,soundquality,highreliability,itimprovesthequalityofbusservice,promotestheharmoniousdevelopmentofpublictransportundertakingsandurbaneconomy.
KeywordsSinglechipmicrocomputer(SCM)LiquidcrystaldisplaySpeechsynthesisAutomaticbus-stop-namereadingRadiocommunication
第1章绪论
1.1课题研究背景与意义
公交车为外出的人们提供了方便快捷的服务,而公交车的报站直接影响服务的质量。
传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多城市已经被淘汰。
近年来,随着科学技术的发展和进步,微型计算机技术已经在许多领域得到了广泛的应用[1]。
在声学领域,微机技术和各种语音芯片的相结合,即可完成语音合成技术,使得汽车报站的实现成为可能,从而为市民提供了更加人性化的服务。
鉴于传统公交报站系统的不足之处,结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交车自动报站系统。
1.2报站器的动态发展趋势
公交车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形及至色彩都有更高的要求。
作为公交车还要求有醒目和减少乘务人员劳动强度的电子报站器、电子显示路牌、无人售票装置、前后电视监视系统等新技术的采用也将越来越善及。
公交报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。
目前公交报站有三种方式,一种是利用GPS全球卫星定位系统[2],在司机座位后面的隔板上,安装了一台15英寸的液晶电视和GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没有听清楚报站的话,通过显示屏,乘客也可以一目了然。
目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。
另外两种是手动电子报站和人工报站的方式,而他们都离不开司务人员,加大了乘务人员的工作强度。
手动电子报站一般由司机或者乘务人员控制,经常出现错报、误报的情况。
城市公共交通是市民出行的主要交通工具之一。
提供舒适、安全、便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是不断追求的目标。
因此,如何设计一款能自动报站、成本低、报站语音效果好的报站系统成为本课题的研究重点。
第2章系统的设计方案
2.1系统设计的任务
设计一个基于单片机控制的语音自动报站系统,要求实现的功能如下:
(1)可以设置上、下行路线;
(2)可以显示当前的站名、下一站的站名、时间和日期、并能进行对日期和时间进行设置;
(3)具备手动和自动报站两种功能;
(4)方便用户修改站名和站数,更新快捷方便。
2.2系统方案选择
(1)采用AT89S52单片机作为系统设计的核心
51系列单片机具有高效能、资源占用率低等特点。
目前51系列单片机的应用非常广泛。
结合C语言、汇编等程序,单片机可以实现丰富的功能,并且部分设计可以直接在Proteus环境上进行仿真实现相应的功能。
(2)语音播报
方案一、采用专门的语音芯片[3]
该类芯片有ISD、PM、ALPHA等系列。
常用的如ISD4004,可以录入长达8分钟的语音,8K采样率。
虽然这些语音芯片音质失真度较小,但背景噪声很大,还得额外加功放,无额外发挥功能。
方案二、采用SYN6288语音合成模块
SYN6288语音合成模块通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。
文本识别智能、语音合成效果和智能识别效果非常优越。
还具有体积小、硬件接口简单、性价比高的优点。
考虑报站需良好音质,而且要求控制方便,所以决定采用方案二。
(3)自动报站实现方案
方案一:
采用GPS定位系统,对公交车定位,当公交车的经纬度与车站的经纬度相接近时便报站。
此方案精度高,稳定性好,但GPS价高几百,且必须先对车站的经纬度进行精确勘察,编程难度大、数据处理复杂、精确度要求很高,其工作量可谓艰巨。
方案二:
采用现成的无线收发模块,如PT2272/PT2262收发模块[4],价格只需10元左右,虽廉价但稳定性极高,距离几十米到上百米,调节方便,信号传输的距离达到报站的要求;PT2272/PT2262最多可有12位(A0—A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441种地址码,对一个城市来说已够用,故选用此方案。
(4)人机界面信息的显示
采用LCD12864大液晶进行信息的显示。
LCD12864可以显示字符、汉字、图片等大量信息,而且控制简单。
传统的数码管、1602液晶等器件显示的信息有限,并且这些器件只能显示字符和数字,不能显示汉字。
所以本系统选择性价比高的LCD12864大液晶进行信息显示。
2.3系统设计的体系结构
公交语音报站系统有两种报站模式:
手动模式和自动模式。
(1)手动模式
手动模式的方框图如图2-1所示。
在公交车即将到站时,由驾驶员人手操作按键,进行站名的播报。
在公交车站台设置无线遥控发射器,当公交车离站台一定距离时(距离可根据具体环境进行调整),接收器接收到发射器的信号,经过编码验证后,将信号送入主控制器电路板。
主控制器电路板由单片机控制,通过编写程序,按照顺序发出控制信号给语音合成模块,调用语音模块中的语音信息,自动播报如“XX车站到了,下车的乘客后门请”等信息,整个过程完全由单片机控制完成,无需公交车驾驶员参与。
2.4本章小结
本章简要讲述了自动报站系统的设计任务,针对课题的要求提出了相关的方案并分别进行了详细的说明比较。
通过比较,选择出最佳的方案作为最后的设计方案。
第3章系统硬件设计
根据第2章介绍的系统设计要求和设计思路,确定该系统的硬件设计结构如图3-1所示。
硬件电路主要由MCU微处理控制单元、LCD液晶显示模块、语音芯片、按键控制、实时时钟电路、晶振电路、串口部分等模块化电路组成。
语音合成模块原理图
本系统接收模块数据位有六位,数据口接到单片机P2.0~P2.5口,遥控接收器接收到站台发来的无线信号后,将信号送入单片机,单片机根据程序对输入的信号进行编码验证,从语音合成模块中调用对应的报站语音,驱动功率放大器播报站台信息。
当出现异常情况时,司机可通过键盘上的按键强制对播报信息进行调整,意外情况解除后,公交车接收到新的站台信号,通过编码验证后,程序就可以恢复自动运行,保障公交报站顺利进行。
3.7.4按键部分原理图
按键电路连接图如图3-16所示。
第4章程序设计
4.1模块介绍
本系统软件设计分为以下几个模块:
(1)主程序模块
主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。
主程序的流程图如4-1所示。
(2)无线接收程序
当接收模块接收到站台无线发射模块发射过来的6位二进制代码时,单片机马上进入中断,然后检测和判断接收到的代码,最后根据判断出的代码进行相应的语音播报及信息显示等操作。
(3)时钟子程序
(4)按键子程序
按键采用独立模式,单片机循环检测按键的状态,一旦检测按键被按下,则执行相应的处理,其中包括时钟(日期时间)的设置、中断按键的处理等等。
(5)液晶显示子程序
(6)语音报站子程序
4.2程序流程图
(1)主程序流程图
主程序流程图如图4-1所示。
主程序先对液晶、串行口、中断、时钟等进行初始化设置,然后程序一直循环检测时钟调整按键是否被按下(即是判断标志位flag是否等于0),如果此按键被按下,则执行时钟调整功能,否则执行时间显示、语音报站、报站信息显示等功能。
无线自动报站模式:
采用外中断0,也就是检测单片机P3.2管脚是否为被拉为低电平;手动报站模式:
采用查询模式,也就是检测单片机P3.3管脚是否被拉为低电平。
(2)语音报站子程序流程图
语音报站子程序流程图如图4-2所示。
首先检测上、下行路线控制按键是否按下,如果没按下,等待;如果按下,进行始发站信息的播报并显示。
同时开启无线信号的接收、识别站台自动播报或者进行手动播报。
(3)无线接收子程序流程图
无线部分程序设计流程图如图4-3所示。
首先对系统进行初始化设置,在公交车运行过程中,不断对站台发出的无线信号进行检测,当检测到信号时,单片机进入中断,在中断系统中首先进行防干扰处理,防干扰程序按照相同的站台编码信号只触发程序工作一次的思路来编写,这样避免了公交车在靠站台过程中因反复接收到无线信号而引起重复报站或者程序混乱。
4.3部分程序设计及编程说明
4.3.1发声部分子程序
//串口发送数据
voidUART_Trans(ucharn)
{
SBUF=n;
while(TI==0);//发送数据
TI=0;
}
voidSpeech(uchar*buf,ucharlen)
{
uchari=0;//循环计数变量
ucharxor=0x00;//校验码初始化
BUSY=1;
head[LEN_OFFSET]=len+3;//计算正文长度(1命令字+1命令参数+文字长度+1校验位)
//发送数据包头(0xFD+2字节长度+1字节命令字+1字节命令参数)
for(i=0;i{
xor^=head[i];
UART_Trans(head[i]);
Delay
(2);
}
//发送文字内容
for(i=0;i{
xor^=buf[i];
UART_Trans(buf[i]);
Delay
(2);
}
UART_Trans(xor);//发送校验位
Delay(5);
while(BUSY);
Delay(3);
}
语音部分程序:
SYN6288通过异步串口(UART)通讯方式,接收待合成的文本数据,实现文本到语音(或TTS语音)的转换。
4.3.2外中断1无线接收信号扫描子程序
//
voidEX_INT0()interrupt0
{
P2=0xff;//P2口设置为输入状态
i=P2;//赋值给临时存贮变量
i=i&0x3f;//和0xf0相与屏蔽低四位,读取无线遥控码
if(t==0)
{
b=1;
}
if(b==1)
{
if(i==0x02)//1号站
{
num1=1;
num2=1;
bz_num_xianzhi();
}
if(i==0x04)//2号站
{
num1=2;
num2=2;
bz_num_xianzhi();
}
if(i==0x08)//3号站
{
num1=3;
num2=3;
bz_num_xianzhi();
}
if(i==0x10)//4号站
{
num1=4;
num2=4;
bz_num_xianzhi();
}
//……//注意(用户可以在此添加站数)
//始发/终点站(双向线路)
if(i==0x01)////始发/终点站
{
num1=zd_9;
num2=zd_7;
bz_num_xianzhi();
}
if(i==0x20)//始发/终点站
{
num1=zd_3;
num2=zd_10;
bz_num_xianzhi();
}
}
}
无线信号处理:
无线信号处理采用中断的方式,当单片机检测到站台发出的无线信号时,单片机马上进入中断系统,在中断系统中,比较实际站台信号编码与程序站台预置编码的异同,符合条件,则调用站台语音信息并进行播报。
4.3.3主程序
voidmain(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();
}
}
}
说明:
主程序完成液晶、中断、串口通信等初始化设置,主要执行循环检测按键是否被按下、无线信号接收、显示等命令。
4.4调试
(1)测试影响接收距离的因素
测试的过程中发现在给发射模块加5V的电压下,不加天线虽然也能够发送和接收,但是距离相当短,最多5米远,当收/发模块加上25厘米的天线后,测得解码距离明显增大,可达50米左右;当给发射模块加12V的电压时,同样给收/发模块加上25厘米的天线,测得解码距离可得100米以上。
由此得出影响收发距离的因素有两个:
一是发射模块的工作电压;二是收/发模块的天线匹配。
(2)电源电路的调试
前面的各道工序做好后,接通USB电源接口,观察电源指示灯是否正常点亮,如果正常点亮,则说明电源部分电路正常;否则检测电源电路故障,直到电源指示灯正常点亮。
实践过程中发现电源电路正常工作,没有出现异常。
(3)LCD12864液晶显示器、DS1302电路、语音合成模块的调试
接通电源开关,把写好的程序烧入单片机中,根据系统的控制要求对各部份进行检测。
检测要求包括AT89S52工作是否正常、LCD12864显示是否正常、时间的显示是否正常、语音合成模块是否能正常合成语音以及正常播放、按键的控制是否符合系统的控制要求等。
结论
针对当前公交车上人工报站的弊端,设计了一种基于无线数据收发原理的公交报站系统,实现了公交车的智能报站功能。
通过系统测试以及与其它方式的报站对比,本系统具有价格低廉、报站准确率高,而且具有很好的推广性,不失为公交车上的一种智能装置。
系统根据无线数据收发原理,对每一个车站进行编码,然后通过无线数据发射模块在一定空间范围内发射该编码数据,当公交车进入接收范围时车载系统收到数据,并对数据解码,最后根据解码后的数据确定车辆所到的站点,启动语音报站系统报出相应的站名和显示相应的站台信息,实现了公交车的智能报站功能。
经过多次测试和改进,产品实现了如下的预期功能:
(1)在80米内能准确识别并自动报站;
(2)报站的同时能显示该站站名和下一站的站名以及时间日期;
(3)同时具备自动报站和手动调整报站功能,司机能根据实际的情况随时切换;
(4)产品的成本控制在150元以内;
(5)产品的硬件和软件都不复杂,修改简单,适合不同的公交线路,日后升级系统也比较方便。
附录Ⅲ:
部分程序代码
//主要要求:
1、能自动识别站台,并且通过语音模块播放站台信息
//2、额外添加手动功能,防止出现(信号受到干扰时接收不到信号的情况)类似问题
//3、通过12864大液晶显示相关的站台信息和日期时间等等
//4、成本要控制在150元内。
#include
#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
#defineuintunsignedint
#defineucharunsignedchar
voidxi_tong_init()
{
TMOD=0x20;
SCON=0xD8;
PCON=0x00;
IE=0x81;
TCON=0x01;
TH1=0xFD;
TR1=1;
}
voidmain(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();
}
}
}
voidshow_time()
{
DS1302_GetTime(&CurrentTime);
TimeToStr(&CurrentTime);
DateToStr(&CurrentTime);
gotoxy(1,0);
print(CurrentTime.TimeString);
gotoxy(2,0);
print(CurrentTime.DateString);
gotoxy(1,5);
print("星期");
gotoxy(1,7);
print(week_value);
mdelay(500);
}