版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE31目录摘要……………………1关键词…………………11前言…………………12系统创意设计和方案及功能说明……………………22.1目前使用较广泛的报站方案………22.2本设计的设计思想和方案…………22.3预期实现功能………………………33硬件系统分析…………33.1车载系统的硬件设计………………43.1.1单片机选型………………………43.1.2语音功能模块……………………93.1.3无线收发模块…………………143.1.4键盘输入模块…………………173.2车站系统的硬件设计……………224软件设计………………………224.1主程序………………………234.2按键扫描…………………234.3LED显示部分………………………234.4语音录放部分………………244.5无线接收部分……………295系统的软硬件调试………306总结……………………34参考文献……………………35致谢……………………35附录……………………36公交车自动报站系统的设计摘要:本设计是实现城市公交自动报站,控制系统采用AT89C51单片机作为中央处理芯片,IDS4004作为语音处理芯片,结合2262/2272芯片实现车站的自动识别,自动报站,和LED点阵屏幕显示等。同时还配备了键盘,可以在自动报站发生故障时手工报站。关键词:单片机;自动报站;语音录放;LED点阵; SaleDesignofcityBUS-stopAuto-AnnouncesystemAbstract:ThisdesignistoachievecityBus-stopAuto-Announcesystem.ThecontrolsystemusesAT89S51Singlechipasacentralprocessingchips.ISD4004asvoiceprocessingchips,with2262/2272chiptoachievethestationautomaticidengtification.andLEDdot-matrixscreendisplay,andsoon.Atthesametime.thesystemprovidesakeyboard,incasewhenthestationautomaticidentificationisdamagedthentoreportthestationmanually.Keywords:Singlechip;Auto-Announce;Voicerecorders;LEDdot-matrix前言公交车是目前最提倡的交通工具之一,加上如今保护环境、节约能源的呼声日益高涨,公交车将会越来越普及,它对应的服务也应该有更人性化,报站服务的好坏,直接影响乘客对这路公交车印象的好坏。传统的报站是由售票员人工喊话的,这样的方式有很多弊端,比如售票员工作强度大,还会发生漏报、误报的情况,也有可能售票员发音不标准,部分乘客不能听清内容,造成乘客不能正确下车,耽误其行程等。势,虽然现在市场中有电子语音报站系统,可是这样还是对驾驶员是一个巨大的挑战。公交车自动报站器的设计主要是为了弥补改变传统语音报站器必须有司机操控才能工作的落后方式,进站、出站自动播报站名及服务用语,为市民提供更人性化,更完善的服务。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。公共汽车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形乃至色彩都有更高的要求。作为公共汽车还要求有醒目和减少乘务人员劳动强度的电子报站器,电子显示路牌,无人售票装置,前后电视监视系统等新技术的采用也将越来越普及。公交车报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。目前公交车报站有三种方式,一种是利用GPS全球卫星定位系统的公交车报站系统,在司机座位后面隔板上,安装了一台15英寸的液晶电视和GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没听清报站的话,通过显示屏,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音;驾驶员也可以通过相应的工具进行回复。目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站的方式,而它们都离不开司务人员,加大司乘人员的工作强度。手动电子报站一般有司机或者乘务员控制,经常出现错报,误报的情况。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供了更加人性化的服务。系统的创意设计和方案及功能说明2.1目前使用较广泛的报站方案(1)人工喊话这应该是使用最早,历时最长的报站方式了。在公交系统日益发达的大城市,这种方式已经不多见了。报站由售票员喊话,弊端很多,比如经常发生漏报、误报和报站不及时,并且有些售票员可能用地方方言报站,这就会造成外地乘客听不懂或者听不清,不能正常下车,耽误行程。(2)电子语音报站电子语音代替人工喊话。其实还是人工报站,因为还是及时需要驾驶员去按相应的按钮,以避免出现报站不及时和遗漏。另一方面,驾驶本来就是一项要高度集中注意力的工作,不得出现半点马虎,而手工去按键的时候,就很容易分散驾驶员的注意力,有可能造成交通意外。(3)GPS定位系统报站它由车载终端实时获取当前车辆位置信息,与预存在终端的线路站点位置信息进行比较,确定车辆的上下行关系以及所处站点的位置。在车辆进站、出站位置自动播报语音提示。这种报站方式十分准确,不过系统复杂,设备昂贵,要专门人员维护。本设计的设计思想和方案本设计力求用尽可能少的成本实现预期功能。这个系统中,最关键的是实现车站的自动识别。上面讲的GPS系统能实现这样的功能,不过价格昂贵。这里提供一种用无线感应实现站点识别的办法。基本原理是:整个系统分为车载系统和站台系统。前者安装在公交车上,监听无线信号。后者固定安装在站点里,并且每个站点安装一个,形成多发一收的模式。站点系统的发射功率很小,50到100米之间就可以了。公交车进入距站点100米的范围,就可以接受到站点发射的信号,从而就知道已经到达终点,由单片机控制LED屏幕显示站点信息,同时通知语音模块播放语音,提醒要下车的乘客做好准备。更简单的说,就是用站点的无限信号触发车载系统报站,代替手工报站。2.3预期实现的功能全路段无线识别,自动报站,暂时把报站数定为20站;模拟人声进行报站和预报站;其它语音提示;站点语音录录入;对所报站名进行汉字显示;对所处站次进行数字显示;以防故障,提供手动报站功能。3硬件系统分析本系统硬件部分分为车载系统和车站系统两个大模块。其中车载系统由包括了:中央控制模块、语音录放模块、LED显示模块、数码管显示模块、无线接收模块,同时为了提供其它功能,为了能更准确的实现报站,车站系统不能简单的发送无线信号,应该发送特定编码的信号,这样不仅能提高报站的准确性,还需要用到键盘的输入,因此,还要有按键扫描模块。车站系统相对来说简单点,他只要求能连续发射小功率无线电波,100米就足够了。当然,为了更准确的实现报站,车站系统不能简单的发送无线信号,应该发送特定编码的信号,这样不仅能提高报站的准确性,还能抗各种自然或者人为的干扰。3.1车载系统的硬件设计语音芯片语音芯片控制信号脉冲计数CPU控制输出显示放音电路脉冲检测图1原理框图Fig1Functionalblockdiagram3.1.1单片机选型AT89C51单片机的结构框图如图所示。它主要由下面几个部分组成:1个8位中央处理单元(CPU)、片内Flash存储器、片内RAM、4个8位的双向可寻址I/O口、1个全双工UART(通用异步接收发送器)的串行接口、2个16位的定时器/计数器、多个优先级的嵌套中断结构,以及一个片内振荡器和时钟电路主要性能:1.与MCS-51兼容;
2.4K字节可编程闪烁存储器;
寿命:1000次写/擦循环
数据保留时间:10年;
3.全静态工作:0Hz-24Hz;
4.三级程序存储器锁定;
5.128*8位内部RAM;
6.32可编程I/O线;
7.两个16位定时器/计数器;
8.5个中断源;
9.可编程串行通道;
10.片内振荡器和时钟电路。图2AT89C51的引脚Fig2FootofAT89C51VCC:供电电压。VSS:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平3.1.2语音功能模块语音功能模块式本系统的重要模块之一。该功能模块要实现如下功能:(1)语音报站。当公交车到达某个站时,语音模块将及时对当前站点进行播报。(2)预报站。公交车从某个站点离开时,向乘客播报下一站的站名。(3)其他语音信息。如播放乘车礼仪,提醒乘客注意安全。(4)语音录入。除了语音播报之外,还要有语音录入的功能,方便灵活录制或更改各站点语音信息。本设计采用ISD4004语音芯片。ISD4004系列工作电压3V,单片录放时间8到16分钟,这里采用8分钟的ISD4004-8M芯片。它采用了CMOS技术,内容振荡器,防湿音滤波器、自动静噪、音频放大器和高密度多电平闪烁存储阵列,内置了微控制器串行通信接口,无需开发系统即可与为控制并行工作,具有独立的协议和指令系统。芯片采用了多电平直接模拟量存储技术,每个采样值直接放入片内闪存器中,不讲过AD转化,因此能非常真实、自然地再现语音、音乐等效果声。片内的闪存器,可以在断电的情况下保存100以上,可以反复录音10万次以上。该器件使用简单,功能强大,是处理语音信息的首选。ISD4004的内部结构图和引脚图分别如下图3和图4图3ISD4004的内部结构图Fig3ISD4004SeriesBlockDiagramNCNCXCLK1NCNCANAIN+SCKJVCCA17212520VSSD612NC18316NC14NCMISOVSSA2825VCCD157232410224RAC26NCNCAMCAP138/SSMOSIVSSAINT27VSSANCAUDOUT9NC11NCANAIN-图4ISD4004的引脚Fig4FootprintofISD4004其引脚说明如表1:表1ISD4004的引脚定义Table1TheFootprintdefiniensofISD4004引脚12345~10,15,19~2211,12,2313141617182425262728名称SSMOSIMISOVSSDNCVSSAAUDOUTAMCAPANAIN—ANAIN+VCCARACTNTXCLKVCCDSCLK功能片选,此端为低,即向改ISD40044芯片发送指令,两条指令之间为高电平。串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入。串行输出端,ISD未选中时,本端呈高阻态。数字地。没有网络,不使用。模拟地。提供音频输出,可驱动5KΩ的负载。自动静噪功能,本端接口VCCA则禁止自动静噪。同相模拟输入。反相模拟输入。模拟电源正极。行地址时钟。中断,在任何操作中检测到EOM或OVF时,本端变低并保持。在下一个SPI周期开始时清除。外部时钟输入端,在不外接地时钟时,此端必须接地。数字电源正极。串行时钟输入端实际电路中,单片机AT89C51与ISD4004之间的连线较少。单片机需要控制的有ISD4004的片选引脚SS,控制芯片的选通与否,本系统中接单片机的P0_1口;MOSI接P0_2口,MISO接P0_3口,用于传送录放音地址;SCLK接P0_4口,从单片机中获取同步的串行时钟信号;INT接P3_2,由它产生的中断信号输入给单片机的外部中断1,用于通知播放状态。中断,在任何操作中检测到EOM或OVF时,本端变低并保持。在下一个SPI周期开始时清除。语音录放电路部分如下图5所示:图5语音录放电路Fig5PronunciationPronunciationcircuit3.1.2显示功能模块显示模块式对语音功能模块的补充,它的作用是将语音播报的信息用文字的形式显示出来,方便乘客了解。其中给乘客了解的是汉字信息,另外还要给驾驶员提供数字信息,告诉驾驶员当前是第几站,使驾驶员能够判断站数有误错误。LED显示器是用发光二极管构成的显示器。构成方式有两大类:一是笔段字符式,一般又有三种:7段(/8段)数码管、15段(/17段)数码管和6段符号显示器;二是点阵字符式,一般有5×7、5×8、8×8和16×16等若干种点阵结构。要驱动LED显示器显示相应字符,必须通过接口向其提供字符的笔段字形码和数位代码。如何得到字符的笔段字形码,可以通过硬件译码方式,也可以通过软件译码方式。LED显示器驱动方式可以分成静态显示驱动和动态显示驱动两种。静态显示驱动一般是通过数字集成电路对所需要显示的字符笔段连续施加电压;而动态显示驱动则是利用矩阵少秒方式间断向所需要显示的字符笔段轮流施加电压。静态显示如下图所示,静态显示是指每个数码管的每一个段码都由一个单片机的I/0端口进行驱动,或者使用如BCD码二十一进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/0端口多,如驱动2个数码管静态显示则需要2x8=16根I/0端口来驱动,可是一个89S51单片机可用的I/0端口才32个,实际应用时必须增加译码驱动器来进行驱动,因此,通过这种方式很好的增加了硬件电路的复杂性,同时也提高了电路了电路成本。这里为了节省宝贵的IO口,需要用到一种芯片—74HC595,俗称的串入并出芯片,顾名思义,它的功能就是把串行的数据组合成并行数据。其管脚见下图6:图674HC595引脚图Fig6Footpiontof74HC59574HC595是带领锁存输出的8为移位寄存器,其中DS是串行数据的输入端;VCC、GND分别为电源和地:ST_CP是存储寄存器的输入时钟,SH_CP是移位寄存器的输入时钟,MR是移位寄存器的输入清除,Q7’是串入数据的输出,OE是对输入数据的输出使能控制,Q1~Q7串入数据的并行输出。从DS口输入的数据在位移寄存器的ST_CP脚上升的作用下输入到74HC595中,在SH_CP脚的上升沿作用下将输入的数据锁存在74HC595中,当MR为高电平,OE为低电平时,数据并行输出。下图7是静态显示原理图,要使用两块595:此处省略
NNNNNNNNNNNN字。如需要完整说明书和设计图纸等.请联系
扣扣:九七一九二零八零零另提供全套机械毕业设计下载!该论文已经通过答辩比较这两种方案,我选择用动态显示的方式,那就要加上两根线选线(P2_4和P2_5),交替点亮两个数码管中的一个,利用人的眼睛的视觉暂留特点和LED余辉特性,形成“稳定”的图像,那么数码管显示电路如下图所示:图8显示电路2Fig8DisplayCircuit216x16的LED点阵,LED就是LightEmittingDiode(发光2极管)的缩写。市场上卖的点阵一般是8x8的,其外形图一般如下图9所示:图98×8点阵外观及引脚图Fig98×8dotmatrixappearanceandpinoutdiagram由于汉字结构比数学和字母复杂,每个汉字最少需要32字节,一共是8x32=265个位,故一个汉字需要16x16=265的点阵,也就是要4个8x8的点阵组合起来。现在一个汉字点阵的引脚就相当可观了,一个汉字就是64个引脚,如果10个汉字呢?太多了。所以这里还是要用到74HC595芯片。它的作用是发送行程控制码,一块芯片只能发送8位,故16的点阵需要两片595,另外的16列选线也需要控制,工作流程就是:两片595同时发送行数据,同时对应的列被选中,如此循环,相互配合,就能显示出一个汉字了。这里要说明的是,列选线是16根,可以用I0口控制,不过似乎占用太多了,可以采用74HC154(4线16线译码器),74HC154的引脚图如下图9所示:图1074HC154引脚图Fig10Footprintof74HC154其中,Vcc和GND分别接电源和地,A0到A3是输入信号,Y0到Y15是输出信号,EO和EI是片选引脚,当它们接低电平时芯片可以对外输出。芯片的输入、输出真值表如图11所示:图11汉字显示电路Fig11Characterdisplaycircuit显示一个汉字的电路原理团就如上图11所示:注意:这里体现了模块化设计,只做了显示一个汉字的显示屏,一般公交车可能需要显示10个汉字以上,本模块带了扩展接口,包括了154线选插槽、电源插槽、595数据线插槽等,可以以此模块进行扩展,组合出显示任意个汉字的屏幕。3.1.3无线收发模块无线收发模块是本设计中最核心的模块了,就是要他来实现站点的自动识别,自动报站。这里为了使整个系统有足够的稳定性、可靠性、和抗干扰性,决定采用集成电路形式的编、解码IC芯片,对系统通讯协议进行编码发送,解码接收。本系统采用的是中国台湾普城公司生产的SC2262(编码)、SC2272(解码)芯片。它2是一种基本CMOS工艺制造的低能耗、低价位的通用编、解码芯片,由于其外围电路简单、使用方便,主要应用于遥控装置,适用于家庭安全系统,以及一些工业设备遥控。该系列芯片的工作电压范围(2V到15V),对高噪声不敏感,工作范围很宽(从—30℃到70℃),最多有12位三态编码,可组合出531441种地址码。下图12是分别是SC2262(左)、SC2272(右)的引脚图:图12SC2262和SC2272的引脚Fig12FootprintofSC2262andSC2272对于编码芯片SC2262:A0-A5为地址输入端,每个引脚都可编成三种状态(“1”,“0”,开路)。A6(D5)-A11(D0)为地址输入或者数据输入端,也就是说这些引脚即可以做地址,也可以传数据。这些地址和数据引脚共12位,那么其编码容量就是531441种,因此极大地减少了码的冲突和非法对编码进行扫描以使匹配的可能性。TE端是发射使能端,低电平有效。当TE被拉高时,芯片停止发射。OSC1和OSC2外接震荡电阻,震荡电阻越大,震荡频率越低。Dout为数据输出端,由个地址、数据的不同状态而决定由此引脚输出的编码。Vcc和Vss分别是芯片的正负极电源输入。对于解码芯片SC2272,引脚几乎一样,只有稍微区别:14脚Din:为数据输入引脚,收到的编码信号就是由此引脚串行输入的。17脚VT:有效信号输入,当成功解码信号时,此引脚会输出高电平。可以以此信号做一个中断信号,通知单片机数据到达。其它引脚参考SC2262的说明,特别注意的是,OSC1和OSC2外接震荡电阻必须与SC2262的震荡电阻匹配,否则会影响接收距离,甚至会完全收不到信号。为了保证制作效果,降低制作难度,发射和接收模块我们采用了成品模块。其中,发射模块是采用深圳拓迪电子有限公司的型号为TDL-9902的带编码发射模块,接收模块采用型号为TDL-9926A的超外差固码接收模块。它们采用了声表谐振器(SAW)元件稳频,体积很小巧,安装方便,工作功率315MHz,可以小功率发射,不会对周围产生干扰。下图13和图14分别是TDL-9902和TDL-9926模块的引脚及外形尺寸图:图13TDL-9902的引脚和尺寸Fig13FootprintandsizeofTDL-9902图14TDL-9926的引脚图和尺寸Fig14FootprintandsizeofTDL-9926它们完全是对SC2262和SC2272芯片的封装,TDL9902是编码发射模块,地址编码引脚区是A0到A7,每个引脚有可以有3种状态,故可以组合出6561种地址。数据编码引脚区是D0到D4,每个引脚有2种状态,故可以组合出16种数据。TDL9926是编码接收模块,D0到D5是数据引脚,当芯片成功解码时,他们将输出相应的数据,VT是数据有效输入,当芯片成功解码时,它将输出高电平。这里就牵涉到一个问题了,TDL9902最大只能输出64种数据,就此可以得出两种方案:方案一、用不同数据表示不同站点,公共汽车进入了感应范围,可以直接判断是哪个站点,做出准确报站,不过最大只能报站64个。方案二、用同样的数据表示不同站点,每当公共汽车进入了感应范围,车载计数器自动加一,也可以得出当前站数。并且站数没有任何限制。不过缺点是,公交车不能判断当前站点是否正确,有可能被干扰而产生误报等。我考虑到本设计是探索阶段,先保证准确性吧,再说一般一条公交车路线的站点也就20来个左右,故我选择方案一。那么无线接收模块TDL9926与单片机AT89S51的连线就如下图15所示:图15无线接收电路Fig15WirelessreceivecircuitVT(引脚2)接单片机的P3_2,作为外部中断通知到站;D0到D5分别接到单片机的P1_0到P1_5口,传送给单片解码成功后的数据。这样,在中断服务函数中根据P1_0到P1_5口的数据就可以判断当前是哪个站,并进行相应的处理了。车站系统的无线编码发送模块TDL9902就更简单了,只需要在这里接上极性对的直流电源,根据自己定义的协议对数据和地址引脚进行跳帽编码即可,值得注意的是,TDL9902的数据位只有4位,只能发送16组不同的数据,故要把地址位引脚7、8进行复用,那么这两个引脚就不可能用作地址编码引脚了。车站系统的电压从2伏到15伏都可以,电压越高,发射范围越远。实际应用中不要求发射很远,50到100米就可以了,这样对电压要求也低,可以节约能源,还可以把对把对周围的干扰降到最低。考虑到其对电压要求很低,故可以用太阳能电池及其进行供电,如果再配一个可充电电瓶的话,就可以24小时进行无线广播了。3.1.4键盘输入模块由于系统要能接受手工控制,比如播放特殊语音、流动广告、录音控制,有时候无线系统出现故障需要检修而不能工作时,都需要用到键盘。常用的键盘有两种类型。(1)独立按键键盘独立按键键盘的一个脚通过电阻接电源或者地,另一个脚接单片机的I0口,在按键没有按下时,I0口保持默认电平,一旦键盘按键按下,对应的I0口状态就被影响,这样,时刻检测I0口的电平状态就可以判断是哪个按键被按下了。独立按键键盘接线简单,电路配置灵活,按键状态识别也不容易,但是I0口的利用率太低,一个按键就要一个I0口,如果键盘键数多的话,是很不现实的。初步估计,本系统至少需要16个按键,故独立按键键盘这种方式不可取。(2)矩阵扫描键盘。矩阵扫描键盘由行线和列线组成。按键位于行列线的交点上。行线和列线分别接到按键开光的两端。列线通过上拉电阻接到+5V上。平时没有按键按下的时候,列线是高电平状态,而有键按下的时候,行列线导通,因此通过此按钮连接的列线就会被行线拉低,因此通过查询对应的I0口就可以推算出哪根行线和列线被导通了,进而推算出哪个按键被按下了。这种键盘用8个I0口可以实现4x4=16个按键的键盘。对于此设计来说我们要准确的显示我们所要对应的信息,每按下一次按键要显示所要显示的信息。这按键是主要用来报站而设计的。这样比键盘操作方便,也比较实惠。按键电路采用中断模式。当有按键按下时,系统产生中断,CPU响应中断。为了体现探索的新事物的精神,矩阵扫描键盘的方式是一种比较常见的的输入的方式,为了获得比较好的效果,我通过对矩阵扫描键盘的了解把我们要把矩阵式扫描键盘推向极致,下面详细介绍实现过程。如图16所示:图16键盘电路原理图Fig16Keyboardcircuit整个键盘原理图如图所示,可以看出,一共实现了16个按键,接口只用了6根线,而其中还有1(接+5V)和6(接地)时两根电源线,也就是说,真正占用的10口才4个。实际电路中,把接口引脚2到5连接到单片机的任意4个连续的10口即可。本系统中,2,3,4,5分别接到P1_0、P1_1、P1_2、P1_3端口。现在开始分析其工作流程:首先扫描接地的5个按键,很简单,通过检测P1的低四位就行了,比如说,检测前把低四位置高电平(P0=P0/0x0f),接着再重新读入低四位数据,如果不是Ox0f(也就是二进制的1111)了,那么说明有键被按下了,列如检测结果位0x0e(也就是二进制的0111),说明P0_3被按钮接地位低了,那么就可以知道是按钮SW16按下了,同理可以检测SW13到SW15;扫描完了这5个按键,开始解决剩下的了。基本原理是:把低四位置高电平,然后把P1_0到P1_3分别置低电平(一次只有一个,其余的还是高电平),再去重新读入低四位数据,如果低四位中有两个“0”,说明有按键被按下了,否则没有按键按下,因为只有按键被按下,才有可能让P0的低四位置有联通的机会,我们就可以通过推测出哪个键被按下了。下面给出获取按键码的代码:/*fileName:keyBoard.hAuthor:pizhuoyuanEndDate:5.20.2013*/3.2车站系统的硬件设计车载站系统的由于也采用了模块,故很简单,使用的就是3.1.3节里介绍的TDL-9902编码发射模块。几乎不用加什么改装,只需要通上极性正确,电压范围正确的直流电源,就可以工作。当然,每个站点要一块发射模块,它们的地址码和车载系统TDL-9926超外差接收模块的地址码要完全一样,才能相互配合,同时,他们的数据码则不能相同,否则车载系统将不能正确判断当前所到车站。TDL—9902编码发射模块的引脚说明和用法,在3.1.3节里已经详细介绍,这里不再诉述。至此,本系统的硬件部分已经设计完毕,完整电路图请参考附录部分。接下来开始设计软件了。软件设计本设计软件部分也采用模块化设计,整个软件部分可分为成主程序部分、按键扫描、LED显示部分、语音录放部分和无线接收发部分5大块。系统的整个工作流程见图如下图所示:系统初始化系统初始化开始数据清零、显示字数,赋字模初地址判断按键和按键处理片选和列控制字赋初值调行数据传送子程序扫描列使能延时子程序八列扫描完N取下一帧首地址字模地址改变24列扫描和数据传输完扫描次数到显示字数到YNNNYYY图17单片机主程序流程图Fig17Singlechipmainprogramflowchart主程序主程序用来做总调度,它主要完成整个系统的初始化,如装在计时器初始值、使能各个中断、决定什么时候执行什么操作等。按键扫描本系统采用了新式的矩阵式扫描键盘,与目前流行的扫描方式相比,更加充分地利用了单片机宝贵的I0口资源,实现了4个I0口识别16个按键,我觉得此设计是整个系统的亮点之一。3.1.4中的键盘输入模块介绍就包含了完整的接口函数,实际编写代码的时候,可以通过这个接口函数来取值,根据不同的取值来决定如何操作,完成相应的功能。本系统的控制面板如下图18所示,按键名和实际键值得对应关系如下表2所示:123切换456录音789调速进站出战重播后退图18操作版面Fig18Operatepanel表2操作面板说明Table2Operatepanelexplain键名键值功能描述1-21-21.切换键未按下,播放特殊语音.2.切换键按下,播放特殊字幕,再按则切回3.录音模式下,可来回切换录音段331.切换键未按下,播放特殊语音.2.切换键按下,播放特殊字幕,再按则切回3.录音模式下停止当前录音操作4-94-91.切换模式为按下,播放特殊语音2.切换键按下,播放特殊字幕,再按下切回进站10手工报站按钮,用于汽车进入站点时。出站11手工报站按钮,用于汽车离开站点时。重播12重复上次内容,如语音提示,字幕显示等。切换13决定数字1到9按下是播语音还是字幕。录音14按下后,进入录音模式,红色指示灯亮。调速15调整字幕流动显示的移动速度。后退16用于报站错误时调整到上一个站点。录音键按下,则进入录音工作模式,数字键1和2可以切换不同录音段并开始录音,数字键3是停止录音。整个录音信息在ISD4004中分成30段,它们的储存顺序为:第1到20段:20个站点名,每个站点不得超过2秒,超过2秒自动截断并停止。第21段:存放“到了,需要下车的乘客请做好准备,开门请当心,下车请走好!”或者其它类似的报站信息,但总长度不得大于10秒,超过10秒自动截断并停止。第21到22段:存放欢迎和欢送标语,各为10秒,超过10秒自动截断并停止。剩下的存储时间分成7段,每段大约可以分为7秒,用来存放乘车礼仪等。放下键按下,则退出录音模式,返回工作状态。1到9数字键的功能随工作模式的不同而功能不同。模式1下,可以播放9段不同的语音:在模式2下,可以播放9段不同的文字信息:在录音模式下,数字键1和2分别是上下切换不同录音段。LED显示部分基本思路是,通过串口把并行的行控制码拆成串行的数据,按照规则的时序发送给串入并出芯片74HC595,由595还原出原数据,在发送给LED点阵;同时由串片机的4个I0口控制4线-16线译码器74HC154实现列选,他们相互配合就可实现汉字的显示。数码管的段选信号也有595发送,位选信号则由于它只有两位,直接用单片机的I0口控制就可以了,前面一直在节省端口,现在发现都要多余的了,所以就直接用I0口控制位选吧。虽然控制点阵屏的74HC595和控制数码管的74HC595是串在同组线路上的,可以同时控制它们,不过最好还是做到分开控制,因为点阵屏消耗的功率和占用的单片机资源比较多,最好不要一直开着,只要求到站的时候工作一下;而数码管消耗的功率小,驾驶员也需要实时知道站数,故要求常亮的。所以,这里写成了两个函数。行驶途中只显示站数给驾驶员看,到站时,开启LED点阵,显示汉字形式的报站信息。显示,模块的关键函数如下:VIODSendByRxD(uchar*mData)//中行数据发送到595{SBUF=*mDta;//启动串行口传送While(TI==0);//等待串口传送结束TI=0;//将串口中断标志位置0{SendByRxD(LEDinfo+z+32);SendByRxD(LEDinfo+z+1);SendByRxD(LEDInfo+z);SendByRxD(&LEDNumber[LedIndex[(i%2)&0x01]]);HZM_sendok=1;//开锁存Delay(10);}j=j+z}}语音录放部分在本系统中,是用ISD4004—8M语音芯片做核心组件的。AT89C51的外部中断输入口P3.3接ISD4004的中断输出口INT,用来检测各个放音状态;P3.4接MIS0,P3.5接MOSI,由此构成单片机与ISD4004的通讯线;P3.6接片选端SS,控制芯片的启用与禁用;P3.7接SCLK,来提供同步时钟;可以看出,ISD4004的连线还是比较少的,具体连线请参考表3。表3SPI指令表Table3SPIcommandtable指令8位控制码操作摘要POWERUP00100XXX上电:等待TPUD后器件可以工作SETPALY11100XXX从指定地址开始放音。后跟PLAY继续放音PLAY11110XXX从当前地址开始放音SETREC10100XXX从指定地址开始录音后跟REC继续录音REC10110XXX从当前地址开始录音SETMC11101XXX从指定地址开始快进后跟MC继续进行MC11111XXX执行快进,直到EOM,若无信息,进入OVFSTOP0X110XXX停止当前工作STOPWRDN0X01XXXX停止当前工作并停电RINT0X110XXX读状态:OVF和EOM由于着该型号芯片只能录制8分钟,故要尽可能来提高其存储空间的利用率。因此本系统报站语为:站名+“到了,需要下车的乘客请做好准备,开门请当心,下车请走好!”注意到每次报站的信息只有站名不同,后面的语句是一样的,就可以把后面的语句单独录制到固定地址,这个录音长度定义为10秒。每次报站就可以先播放站点名,接着播放该语句就可以了。而站点名,一般一个站点名不超过5个字吧,那么可以在两秒钟之内说完,就规定每个站点名最多用时2秒,这样方便出处理。那么本系统中用到的语音时间是:20x2+10=410(秒),那么还有480-410=70秒的空余时间。这些时间可以用来录制其它的信息,如欢迎用语,乘车礼仪,欢送用语等。为了便于处理,把欢迎用语定为10秒,欢送用语定为10秒,剩下的50秒分成7段,用来存放各种乘车礼仪。根据ISD4004手册的编程协议,写出如下函数:主要函数6个,分别实现命令发送、上电操作、停止操作、从指定地址录制指定长度的声音、从指定地址播放一段声音。通过操作这几个函数,就可以实现站点信息的录制与播放了。VoidISD_SenCMD(unsignedcharmCmd)//发送命令{Unsignedchari,Data;SS=1;//停止使用ISDSS=0;//开片选SCLK=0;//时钟SCLK=0Idata=mCmd;For(i=0;i<8;i++){SCLK=1;//时钟SCLK=1If(Idata&0x01);//数据写MOSIMOSI=1;ElseMOSI=0;IData=IData>>1;//移位SCLK=0;//时钟SCLK=0}FileName.Main.hAuthor:pizhuoyuanEndDate:5.20.2013*/#infdef__XJMAN_H__#define__XJMAN_H__#defineucharunsignedchar#defineuintunsignedintucharMAN_currdisplaytimes=2;//LED流动播放次数ucharMAN_totistation=20;//本条路线的站点总数ucharMAN_curratation=0;//当前的站点bitMAN_currmode=0;//0工作模式,1录音模式bitMAN_currplay=0;//0播放特殊语音,1播放特殊字幕bitMAN_currdisplay=0;//0只显示数字,1都显示bitMAN_currway=0;//0去,1回bitMAN_lastplay=0;//1播放的是到站,0播放的是出站ViodDelay(uintC){Inti,j;for(i=0;i<c;i++)for(i=0;i<c;i++);}ViodScanKey();#endif/*FileName:KeyBoard.hAuthor:pizhuoyuanEndData:5.20.2013*/#ifndef___XJKBD_H__#define___XJKBD_H__#defineKeyBoardPortPO//键盘接口#defineKBP_0PO_0#defineKBP_1PO_1#defineKBP_2PO_2#defineKBP_3PO_3UcharKEYBusy=0;UcharGetKey();//扫描键盘/*{Staticuchari=0;If(HZM_enb154==0)//允许译码的话,进行汉字显示{StationsReport();ScanKey();}Else{i++;DisplayStations();If(i==10){ScanKey();i=0;}}}#endif/*FileName:SC2272.hAuthor:pizhuoyuanEndData:5:20.2013*/#ifndef___XJSC2272_H__#define___XJSC2272_H__ViodGetWLSingle__ex0()interrupt0//外部中断0.用来检测无线信号{StaticunsignedcharLastState;UnsignedcharNowState;NowState=P1&0x3f;//取P1口的低六位If(NowState>0&NowState<=20){If(LastState!=NowState)//不是同一个站点,进行报站{HZM_enb154=0;//允许154译码,开显示TRO=1;//进行移动显示LastState=NowState;MAN_currstation=NowState;//报告站点}}}HZM_enb154=0;//允许154开译码,开显示TRO=1;//进行移动显示LastState=NowState;MAN_currstation=NowState;//报告站点}}}然后在中断服务函数中调用此函数即可得出当前站点,考虑是否进行报站。要注意的是,由于公交车进入站点发射范围以后,会一直接收到感应信号,如果不做处理直接报站的话,就有可能连续报站,故要定义一个中间变量,用来储存上一次的报站信息,每次检测到报站中断,就要和上次的信息进行比较,如果相同,说明已经报过站了,还没有出站,不动作;否则,进行报站,并把此信息存入变量,为了一次报站做好准备。可以看出,本系统报6位二进制,转换成十进制就是64风站点,做一般的路线报站已经绰绰有余了。系统的软硬件调试一个产品的诞生,不是构想。图纸、代码设计好了就能成功了并进行生产了。要应该做大量的调试,发现错误与缺点,并改正它们。Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。本设计利用KeilμVision2,在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“OptionsForTarget”对话窗口中,选中“Output”选项中的“CreateHEXFile”,编译链接后就可以生成.HEX文件。在ProteusISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在ProteusISIS中直接修改,如有软件问题可在KeilμVision2中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,用Proteus搭建出本设计的电路:需要说明的是,本设计的无线收发模块在Proteus中没有模型,故不能,模拟,这里就用6个按钮组合出解码信号,进行简单的模拟。语音芯片也不能模拟,有点遗憾。在Proteus搭建的电路如下图19所示:3、按下出站按钮(编号为11),LED显示下一站站名,但数码管所示站点不增加。按下重播按钮,LED显示上次播放的内容,不影响站点数。按下后退按钮,站点后退一站,分两种情况:去的时候,当前站点减一,回程的时候,会加一。4、按下切换按钮,数字键就有不同功能,分别播放特殊语音多喝特殊字幕。由于没有语音模型,不能仿真。5、按下录音按钮,将进入录音模式,红色发光二极管亮。这时候,数字键1和数字键2可以上下录制不同语音段,语音段的分布在4.2节有介绍。按下1或者2后,将启动录音,同时红色发光二极管开始闪烁,表明可以进行录音了。要停止时,按下按钮3,则停止本段录音。要注意的是:每段录音的时间长度有限制的,超过限制将自动停止。6、按下调速按钮,可以对点阵屏幕的移动速度进行调节。默认是低速移动。一共三种模式:低速、快速、静止。键盘测试完毕,基本达到预期目的。下面测试无线接收功能。面前已经说明:Proteus并不能仿真所有的元件。这里就用6个按钮进行编码模拟。用按钮的开和关进行组合,就能组合出一组二进制码,单片机读这组编码就可以检测到当前是哪个站点。无线解码芯片有一个VT引脚,在解码成功后会输出一个脉冲信号。把这个脉冲接到单片机的外部中断输入脚P3_2就可以用中断服务检测无线信号了,这里同样用一个按钮模拟VT的脉冲信号。7、按照程序里的编码定义,二进制的000001就是第一站,000010就是第二站,一次类推。由此我们就组合出如下图22的编码:图22仿真效果图ⅢFig22SimulationeffectsⅢ现在,PI口的低6位的值就是0000011,也就是十进制的3,那么,按下与P3_2相连的中断按钮,模拟成功解码的状态,可以看到,单片机成功判断当前是第三站,开启了LED的流动显示,之后再按中断按钮,已经没有反应,因为还是同一个站点,单片机不做反应,以防误报。效果图就不在仿真了。24×24点阵LED电子显示屏的电路系统较小,但是线路颇为麻烦,特别是在焊接点阵屏时。对于焊接方面更是不可轻视,庞大的电路系统中只要出现一处的错误,则会对整个电路带来麻烦且对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。经过上述仿真测试,本系统基本上达到预期目标。稍作改进,就可以做成产品了。至于PCB版图的设计在附录部分。至此,本设计就接近尾声了。总结在科技高速发展的今天,公交车在城市交通事业中占有举足轻重的地位,它给人们外出提供了方便快捷的服务,而报站器直接影响到公交车的服务质量,因此,我认为在不久之后,自动报站器将完全取代传统的人工报站,普遍使用于各大、中、小城市。本系统功能强大,成本低,系统稳定,无需人工介入,语音音质好,很好的实现了车辆报站的自动化,具有很强的实用性。此次设计的公交车自动报站器初始值存入的方式是在车上,单片机处于输入状态,车辆行驶一遍,将站与站之间的脉冲数写入片内,该方式在公交车改变路线时便于修改。系统选用ISD4004语音芯片,它的录音数据被存放方法是通过ISD多级存储专利技术实现的,用声音和声频信号的自然形式直接存放在故态存储器,从而提供高质量回放语音的保真度,使得该系统与其他语音报站系统相比较,语音质量较好。另外,本设计仍然存在的许多的不足之处,比如它在报站时刻上不能十分的精确,存在一定的误差。这些问题都需要在今后的研究工作中加以改进,使系统更完善,更好的为人们服务。刚选择这个课题时,不禁窃喜了一把,觉得有点简单,应该很容易做出来。开始动手以后,才发现这个设计需要用的知识还是很多的。比如点阵字的显示及其流动显示,我以前从来没有接触过,通过此次设计,基本掌握了其硬件及软件原理,本设计就实现了显示单个字的单元字的模块,通过本模块,可以组合出显示更多字的屏幕,因此可以从本设计中分离出来,做成一些广告牌,也许就是另一种产品了;这个设计的其它模块,如无线收发、语音录放,也没怎么接触过,在完成本设计的过程中,通过查找资料,请教老师和同学,我也掌握了,真是收获颇丰啊。通过在此次设计解决一个个问题,我在学到知识的经验的同时,产生了很多灵感。参考文献[1]李华.MSC-5系列单片机实用接口技术[M].北京航空航天大学出版社,2006.[2]李鸿.单片机原理及应用[M].长沙:湖南大学出版社,2005.[3]秦曾皇.电工学-电子技术[M].北京:高等教育出版社:2006.[4]AVR单片机应用系统开发典型实列[M].北京:中国电力出版社,2005.[5]袁成.自动报站设备[J].城市公用事业.2003,17(3)42-43.[6]GPS自动语音报站器.2005.[7]王峰.基于单片机的公交车自动报站器,2004.[8]余永权.ATMEL89系列单片机应用技术[M].北京:北京航空航天出版社,2003.[9]张俊谟.单片机中级教程[M].北京:北京航空航天大学出版社,1999.[10]窦振中.单片机外围器件实用手册[M].北京:北京航空航天大学出版社,2003.[11]苏文平.新型电子电路应用实例精选[M].北京:北京航空航天大学出版社,2004.[12]付丽辉.汽车自动报站器的设计[J].世界电子元器件.2003,(3):70-71.[13]梁子伊.ISD4004系列语音芯片的单片机控制技术[J].单片机与嵌入式系统应用.2003,(7):61-62.[14]ISD4004系列2005.[15]ISD4004系列单片机语音录放电路.2005.[16]付蓉.LED点阵汉字显示[J].实用无线电.1998,(2):7.致谢在设计过程中,我得到了周围许多人的帮助,在此我对他们表示忠心的感谢。首先我要感谢的是我的指导老师刘老师,这个设计的每个细节和每个数据,都离不开你的细心指导,你严谨细致、一丝不苟的作风一直是我学习的榜样;你循循善诱的教导和不拘一格的思路给予我无尽的启迪。其次,我要感谢同学在软件设计方面给予我的帮助。再次我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程汇报
- 备案租赁合同范本
- 大米出售合同范本
- 小米之家合同范本
- 《轻质高强水泥基3D打印材料设计及成型技术研究》
- 《降温速度对鸭梨果心褐变影响及相关基因挖掘的研究》
- 静脉治疗小组管理
- 《冰片的抗炎止痒作用及其分子生物学机制研究》
- 智慧物流投资合同三篇
- 《玉树依舞的艺术特征研究》
- 20100927-宣化上人《愣严咒句偈疏解》(简体全)
- 口腔科心理护理课件
- 护理员服务外包投标方案(技术方案)
- 智能化农业装备
- 烟草行业的供应链管理优化
- JGJT241-2011 人工砂混凝土应用技术规范
- 原发性骨质疏松症诊疗指南(2022)解读
- 《会变的气球》教学反思
- 《语言与文化》课件
- 孙燕姿所有歌曲歌词大全(11张专辑)
- 期中质量检测1-3单元(试题)-五年级上册数学北师大版
评论
0/150
提交评论