【基于单片机的公交车语音报站器设计与实现6800字(论文)】_第1页
【基于单片机的公交车语音报站器设计与实现6800字(论文)】_第2页
【基于单片机的公交车语音报站器设计与实现6800字(论文)】_第3页
【基于单片机的公交车语音报站器设计与实现6800字(论文)】_第4页
【基于单片机的公交车语音报站器设计与实现6800字(论文)】_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的公交车语音报站器设计与实现TOC\o"1-2"\h\u28101引言 128211.1研究意义及背景 2174931.2设计依据 2280311.3设计的主要内容和功能 2118712设计方案 3173002.1设计思路 355442.2系统构成 3242603硬件电路设计 5102613.1硬件原理图 5302423.2芯片的选择 615783.3按键电路 7161183.4电源电路 850183.5LCD12864液晶显示器 9111413.6语音播报模块电路 10106064软件系统设计 1123464.1软件主程序架构 1177404.2LCD12864显示流程图 12164204.3按键子程序 13320715系统调整 14191285.1仿真 14193365.2焊接 14262755.2功能调试 14291505.3问题总结 15232876总结与展望 161引言现在城市化的脚步正加快迈进,公共交通是城市的最基本的设施之一,可以说是绝大多数人首先选择的交通方式,而公交车则因为其经济实惠而成为人们出行的首要交通方式。以前公共汽车都是乘务人员在收款的同时进行人工报站,这样的方式十分浪费人力REF_Ref22766\r[1],而且效果十分差,现在已经基本淘汰让人工报站的方式。而随着科学的进步与技术的发展,微型计算机的发展也得到了显著的提升,而且且它应用十分广泛,将微型计算机设计技术运用与语音模块的芯片结合到在一起,便能够创造出公交车语音报站器。能准确的公交车语音报站器能在视角与听觉上提醒乘客是否到站,为人们提供人性化的服务。1.1研究意义及背景随着经济与社会不断的前进,城市中很多人集中分布在工作与娱乐地区,可以说十分集中,汽车购买已经越来越平民化,汽车越来越多使得交通越来越拥挤,很多城市交通出现拥堵的情况,还造成许多污染。为此,大力发展公共交通,不仅可以改善拥堵情况,还可以为城市环保添一份力。在以前,公共汽车都是有人在里面收费甚至亲自报站,这种现象在落后地区仍存在,但车上人多的时候,人工来报站会出现声音太小传播不到,而且当车体型大的时候,售票员就要从车头走到车尾来分段报站,才能确保每个人都听到,十分费力,为解决这个问题,所以想到做出一个公交车语音报站器,它的液晶屏能实时显示现在到达的车站,并进行语音播报,就算在拥挤的时候也能清楚知道自己是否到站,让人们不再因人工报站小声,传达不到位,而错过下车时机。1.2设计依据在单片机抉择这点,我摒弃了AT89C52性能太低,而且贵的缺点,打算用功能强大,切接口操作简单的STC89C52。我打算采用USB电源输入端与自锁开关来给系统供电,电源输入端通电,电源输入端与自锁开关的1引脚相连,再由自锁开关三引脚接入系统VCC实现供电,这样节约许多资源,为设计员提供了方便。显示方面则用LCD12864来显示实时信息,相比于普通LCD1602只能显示两行16个字符,而LCD12864显示的会更多,它可以显示4行16个字符,而且里面设置有八千多个汉字,且能构造图形。本次设计需要显示站名以及时间日期,选择显示更多的LCD12864是最好的选择。本次设计师设计按键更改报站地点,通过按键来控制对应站点并播报,当摁下终点站按键时,单片机控制语音模块播报:“本车已到站,终点站,请所有乘客收拾好行李及时下车,感谢您乘坐本次公交车,欢迎您再次乘坐,祝您生活愉快”。1.3设计的主要内容和功能本次公交站的设计是以STC89C52为核心,用一个显示模块来进行站台与日期显示,再用一个语音模块来播报当前站台与下一站的信息,在视觉与听觉上与乘客形成信息的交互,提醒乘客下车。1)核心单片机部分:使用STC89C52单片机作为核心来控制各个模块,接收不同按键触发的信息,控制显示模块与语音模块的工作。2)显示模块:采用显示更多,以及内置有汉字字库的的LCD12864,可以在显示方面表达出更全面的信息,程序设计更加的方便3)语音模块:用WT588D语音芯片和Header2型号的喇叭组成,采用一段语音播报,让语音听起来自然,清晰。2设计方案2.1设计思路本次设计主要有按键、播报以及显示,STC89C52作为核心,通过按键扫描,来切换显示与播报内容。当公交车抵达相应地点时,司机只需要摁下下一站按键,显示区域便会出现相应的站台信息,同时,并播报此站名与下一站站名,提醒乘客,让乘客自行判断是否应该下车。图2.1是整体工作原理。图2.1工作原理图2.2系统构成本次设计系统由硬件和软件两部分组成。在硬件方面,计算需要显示的内容之后,筛选显示屏的型号,确定显示模块与语音模块的电子器件选择,确认好自己需要的按键与相应电阻电容。之后设计电路原理图,电路需保证每个模块正常运作,且需要的元器件和布线应越少越好。在软件方面,在电脑上进行程序烧录,我这里用的是KEIL来编译程序。KEIL在编译程序在不出现问题的情况下形成hex文件,直接下载单片机上。然后将单片机与每个器件对应着原理图进行焊接,STC89C52作为系统核心,显示模块用LCD12864,语音模块用WT588D。3硬件电路设计3.1硬件原理图本次设计的公交车报站器的硬件原理图如图3.1所示,单片机型号是STC89C52,显示模块用的是LCD12864,语音模块是由WT588D芯片与喇叭构成。K1、K2、K3按键是控制LCD切换站台信息,K4~K7按键是用来设置屏幕日期与时间,K8、K9是用来调节语音模块的声音大小。本次系统是采用5V直流电源来供电。图3.1硬件原理图3.2芯片的选择3.2.1AT89C52AT89C52是一个名为ATMEL的公司生产的CMOS8位的微型处理器,本身有128字节RAM,烧录程序可以反复重新擦写。它与MSC-51的指令系统不冲突,里面有8个处理器,还有3个可以编程的定时器,功能齐全,而且十分强大。实物图如图3.2。图3.2AT89C52实物图3.2.2STC89C52上个世纪八十年代,美国因特尔推行了51系列的8位单片机,该单片机集成度高,性能也相比其他芯片有了大幅度提升。芯片扩展了许多功能,功能单元与种类也大幅度提升,而STC89C52便是期中之一的单片机。它可以很便捷编程以及随时擦涂,携带8K字节只读存储器。它是一种微型和高效的控制器,为后来很多嵌入式控制的设计提供了一个方便且物美价廉的方法。实物图如图3.3所示。图3.3STC89C52实物图3.2.3方案选择通过对上面两种器件的对比,我认为选择STC89C52是最优的选择方案。经过两份说明书的查阅,AT89C52只有12T模式,而STC89C52可以调节成12T和6T模式。还有STC89C52还有内部1280RAM扩展,更多空间可以利用,还能巧妙的调节工作电压,可调节3.3~5V,有更大的达到64K的存储空间,还扩展了ISP功能,而且相对便宜。可以说STC89C52功能性十分强大而且性价比极高的芯片。3.3按键电路单片机按键控制电路有9个按键组成K1是控制LCD切换下一站站台信息,K2是控制切换上一站站台信息,K3是直接切换至终点站,让LCD屏幕显示。K4~K7按键是用来设置屏幕日期与时间,K4是用来进入设置模式,停止单片机内时钟计数。K5是用来选择是调整月、日还是时间。K8、K9是用来调节语音模块的输出音量声音大小。按键是松开时处于高电平状态,当按下时,单片机对应的引脚就会与地相连,此时就会产生一个高电平到低电平的跳变,并给单片机传送一个高电平信号。因为每次按键时间都有所不同,要注意在程序中设置一个函数用来去抖,降低误差。图3.4为控制LCD屏按键原理图。图3.5为控制音量大小按键原理图。图3.4LCD屏按键原理图图3.5音量大小按键原理图3.4电源电路STC89C52的电源采用直流5V供电,电源模块是一个有6个引脚的固定是开关,和一个三个引脚的电源座相连。电源座2号口与地相连,1号口与电源开关相连,3号口空接。电源开关的1、3引脚与4、6引脚作用相同,可以作为电源的输出的正极。电源开关2、5口用作地,可以方便的与电路其他地相接。我们在把电源模块与单片机相连时候要采取相对的原则,用5号引脚接地时,就要用1、3号引脚用来输出。反之。用2号引脚接地,就要用4、6号引脚作为输出。本次单片机工作电压是3.3~5V之间,所以电源电路的5V供电已经足够。本次设计的电源电路如图3.6所示:3.6电源电路3.5LCD12864液晶显示器本次设计采用LCD12864液晶显示器作为输出显示器,是工业级别的字符型液晶,从其名称中可以得知,显示屏具有64行输出,每行128个字符REF_Ref24023\r[3]。LCD12864液晶屏显示应用液晶的共性,经过改变电压达到控制区显示,最终显示出想要的图形或者数字REF_Ref24033\r[4]。LCD12864液晶显示屏不单可以显示数字,还能显示符号和字母。图3.7是LCD12864显示器件的引脚图,从图中能够看出,1号脚是电源接地引脚,和单片机的GND联通REF_Ref24030\r[5]。2号脚是VDD,其工作电压为5V。3号脚是VO引脚,是LCD驱动电压的输入端,4号脚是RS引脚,当处于高电平时作为数据选择信号,低电平时作为串行片选信号,5号脚是RW的读写信号,它是并行读写的选择信号,也是串行的数据通道。6号脚是EN引脚,即为使能端,他并行时候处于使能信号,但在串行的时候可以同步时钟。引脚7~14是DB0~DB7数据传输口。引脚16和引脚18是空脚,不接任何电路。19和20号引脚则是LCD背光源的正负极。在和单片机进行通信时,LCD的7~14号引脚传输数据,本次设计LCD12864液晶显示屏上展示中文站台名称和日期,以及公交车的编号。LCD各个引脚与相对应的名称如图3.7所示。图3.7LCD12864显示电路3.6语音播报模块电路本次设计的语音报站功能是由wt588d语音芯片实现的。单片机接收到整个系统按键信息反馈时,语音模块就会播放对应的内容。图3.8为WT588D芯片引脚图,扬声器就是用的是Header2型喇叭,p02有复位功能本次设计允许不接。由于才有一线串口模式,一线串口的语音地址如下表3.1所示存放。P03用来传输数据,Wt588d语音芯片是用外部的minu下载器进行烧录,比如本次设计的欢迎乘坐112路公交车,我们要在电脑软件上把相关联语音文件通过软件放入一个地址,当单片机达到播放条件时,就会与语音模块交互,播放次地址的语音REF_Ref24274\r[6]。我们用电脑写语音进芯片时要用到专门的烧录器,调到一线串口控制模式。P03则会成为数据传输口,单片机就通过此通道实现对语音模块的控制。其他I/O口则可以在软件的编辑下充当按键的角色。BUSY忙信号输出端,可设为播放状态LED的亮灭。SPI-FLASH存储器在2.8V~3.5V电压范围内,VDD-SIM为串口操控电源输入端,若与VCC相连可自动平衡电压。PWM输出端不能接电容到地也不能与地直接接,PWM+/DAC和PWM-端注意不能短接REF_Ref24307\r[7]。表3.1语音与地址的关系数据地址(16进制)语音00H第0段语音播放01H第1段语音播放02H第2段语音播放DAH第218段语音播放DBH第219段语音播放图3.8WT588D芯片引脚图4软件系统设计4.1软件主程序架构当硬件端设计调试完成后,就要针对单片机和每个模块进行软件设计。软件的设计往往需要有一个明确的思路,所以,流程图就是设计程序的一个重要的依据。一开始要对LCD12864以及单片机内部进行初始化,之后还要初始化设置时钟。之后每个模块就各自运行自己的程序,比如按键按下,LCD12864就会显示相应的信息,以及可以播报相应的语音信息。最后,在公交车行驶到终点站时,单片机给SWT588D语音芯片发送信号,进行语音播报,乘客通过播报信息自行判读是否下车。主流程图如图4.1所示:图4.1主流程图4.2LCD12864显示流程图在整个系统重新上电后,首先要对LCD12864进行一个操作,那就是初始化,屏幕原有信息清空,而且内部储存数据清除。之后通过程序对LCD12864进行设置,在程序加载下,单片机不断对LCD12864进行数据更新,可以对屏幕的亮度和内容进行你说需要的调整,在极短的内部数据传输时间过后,将一开始的112路公交车信息和初始设置日期显示在液晶显示屏上。当按下按键时,显示对应按键对应的站台的中文名称。单片机操控LCD12864的DB0~DB7引脚,写入要显示内容的命令。之后显示屏执行指令,将内容显示出来。初始化内容为LCD12864B_DisplayString(0,0,"112路公交车");;LCD延迟voiddelay_ms(ucharnms);写入命令voidLCD12864B_Write_Cmd(unsignedcharcmd);写数据voidLCD12864B_WriteData(unsignedchardat);初始化voidLCD12864B_Init(void);LCD12864显示流程图如图4.2所示:图4.2LCD12864初始化流程图4.3按键子程序本次设计按键电路功能繁多,总共包含了9个按键,前面K1与K2按键分别代表本次车站和下一站,K3按键表示末班,K4~K7按键实现对日期的设置。当单片机检测到K1与K2按键被按下时,LCD12864液晶屏在STC89C52的控制下,显示当前到达的站台信息,同时开始控制WT588D进行播报,让乘客接收到信息,自行判断是否下车。当第K4按键被检测到按下时,单片机先停止内部时钟的运转并开始进入时间与日期设置的程序中。然后,当K5按键按下,单片机选择需要设置的日期,根据按键按下次数来调整是月、日、分或秒。K6和K7按键按下时,单片机便会运行数字加减来达到设置时间的目的。当再按下K4时,单片机内部时钟开始运行,时间就在当前设置的数值下显示出来。图4.4按键流程图

5系统调整5.1仿真使用proteus仿真软件进行仿真,这一步是用来检测是否能达到预期的效果。先在该软件中找出你需要的每个器件原理图,然后依照原理图把相应的器件连接起来,之后把编写好的程序编入仿真软件中,然后开始仿真。在仿真中,如果LCD屏不显示则证明原理图中还有需要改进的地方,要检查是线路连接错误,还是电阻、电容的数值设定不准确,不符合标准。若能显示,但显示内容与按键之间的互动与要求不相符,则是代码问题,检查代码之间的逻辑关系。若没问题,则进行下一步。5.2焊接首先要准备好所有需要的材料和一台电烙铁,然后依照之前设计好的电路原理图,先焊接好每个模块的插排,然后按照原理图把单片机的最小系统和复位电路焊接上去。在确定好的显示模块附近,将上拉电阻焊在单片机的P0口,之后通过导线,把显示屏对应位置与P0相接。之后依次焊接按键控制电路,电源电路,语音模块电路。当然,还要将单片机的RXD和TXD引出来,焊上接口,方便之后程序的烧入与调试。语音模块要把3号与4号引脚引出,然后把喇叭接上。全部焊好后要对线路进行是否通断的检查,用万用表调整到检测模式,在每个相连的引脚上进行测量,如果万用表响了,表示正常连接,若不响,则证明断路,要重新换导线焊接。把每个插排口与底部焊锡也要进行检查,排查插排焊接不合格的现象。所有模块与模块之间连接都检查好之后,将经过仿真没问题的代码以hex格式,通过下载烧写软件烧录进STC89C52单片机内,之后把单片机按正确方向插入插排中。在焊接WT588D时,要检验引脚不能虚焊,先用万用表检测每个脚是否正常,检查每个引脚之间的锡有无重叠,如果没问题则焊接完成。5.2功能调试单片机焊接测试没问题后,进行功能调试,测试软件是否正确。在功能调试的环节是最难的,我要不断尝试烧录代码并检验代码、电路与实际功能一不一样。首先给单片机上电,上电复位是基本的复位方法。LCD12864液晶显示屏分为四行,第一行显示几路公交车,第二行显示的是日期时间,这个时间分为月日时分,每个数字都有相对应的按键能够调整时间,第三第四行显示按下按键的公交站台中文名称,第三行显示的是本站站点,第四行显示的是下一站站点。当按键K1和K2按下时,根据程序,屏幕会刷新站点的名称,并播报相应站点的内容,其播报内容是:“本次公交车已经到达底站,下一站是”。在语音模块附近还有两个按键控制音量的大小,这是与语音模块直接相连,这两个按键功能通过设置WT588D语音地址时候,可以设置每个按键的功能,其中便有音量大小的调整。当两个按键分别按下音量大小发生改变时,说明WT588D的功能调试完成。5.3问题总结在本次设计中,焊接不牢固,短路和断路的情况都会发生。检测每个模块的时候总要专心致志,特别是用万用表检测显示模块时,总会每个显示屏引脚是否有断路或者短路情况,在一点一点仔细排查故障。然后就是程序问题,在设计时间设置功能时搞不明时间与日期之间的逻辑关系,总是造成程序报错,导致功能无法实现。还有就是公交报站的语音地址与代码之间关系也让我想了半天,经过与老师同学的探讨,才逐渐完善代码,实现功能。第三个问题就是,在学习LCD12864时,不了解显示屏上位置与代码关系,导致代码的书写十分困难,要搞清楚显示字符与汉字的大小来设置代码,最后再和同学的帮助下完成了。而在代码的烧录环节,我查阅了很多资料,下载许多软件,甚至还用了三个芯片,慢慢摸索,才对烧录程序可以得心应手。检查有无虚焊,快要崩溃时又回过头认真看了显示模块的产品说明书,看到晶振电容应是30pf,与我设置的不符,调整后才能成功显示!

6总结与展望做好这次毕业设计,也就证明我的大学生活也快过去了。从一开始十分纠结选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论