毕业设计-基于单片机的公交车自动报站系统_第1页
毕业设计-基于单片机的公交车自动报站系统_第2页
毕业设计-基于单片机的公交车自动报站系统_第3页
毕业设计-基于单片机的公交车自动报站系统_第4页
毕业设计-基于单片机的公交车自动报站系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

目录TOC\o"1-3"\h\u第一章绪论11.1本课题的研究意义11.2目前几种公交车报站器详细比拟11.2.1GPS公交车自动报站器11.2.2手动式公交车自动报站器11.2.3基于单片机的公交车自动报站系统2第二章系统方案确实定32.1系统主要要实现的功能32.2无线传输模块的选择32.3控制模块的选择32.4液晶显示模块及语音模块的选择3系统整体硬件电路确实定3第三章系统功能模块详细介绍53.1单片机AT89C5153.1.1管脚说明73.1.2外部晶振的选择83.1.3复位电路83.1.4按键电路设计93.2无线收发模块PT2262/PT2272103.2.1PT2262/PT2272引脚图103.2.2PT2262/2272接线图以及工作原理123.2.3无线数传模块F05V/J05V133.3显示模块LCD1602143.3.1排阻Respack-8143.3.2LCD1602的引脚定义143.3.3液晶LCD1602常用的11条指令163.4语音模块ISD4004183.5蜂鸣器和LED指示灯20第四章系统程序设计214.1系统仿真主程序流程图214.2程序子函数模块224.2.1延时函数224.2.2检查忙函数224.2.3写指令函数224.2.4写数据函数234.2.5光标位置函数234.2.6初始化函数234.2.7其他数组定义以及端口定义234.3主程序流程图24第五章系统仿真实现285.1开发环境KeilC51介绍285.2仿真环境PROTEUS介绍285.3仿真运行结果截图285.4仿真结果29结束语31致谢33参考文献34附录A系统仿真全部代码35第一章绪论1.1本课题的研究意义近些年来,随着城市人口的不断增加,人们生活节奏的不断加快,公交车在大城市以及中小城市已经普及,并且有了日新月异的开展,在人民生活中起着重要作用,因此,公交车的正常运行与人们的正常生活息息相关。传统公交车报站大多是由乘务人员来人工报站,但是因为方言的差异或者人多时语音嘈杂,这种方式不利于人民生活的和谐。所以根据这种需要市面上产生流行了多种公交车报站器也方便人们的生活。目前虽然现在在一些大城市的公交车上已经采用GPS定位系统自动报站,但其造价昂贵,难以在一些中小城市实现普及。另外,现在也有一些城市正在使用的一种半自动语音报站系统,这种系统需要由司机在车子进出站的时候人工操作,由于这两个时间点往往是路面情况最复杂的时刻,因此也给行驶中的车辆带来了平安隐患。所以本设计针对目前常见公交车报站系统的主要缺陷,研究介绍了一种基于单片机控制的公交车自动报站系统,实现在到站时的自动语音报站和LCD液晶显示,而且该系统造价廉价,可以在中小城市中普及。1.2目前几种公交车报站器详细比拟公交车对社会影响巨大,对城市开展起着最根本的推动作用。随着公交车的不断普及市面上也出现各种各样的公交车报站器,现在市面上流行的几种报站器主要有以下几种类型:1.2.1GPS公交车自动报站器利用GPS全球卫星定位系统的公交车报站系统,在司机座位后面隔板上,安装了一台15英寸的液晶电视和GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没听清报站的话,通过显示屏,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音;驾驶员也可以通过相应的工具进行回复。目前在美国局部城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。手动式公交车自动报站器手动式公交车自动报站器通过主机上的汉字显示器,显示当前车站名称,即将到达站名指示功能;通过主机屏幕的显示,可直观的观察到进站和下一站信息;通过按键,可播放进站,出站,效劳用语等语音。但是该种报站器需要由司机在车子进出站的时候人工操作,由于这两个时间点往往是路面情况最复杂的时刻,因此也给行驶中的车辆带来了平安隐患,不利于公交车的平安行驶。基于单片机的公交车自动报站系统基于单片机的公交车自动报站系统,而这种系统又大致分为两种技术支持。其中一种的技术关键是对车轮转轴的转角的脉冲进行计数,将计数值与预置值比照,即可确定报站时刻,到达准确自动的目的。该方式应用单片机的高速计数器端口进行脉冲计数,以距离来控制报站时刻,首次实现了模糊控制,改变现有设备的缺乏。做到简单实用自动化程度高。传感器在公交车上的应用极大的提高了设备功能。另外一种基于单片机的公交车自动报站系统就是利用编码解码芯片PT2262/PT2272进行解码编码,利用无线数传模块F05V/J05V和天线进行发射和接收来实现的。在每个站牌上设置一个编码发送装置PT2262和无线数传模块F05V,通过公交车上设置的接收装置J05V和译码装置PT2272进行译码并传输到单片机。发送装置按照延时3到5秒不断发送信号,公交车在距离站牌10到20米的时候就能接收到信号,然后根据程序来实现语音报站,LCD液晶显示。这种报站系统软件编写比拟简单,也容易修改,并且芯片价格低廉,大批生产能够获得比GPS系统到达更高的性价比,是公交车自动报站系统的较佳选择。综合上述各种公交车自动报站系统,本设计选择了基于单片机的公交车自动报站系统,并利用无线数传模块来实现公交车的自动报站。第二章系统方案确实定2.1系统主要要实现的功能该系统应实现无线信号收发确认,到站时的公交车站名的液晶显示以及自动语音提示。系统的硬件设计中应充分考虑了性价比,用最少的器件设计出满足要求的硬件电路。本次设计主要是完成实现根本的仿真,该系统仿真电路的总体结构以52单片机为核心,由模拟接收电路、LCD〔LiquidCrystalDisplay,液晶显示屏〕显示电路等组成。2.2无线传输模块的选择PT2262/PT2272集成芯片。方案采用低功耗、低价位、通用编解码电路,发送用高β的达林顿管,所以在灵敏度和抗干扰性方面有保障。无线数传模块F05V/J05V〔典型遥控应用电路〕:F05V采用的SMT工艺,优点是低电压微功率、体积小、低功耗发射模块,适合单片机数据传输以及短距离无线遥控报警。J05V作为接收模块优点是低电压、体积小,两者连接在PT2262/2272配合使用控制模块的选择所学专业课中学习过51单片机,并且单片机体积小,重量轻,具有很强的灵活性而且价格廉价,所以控制模块选用单片机。液晶显示模块及语音模块的选择随着科学技术的日益开展和进步,微型计算机已经在很多领域得到广泛应用。LCD与微机技术结合,比传统的LED显示效果更佳。所以结合公交车报站的使用特点和运营环境,设计一种由单片机控制、LCD显示的公交车报站显示系统。公交车报站显示系统的设计应用单片机,LCD显示,使到站信息及提示信息以显示的方式告知市民,为市民提供人形化、完美的效劳。所以本次设计中重点使用了LCD1602液晶显示模块鉴于使用Proteus仿真,在仿真中使用蜂鸣器代替语音模块,使用蜂鸣器的连续间断发声作为提示。为了以后实际需要,在文章中介绍了常用的语音模块ISD4004。根据系统要实现的功能,以及各个模块的选择,确定了整个报站系统主要组成局部分为两个模块。发射模块即电子站牌局部主要由AT89C51单片机,PT2262编码装置,无线传输模块F05V和天线组成。接收控制模块即车载局部是主要局部,选择AT89C51为核心的控制器,PT2272译码装置和无线数传模块J05V以及天线作为接收信号装置,语音录放芯片ISD4004组成的语音播放电路以及LCD1602液晶显示屏构成液晶显示模块。系统各局部框图如以下图所示。通过天线〔Antenna〕发射信号,间隔5秒。无线数传模块通过天线〔Antenna〕发射信号,间隔5秒。无线数传模块F05VPT2662信号发射AT89C51单片机产生周期信号图2-1公交车站牌发射局部方框图接收天线接收无线数传模块J05VLCD1602液晶显示接收天线接收无线数传模块J05VLCD1602液晶显示PT2272信号接收AT89C51单片机控制ISD4004语音模块ISD4004语音模块晶振,外部中断复位电路晶振,外部中断复位电路按键控制按键控制图2-2公交车车载接收局部方框图公交车自动报站系统就是利用编码解码芯片PT2262/PT2272进行解码编码,利用无线数传模块F05V/J05V和天线进行发射和接收来实现的。在每个站牌上设置一个编码发送装置PT2262和无线数传模块F05V,通过公交车上设置的接收装置J05V和译码装置PT2272进行译码并传输到单片机。发送装置按照延时3到5秒不断发送信号,公交车在距离站牌10到20米的时候就能接收到信号,然后根据程序来实现语音报站,LCD液晶显示。发射局部通过编码芯片PT2262,无线数传模块F05V和天线不停发射周期信号,发射的一个周期的内容包括本站点的地址、站名等信息的编码信息。当公交车行驶进人该信号范围内,车载局部的通过天线,经无线数传模块J05V和PT2272译码就会接收到这个编码信息,单片机将编码信息处理后,向显示模块和语音模块发送对应的信息,就能实现液晶显示屏显示对应的站名和语音报站,完成自动报站。第三章系统功能模块详细介绍3.1单片机AT89C51随着计算机技术的开展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪器仪表智能化中扮演着极其重要的角色。纵观单片机开展的30多年来,单片机正往多功能、高性能、高速度、低电压、低价格、低噪声、低功耗、小体积、大容量、专用化和外围电路内装化的方向开展。单片机的出现使的过去经常采用模拟电路、数字电路实现的电路系统,转变成现在用单片机予以实现,并且传统的电路设计方法演变成硬件和软件相结合的设计方法,并且许多电路设计问题将转化为纯粹的程序设计问题。诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的控制方法和设计思想,是控制技术的一次革命,是一座重要的里程碑微控制器通常将主要的组成局部集成在一个芯片上,就是把中央处理器〔CPU〕、随机存储器〔RAM〕、只读存储器〔ROM〕、中断系统、定时器/计数器以及I/O接口电路等主要部件集成在一个芯片上。AT89C51俗称单片机,可擦除只读存储器可以反复擦除1000次。主要特性:1、一个CPU,一个片内振荡器以及时钟电路,2、4K〔RAM〕程序存储器,3、128B〔ROM〕数据存储器4、21个特殊功能存放器5、数据能够保存的时间:10年6、与MCS-51指令相兼容7、32个可编程I/O线〔4个8位并行I/O端口〕8、16位定时器/计数器有两个9、5个中断源,两个优先级嵌套结构10、一个可编程全双工串行接口11、低功耗的闲置和掉电模式12、片内振荡器和时钟电路尽管目前单片机种类多,各类单片机的指令系统各不相同,功能各有所长,但市场占有率最高的是51系列单片机。单片机体积小,重量轻,具有很强的灵活性而且价格廉价,得到越来越广泛的运用。例如工业控制领域、家电产品,智能化仪器仪表,计算机外部设备,特别是机电一体化产品中都有重要的用途,其中的51单片机系列开展规模最大。51单片的运用广泛,并且具有优异的性能价格比,集成度高,体积小,有很高的可靠性,并且控制功能强。所以是核心控制期间的最正确选择。图3-1AT89C51单片机引脚图3管脚说明下面对设计中用到的一些管脚进行简要的介绍:VCC:供电电压,一般接+5V电源正端。GND:接地,一般接+5V电源地端。P0口〔39~32脚〕:口。可以用作准双向输入/输出口使用,但由于内部无上拉电阻,一般外加上拉电阻:在进行片外存储器扩展或I/O扩展时,P0口作为分时服用的低8位地址总线和双向数据总线。P1口〔1~8脚〕:P1口作为准双向I/O口使用。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口〔21~28脚〕:P2口也可作为准双向I/O口,当进行片外村春气扩展或I/O口扩展时,P2口用作高8位地址总线。P3口〔10~17脚〕:P3口作为准双向I/O口使用外,每一个端口还具有第二功能。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能RXD〔串行口输入端〕P3.1TXD〔串行口输出端〕P3.2/INT0〔外部中断0〕/INT1〔外部中断1〕T0〔定时器/计时器0计数脉冲输入〕T1〔定时器/计时器1计数脉冲输入〕/WR〔外部数据存储器写选通信号输出〕/RD〔外部数据存储器读选通信号输出〕RST〔9脚〕:复位输入。当振荡器复位器件时,要保持10ms高电平时间才能保证有效的复位。ALE/PROG〔30脚〕:地址锁存允许/编程线。采用了地址/数据总线复用技术。/PSEN〔29脚〕:片外程序存储器读选通信号输出端,低电平有效。/EA/VPP〔31脚〕:片外程序存储器选用端,低电平有效。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。XTAL1:外接晶体振荡器一端。XTAL2:外接晶体振荡器另一端。3外部晶振的选择AT89C51的内部有一个用于构成振荡器的高增益反相放大器。通过XTAL1,ATAL2外部接上一片作为反应元件的晶体,与C1和C2构成了并联谐振电路,使其构成自激振荡器。电容的值通常30PF。具体的接线电路如图3—2外部晶振电路:AT89C51单片机外接的是12MHZ的晶振,那么机器周期为1us。图3-2外部晶振电路3复位电路复位的作用是使程序自动从0000H开始执行,因此我们只要在AT89C51单片机的RST端加上一个高电平信号,并持续10ms以上即可,RST端接有一个上电复位电路,它是由一个小的电容和一个接地的电阻组成的。按键复位电路另外采用一个按钮来给RST端加上高电平信号。本设计采用放电型的进行人工复位的电路,如图按键复位电路,上电时C3通过R2充电,维持宽度大于10ms的正脉冲,就可以完成复位操作。当C3结束充电后,RST端出现低电平,这是CPU将正常的工作。在本次设计中如果需要按键进行复位,就按下按钮BUTTON3,C3通过BUTTON3和R2放电,RST端电位将会上升到高电平,从而实现人工复位,BUTTON3松开后C3重新充电,当结束充电后,CPU将会重新工作。以下图中,R2是限流电阻,阻值不可以过大,否那么不能起到复位作用。图3-3按键复位电路按键电路设计对于此设计来说要准确的显示设计所要对应的信息,每按下一次按键要显示所要显示的信息。这按键是主要用来模拟无线信号的收发而设计的,即PT2262/PT2272的无线信号收发。功能的实现主要是通过程序来实现,BUTTON1控制顺向报站,当报站系统启动后,按下BUTTON1开始按预先设置好的站名进行顺向报站,本设计设置的是从站名“AAAAAAA”到“EEEEEEE”依次报站,每次按键按下时实现LED提示灯亮,蜂鸣器连续鸣叫7次。BUTTON2按键是实现公交车逆向返回时的报站,即从站名“EEEEEEE”到“AAAAAAA”的依次报站,也满足每次按键按下时实现LED提示灯亮,蜂鸣器连续鸣叫7次。图3-4按键设置如果使用过程中出现错误时,可以使用按键复位,重现选择正向或者逆向报站。同时,为了防止一次按键产生站名的漏报,在软件设计中使用了延时函数,防止站名的漏报。3.2无线收发模块PT2262/PT2272PT2262/PT2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/PT2272最多可有12位(A0—A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供53144l〔212〕地址码,PT2262可有6位(D0~D5)的数据端的管脚,设计可以设定地址码以及数据码在第17脚进行串行输出,以便于应用于无线的遥控发射的电路。。PT2262/PT2272引脚图在PT2262/2272这种器件的使用,根据资料一般将会使用8位的地址码和4位的数据码。PT2262编码电路引脚的选择是:第l~8脚作为地址的设定脚,他可以选择三种状态:悬空、接正电源、接地。3的8次方为6561,即地址编码的不重复度是6561组。PT2262/2272的配对使用是要求发射端PT2262和接收端PT2272的地址编码需要完全相同,用户如果想改变地址编码,只要将PT2262和PT2272设置相同即可,两者的地址的编码相同时,PT2272输出端将会输出大约4V左右的互锁的高电平的控制信号。图3-5PT2262/PT2272引脚图PT2262/PT2272引脚根本类似,作为无线收发译码解码器,两者配对使用引脚连接必须一致。下面接收PT2262/PT2272的引脚说明图表3-1PT2262引脚说明名称管脚说明A0~A111-810-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”〔悬空〕D0~D57-810-13数据输入端,有一个为“1”即有编码发出,内部下拉VCC18电源正端〔+〕VSS9电源负端〔-〕TE14编码启动端,用于多数据的编码发射,低电平有效OSC116振荡电阻输入端,与OSC2所接电阻决定振荡频率OSC215振荡电阻振荡器输出端Dout17编码输出端〔正常时为低电平〕参数名称符号工作条件最小值典型值最大值单位工作电压VD0—3—V工作电流ID0VD0=12V停振—uAA0-A11开路输出驱动电流IOHVD0=5V,VOH=3V3——mAVD0=8V,VOH=4V6VD0=12V,VOH=6V10输入驱动电流IOLVD0=5V,VOH=3V2——mAVD0=8V,VOH=4V5VD0=12V,VOH=6V9——表3-2PT2272引脚说明图名称管脚说明A0~A111-810-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”〔悬空〕,必须与2262一致,不然不解码D0~D57-810-13地址或数据管脚,当做为数据管脚时,只有在地址码与2262一致,数据管脚才能输出与2262数据端对应的高电平,否那么输出为低电平VCC18电源正端〔+〕VSS9电源负端〔-〕DIN14数据信号输入端,来自接收模块输出端OSC116振荡电阻输入端,与OSC2所接电阻决定振荡频率OSC215振荡电阻振荡器输出端VT17解码有效确认输出端〔常低〕解码有效变成高电平〔瞬态〕表3-3PT2262/PT2272工作参数3.2.2PT2262/2272接线图以及工作原理发射电路主要由AT89C51、编码模块PT2262、无线数传模块F05V和一片74LS04(六输入非门,实际上就是六个非门集成在一块74LS04里面了)构成,发射局部电路如图3-6所示。接收电路主要由AT89C51、译码模块PT2272、无线数传模块J05V和一片74LS04构成,接收局部模拟电路如图3-7所示图3-6PT2262发射局部模拟接线图图3-7PT2272接收局部模拟接线图发射局部主要产生一个周期的编码信号。编码信号的内容包括起始标志、数据编码和结束标志,由于无线收发模块是四路的,即每次收发半个字节的数据所以一帧数据至少是16位的,其信息格式如表3-4所示。表3-416位编码数据格式0123456789101112131415D0D1D2D3D0D1D2D3D0D1D2D3D0D1D2D34位起始标志8位编码数据4位起始标志由上图可以看出每一帧数据需要四次才能发送完毕。在实际应用中不需要编码信号不间断的发送,三秒钟或者五秒钟发送一次即可,因此程序里还需要有一段三秒或五秒的延时。在公交车上设置的接收装置J05V和译码装置PT2272进行译码并传输到单片机,通过单片机判断车辆到达的站点信息,根据这个站点的信息进行语音播报以及液晶显示提示。射频触发信号是以中断的的方式送入单片机的,硬件电路将这个控制信号与单片机的INT0口相连接,所以本段程序是一个外部中断0的子程序。当射频信号到来时PT2272D的VT引脚端由低变高,经非门送到单片机INT0,使单片机跳到外部中断O子程序。3.2.3无线数传模块F05V/J05V无线数传模块F05V/J05V〔典型遥控应用电路〕:F05V采用的SMT工艺,优点是低电压微功率、体积小、低功耗发射模块,适合单片机数据传输以及短距离无线遥控报警。J05V作为接收模块优点是低电压、体积小,两者连接在PT2262/2272配合使用F05V引脚定义:1=正电源3V;2=接地;3=数据信号输入;Y=外接天线。J05V引脚定义:1=正电源3V;2=接地;3=数据信号输出;Y=外接天线。图3-8f05V/J05V引脚接线图3.3显示模块LCD1602我们知道的用来显示的器件很多。比方数码管、LCD、点阵式LED。数码管只能显示数字,LCD可以显示汉字、符号、数字和图形,为了报站器的人性化LCD1602能够同时显示16列2行的字符,可以显示数字、字母、以及各种符号。这种液晶模块由假设干个5X7或者5X11等点阵字符位组成,这种点阵字符显示字符并且自带间隔,也就是有自然的间距和行间距,也是因为这个特性不能很好地显示图形〔用自定义CGRAM,显示效果也不好〕。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大局部的字符型的液晶。3.3.1排阻Respack-8Respack-8接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻,1端为公共端接VCC。3.3.2LCD1602的引脚定义字符型LCD一般是16条引脚线14条引脚线,多出来的两条线是背光电源线VCC〔15脚〕和地线GND〔16脚〕,与14脚LCD的控制原理根本完全一样,定义如下表所示:表3-5LCD1602引脚定义引脚号引脚名电平输入/输出作用1VSS电源地2VCC电源〔+5V〕3VEE进行比照的调整电压4RS0/1输入0进行输入I指令1进行输入O数据5R/W0/1输入0=向LCD写入指令以及数据1=从LCD中来读取信息6E1,1—0输入使能信号,1是进行读取信息1—0下降沿执行指令7DB00/1I/O数据总线line0〔最低位〕8DB10/1I/O数据总线line09DB20/1I/O数据总线line010DB30/1I/O数据总线line011DB40/1I/O数据总线line012DB50/1I/O数据总线line013DB60/1I/O数据总线line014DB70/1I/O数据总线line015A+VCCLCD背光灯电源正极16K接地LCD背光灯电源负极图3-9LCD1602引脚接线图在LCD模块上固化了字模存储器,这就是CGROM和CGRAM,HD44780内置了192个常用字符的字模,存于字符产生器CGROM中,另外还有8个允许用户自定义的字符产生RAM,成为CGRAM。以下图3-10说明了CGROM和CGRAM与字符的对应关系。读的时候,先读左边那列,再读上面那行,如:感慨号!的ASCII为0x21,字母B的ASCII为0x42〔前面加0x表示十六进制〕图3-10CGROM和CGRAM中字符代码与字符图形对应关系液晶LCD1602常用的11条指令表3-6液晶LCD1602常用指令指令功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏0000000001功能详解:去除液晶显示器的内容。光标归位000000001X功能详解:光标撤回到显示器的左上方,地址计数器〔AC〕值为0,DDRAM值不变进入模式设置00000001I/DS40us功能详解:I/D当为0时写入数据后光标左移,当为1时写入数据后光标右移S为0时写入新数据后显示屏不移动,为1时写入新数据后显示屏整体右移1字符显示开关控制0000001DCB40us功能详解:D为0时显示功能关,为1时显示功能开C为0时无光标。1时有光标B为0时光标闪烁,1时光标不闪烁设定显示屏或光标移动方向000001S/CR/LXX40us功能详解:S/CR/L设定的情况00光标左移1格,且AC值减101光标右移1格,且AC值加110显示器上字符全部左移一格,但光标不移动11显示器上字符全部右移一格,但光标不移动功能设定00001DLNFXX40us功能详解:DL为0时数据总线为4位,1时数据总线为8位N为0时显示1行,1时显示两行F为0时5*7点阵/每个字符,1时5*10点阵/每个字符设定CGRAM地址指令0001CGRAM的地址〔6位〕40us功能详解:设定下个要存入的数据的CGRAM的地址设定DDRAM地址指令001CGRAM的地址〔7位〕40us功能详解:设定下个要存入的数据的DDRAM的地址读取忙碌信号或AC地址01BFAC内容〔7位〕40us功能详解:BF为1表示液晶显示器忙,为0时,液晶显示器可以接收单片机送来的数据或指令数据写入到DDRAMH或CGRAM10要写入的数据D7~D040us功能详解:〔1〕将字符码写入DDRAM,液晶显示屏并显示对应的字符〔2〕使用者设计的图形存入CGRAM从CARAM或DDRAM读取数据11要读出的数据D7~D040us功能详解:读取DDRAM或CGRAM的内容3.4语音模块ISD4004实际公交车报站都是语音报站,因为本设计用Proteus仿真,所以用蜂鸣器替代语音模块进行仿真试验,下面简要介绍下语音模块的根本知识。ISD4004语音模块工作特点:工作时的电压在3V,能够完成的录放的时间在8到16分钟左右,同型号的ISD1730等,录音时间一般在4分钟以内。并且它的音质也很不错,目前在移动以及其他电子产品中应用比拟广泛。ISD4004是经过CMOS技术来制作的,内部有各种模块:音频放大器、平滑滤波器、振荡器、自动静噪及高密度多电平闪烁存贮、防混淆滤波器。芯片经过微控制器设计,其指令采用的是串行通信,如(SPI)。芯片采用了多电平接模拟量的存储技术,采样值可以在片内的闪烁存贮器进行直接存储,因此可以非常真实得复原声音。而一般固录音电路是有很多缺点的,会有很多噪声和"金属声"。采样的频率可以选为8.0、6.4、5.3、4.0kHz,这几个频率选择的越低,录放的时间也就会越长,确实是造成音质的下降,闪烁存贮器中的信息,可保存的时间是100年(典型值),并且可以反复录音10万次。ISD4004芯片优点是无须A/D的转换和A/D的压缩,能过进行直接的储存,并且没有A/D转换的误差,还具有所需的外围的电路是比拟简单的、使用时不用扩充存储器、、存储时间也很长、也可以进行屡次重复录放。图3-10ISD4004的引脚排列图在本次设计后续设计中,也可以利用AT89C51控制该芯片,实现语音的存储以及语音报站。1、电源端(VCCA,VCCD):为了使噪声最小,芯片内部的数字和模拟电路要使用不同的电源的总线,,并且分别引出到外封装的不同的管脚上。数字和模拟电源端最好走不同的线,比方,选择在离供电端相近的地方相连,而去耦电容就应尽量选择离器件近。2、地线(VSSD,VSSA):芯片的内部的模拟和数字电路也使用不同的地线。3、同相的模拟输入(ANAIN+):即录音信号同相输入端。这时输入放大器采用单端或差分驱动。当采用单端时,在耦合电容中输入信号,最大的幅度是32mV峰峰值,芯片频带的低端截止频率决定耦合电容和本端的3KΩ电阻的输入阻抗。作为差分的驱动时,信号最大幅度是16mV峰峰值,这是和ISD33000系列一样的。4、反相的模拟输入(ANAIN-):作为差分驱动是录音信号的反相的输入端。信号是通过耦合电容来输入,最大幅度是16mV峰峰值5、音频输出(AUDOUT):作用是提供音频的输出,可以驱动5KΩ的负载。6、片选(SS):此端为低电平,在向ISD4004芯片发送指令时,并且该两条指令间应该为高电平。7、串行输入(MOSI):此端是串行的输入端。主控制器应该在串行时钟的上升沿前半周期把数据放到这个端口,来让ISD输入。8、串行输出(MISO):作为ISD的串行的输出端。当ISD没有选中时本端会呈高阻态。9、串行时钟(SCLK):作为ISD的时钟的输入端。从主控制器中产生,可以用于同步的MOSI和MISO的数据传输。10、中断(/INT):本端作为漏极的开路输出。ISD在任何操作过程(比方快进)中检测到了EOM或OVF时,本端会变低电平并保持。并且中断的状态在下一个SPI周期开始时去除。中断状态也可以用RINT的指令读取。OVF标志指示ISD的录放操作是否已经到存储器未尾状态。EOM标志只在放音过程中检测到内部的EOM标志时,状态才会置1。11、行地址时钟(RAC):漏极的开路输出。每经过一个RAC周期,表示ISD存储器操作进行了一行。该端口并且可以用于存储的管理技术。12、外部时钟(XCLK):本端内部带有下拉元件。工业级的芯片在整个温度和电压范围内,频率变化范围在-6/+4%内,此时建议使用稳压电源。如果要求更高精度,可从本端来输入外部时钟(如前边所描述)。并且由于内部的防混淆及平滑滤波器已经设定好,所以上述推荐时钟频率不应该再改变。输入时钟占空比是无关紧要的,因为内部首先进行了分频。并且在不外接地时钟时,此端是必须接地的。13、自动静噪(AMCAP):一般本端对地会接1mF的电容,来构成内部信号的电平峰值检测电路一局部。并且与内部设定阈值和峰值电平来作比拟,从而决定自动静噪的功能的翻转点。大信号时,自动静噪的电路不衰减,静音时衰减6dB。1mF的电容也影响自动静噪的电路对信号幅度的响应速度。本端接VCCA那么应该禁止自动静噪。蜂鸣器和LED指示灯蜂鸣器鉴于用Proteus仿真,语音模块用蜂鸣器代替如图3-7,采用三极管NPN,当P11为高电平时电路导通,通过程序使P11进行短时间内上下电平转换,以到达断续蜂鸣提示的效果。图3-11蜂鸣器接线图到站LED提示灯鉴于用Proteus仿真,语音模块用蜂鸣器代替如图3-7,采用三极管PNP,当P1.0为低电平时电路导通,到站提示灯亮。图3-12LED提示灯接线图第四章系统程序设计系统仿真主程序流程图开始界面开始界面蜂鸣器提示,LCD显示第一行字符蜂鸣器提示,LCD显示第一行字符“WelcometoYanTai”运行方式运行方式P34=0?P35=0?NNP34=0?P35=0?YY顺序报站,蜂鸣器提示,LED下车指示灯亮逆序报站,蜂鸣器提示,LED下车指示灯亮顺序报站,蜂鸣器提示,LED下车指示灯亮逆序报站,蜂鸣器提示,LED下车指示灯亮液晶显示当前到站站名液晶显示当前到站站名液晶显示当前到站站名液晶显示当前到站站名图4-1系统仿真主程序流程图系统仿真,初始化运行程序时,LCD第一行显示欢送字符,蜂鸣器蜂鸣,选择BUTTON1或者BUTTON2〔通过控制P35,P34〕选择顺序或者逆序报站,按下按键之后,蜂鸣器提示,LED指示灯亮,延迟一段时间后显示站名。随后可以每到一个站依次显示公交车站名,如果出现错误或者重新选择另一顺序报站,可以使用按键复位,重新选择报站方式。4.2程序子函数模块4.2.1延时函数/*******延时*********/voiddelay(uintn){uinti;for(;n>0;n--)for(i=200;i>0;i--);}检查忙函数/*******判断是否忙*******/voidcheck(){rs=0; rw=1; //读e=1; port=0x00; e=1; while(busy); e=0;}写指令函数/*******写指令******/voidsend(ucharcommand){check(); rs=0; //指令 rw=0; //写e=0; port=command; e=1; _nop_();_nop_(); e=0; //写入指令}4.2.4写数据函数/********写数据********/voidwrite(uchardat){check(); rs=1; //数据 rw=0; port=dat; e=1;_nop_();_nop_(); e=0;}4.2.5光标位置函数/********光标位置*********/voidpos(uintp){send(p|0x80);//第一行第一个0x80;}4.2.6初始化函数/**********初始化*********/voidinit(){send(0x38);//8位数据,双列,5*7字形delay(1);send(0x0c);//开0x08关delay(1);send(0x06);//地址增加一delay(1);send(0x01);//清屏delay(1);}4.2.7其他数组定义以及端口定义用数组定义站点信息字符串ucharcodedis1[]="AAAAAAA";//站点的内容可更新也可以增加ucharcodedis2[]="BBBBBBB";//每个字符串假设了10个字符ucharcodedis3[]="CCCCCCC";ucharcodedis4[]="DDDDDDD";ucharcodedis5[]="EEEEEEE";ucharnum[]="WelcometoYanTai";液晶显示第一行〔刚好18个字符〕端口定义#defineportP0//DB0~DB7数据口sbitP34=P3^4;//控制反向报站sbitP35=P3^5;//控制正向正向sbitled=P1^0;//到站指示灯sbitfmq=P1^1;//蜂鸣器sbite=P2^2;//使能sbitrw=P2^1;//读写sbitrs=P2^0;//数据/命令sbitbusy=P0^7;//检测忙4.3主程序流程图voidmain(){inti=0,j=0,k=0,s=0;ucharn;init();delay(10);pos(0x00);delay(1);//或者使用i=0,删除后会发现不能显示第一个数。for(n=0;n<18;n++){write(num[n]);delay(1);}while(1){if(P35==0){j++; if(j==1) {loop1:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop1; } s=0; pos(0x40); delay(1);for(n=0;n<10;n++){write(dis1[n]); delay(5);} }if(j==2) {loop2:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop2; } s=0; pos(0x40); delay(1); for(n=0;n<10;n++) {write(dis2[n]); delay(5); } } if(j==3) {loop3:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop3; } s=0; pos(0x40); delay(1); for(n=0;n<10; n++) {write(dis3[n]); delay(5); }} if(j==4) {loop4:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop4; } s=0; pos(0x40); delay(1); for(n=0;n<10; n++) { write(dis4[n]); delay(5); }} if(j==5) {loop5:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop5; } s=0; pos(0x40); delay(1); for(n=0;n<10; n++) {write(dis5[n]); delay(5); }} } 第五章系统仿真实现5.1开发环境KeilC51介绍KeilC51是集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,,易学易用。在KeilC51集成开发环境下使用工程的方法来管理文件,所有的源文件、头文件甚至说明性文档都可以放在工程工程文件里统一管理。本次设计使用KeilC51的开发工具大致流程如下:〔1〕运行KeilC51软件,进入KeilC51集成开发环境。〔2〕选择工具栏的Project选项,弹出下拉菜单,选择NewProject命令建立一个新的μVision2工程。这时会弹出所示的工程文件保存对话框,选择工程目录并输入文件名后,单击保存。〔3〕本次设计建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件那么必须建立它,可以选择工具栏的File选项,在弹出的下拉菜单中选择New目录。这次设计我采用的是将.c的文件导入工程。〔4〕输入程序,完毕后点击“保存”命令保存源程序,KeilC51支持汇编和C语言,μVision2会根据文件后缀判断文件的类型,进行自动处理。〔5〕不断纠正源文件错误,检查无误后生成HEX文件,并将HEX文件导入Proteus中的51单片机来运行实现。5.2仿真环境PROTEUS介绍Proteus是英国Labcenter公司开发的电路分析与实物仿真软件〔EDA工具软件〕。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的十分适用于仿真设计。该软件具备许多优点,首先能够仿真的器件非常多,里面有30多个元件库,包括各种型号单片机、电阻、二极管、三极管、晶振、按键、电压表电流表等各种实验会用到的器件。再次,该软件能实现单片机及其外围电路组成的系统的仿真、单片机的数字电路仿真、模拟电路仿真、键盘和LCD的仿真等等各种功能,并且能使用示波器等各种辅助工具研究器件。最后该软件还能提供软件调试的功能,观察各器件在程序运行时的状态,当然,该软件支持KeilC51生成的HEX文件。5.3仿真运行结果截图初始化运行界面图5-1初始化运行界面用Proteus进行仿真,模拟根本的公交车报站。初始化运行程序时,LCD第一行显示欢送字符,蜂鸣器蜂鸣,选择BUTTON1或者BUTTON2选择顺序或者逆序报站,按下按键之后,蜂鸣器提示,LED指示灯亮,延迟一段时间后显示站名。随后可以每到一个站依次显示公交车站名,如果出现错误或者重新选择另一顺序报站,可以使用机械复位,重新选择报站方式。5.4仿真结果本次课题用Proteus设计出硬件电路,用KeilC51编写程序共同完成课题的仿真,根本完成了公交车的模拟报站。功能的实现主要是通过程序来实现,BUTTON1控制顺向报站,当报站系统启动后,按下BUTTON1开始按预先设置好的站名进行顺向报站,本设计设置的是从站名“AAAAAAA”到“EEEEEEE”依次报站,每次按键按下时实现LED提示灯亮,蜂鸣器连续鸣叫7次。BUTTON2按键是实现公交车逆向返回时的报站,即从站名“EEEEEEE”到“AAAAAAA”的依次报站,也满足每次按键按下时实现LED提示灯亮,蜂鸣器连续鸣叫7次。如果使用过程中出现错误时,可以使用机械复位,重现选择正向或者逆向报站。同时,为了防止一次按键产生站名的漏报,在软件设计中使用了延时函数,防止站名的漏报图5-2系统正向报站图5-3系统反向报站结束语经过了近几个月的学习和努力,我终于完成了基于单片机的公交车自动报站系统的设计,在这个过程中我的收获是非常多的,并且需要改良和学习的地方也非常多。我从以下两个方面来对自己在这次毕业设计的过程中的感想来做一下总结:〔一〕收获通过这次设计我知道了在做一个系统之前很重要的是要做好需求分析,为此,我在网上查看了大量的相关资料,对目前市面上流行的几种公交车报站器进行了分析和比拟,来为此次设计个方案确定来做了充足的准备。通过研究各种公交车报站器来自己确定要完成的公交车报站器的工作原理和要具备的各种功能。在这次毕业设计过程中杨仁弟老师进行了专门的辅导,老师具有丰富的理论及实践经验,给我提供了许多非常具有参考价值的资料,开拓我的眼界,本来不懂的地方茅塞顿开。当我在遇到困难时杨仁弟老师耐心的帮我分析,帮助我克服各种困难,这样我的毕业设计才可以更加顺利进行。说实话,在我做这次毕业设计之前,我以为这东西很好做,一做起来才感动力不从心,并且我对一些EDA的软件根本没有了解,甚至都不知道它是干什么,怎么用,对程序的理解也仅仅局限于书本上有限的知识。但是通过了这次设计,我深入了解了单片机的工作原理和机制,对它的各个模块功能有了更深层认识和更本质的理解,并且在这个过程中,我更加深入认识了Proteus和KeilC51这两个软件,对这软件的根本操作能够熟练的使用,了解了软件的优缺点,并且熟练了对C语言的使用和LCD1602程序设计。在做课程设计的过程中我遇到了很多困难,很多方案确定不下来,编写代码时也总是出现这样或者那样的错误,并且有些功能自己也不知道该用什么方法来实现,经过和同学的讨论以及杨仁弟老师的深刻指导,我克服了这一些困难。最终根本完成了用Proteus来实现公交车的模拟报站,但是模块还是很简陋,也需要进一步的优化。〔二〕缺乏之处该系统还存在着一些缺乏,主要表达在:仿真过程没有方法使用PT2262/2272和ISD4004语音模块,用了按键和蜂鸣器来代替,只对这两个模块根据资料进行了相应的介绍。如果以后做实物的过程,那应该完善这两局部。并且在设计过程中也暴露了很多的缺点,比方编程能力有待提高,需要通过不断的编译仿真调整才能最终得到想要的结果,英语技术文档阅读也很不熟练,需要反复斟酌才能下结论〔三〕总结本次设计用Proteus仿真根本到达了预先的要求。设计采用了Atmel公司的AT89C51单片机来设计的一个公交自动报站系统,该系统主要包含PT2262/PT2272无线信号收发模块,LCD1602液晶显示模块,ISD4004语音模块,各个模块通过AT89C51单片机来控制实现无线信号收发与识别、信息显示及语音报站任务。本设计使用了C语言进行编程,利用了KeilC51软件进行编译生成HEX文件,使用了Proteus软件进行了根本的仿真实现,能够完成对输入信号的判断处理,自动液晶显示站名以及声音提示。这次设计能够实现设计中提出的功能方案。通过这次的设计,对于在KeilC51环境下的编程能力有了进一步的提高,同时对单片机系统设计理念也有了进一步认识,理解了模块化设计在整个系统设计中的作用。最后要感谢杨老师在我的毕业设计过程中对我的悉心指导以及许多同学们对我的帮助,正是有了大家的帮助,我才能顺利的完成了毕业设计,在这里,我由衷地对帮助过我的人表示感谢。致谢光阴似箭,四年的大学生活即将过去了。在这七月的日子里,我即将辞别我的大学时代,去继续我的人生旅途,有遗憾也有收获,感谢烟大给我的许多美好的回忆。这篇文章应该可是我四年本科生活的一点总结。因此,我要真心地感谢所有曾经传授给我们知识,给我们人生引路的大学老师,感谢所有每个曾帮助过我的同学,谢谢你们让我拥有了一段美好的大学生活。关于这篇论文,首先我要感谢我的指导老师杨仁弟老师的耐心指导与关心,杨老师学识渊博,引导我大胆得去思考去设计,当我在遇到困难时杨老师耐心的帮我分析,帮助我克服各种困难,非常感谢老师的耐心指导。参考文献赵德安,单片机原理与应用,北京:机械工业出版社,2005耶晓东,基于单片机的公交车自动报站系统的设计与实现,陕西理工学院电信系,信息技术2011年第4期向赛辉,基于单片机实现遥控编码器PT2262的软件解码,国外电子元器件,2008年第5期安颖,遥控编码芯片PT2262的单片机译码模块,计算机与数字工程,2005,33〔8〕于志赣,液显LCD1602模块的应用,机电技术,2009,32〔3〕张建华,ISD4004语音芯片在语音报站器中的应用,电子技术应用,2003,29〔8〕张常年,ISD4004语音芯片的工作原理及其在智能控制系统中的应用,2001,20〔6〕附录A系统仿真全部代码#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineportP0//DB0~DB7数据口sbitP31=P3^1;//无线信号接收端〔控制反向〕sbitP32=P3^2;//无线信号接收端〔控制正向〕sbitled=P1^0;//到站指示灯sbitfmq=P1^1;//蜂鸣器sbite=P2^2;//使能sbitrw=P2^1;//读写sbitrs=P2^0;//数据/命令sbitbusy=P0^7;//检测忙ucharcodedis1[]="AAAAAAA";//站点内容可更新或增加ucharcodedis2[]="BBBBBBB";ucharcodedis3[]="CCCCCCC";ucharcodedis4[]="DDDDDDD";ucharcodedis5[]="EEEEEEE";ucharnum[]="WelcometoYanTai";/*******延时*********/voiddelay(uintn){uinti;for(;n>0;n--)for(i=200;i>0;i--);}/*******判断是否忙*******/voidcheck(){rs=0; rw=1; //读e=1; port=0x00; e=1; while(busy); e=0;}/*******写指令******/voidsend(ucharcommand){check(); rs=0; //指令 rw=0; //写e=0; port=command; e=1; _nop_();_nop_(); e=0; //写入指令}/********写数据********/voidwrite(uchardat){check(); rs=1; //数据 rw=0; port=dat; e=1;_nop_();_nop_(); e=0;}/********光标位置*********/voidpos(uintp){send(p|0x80);//第一行第一个0x80;}/**********初始化*********/voidinit(){send(0x38);//8位数据,双列,5*7字形delay(1);send(0x0c);//开0x08关delay(1);send(0x06);//地址增加一delay(1);send(0x01);//清屏delay(1);}voidmain(){inti=0,j=0,k=0,s=0;ucharn;init();delay(10);pos(0x00);delay(1);//或者用i=0,删除后会发现不能显示第一个数。for(n=0;n<18;n++){write(num[n]);delay(1);}while(1){if(P32==0){j++; if(j==1) {loop1:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop1; } s=0; pos(0x40); delay(1);for(n=0;n<9;n++){write(dis1[n]); delay(5);} }if(j==2) {loop2:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0; if(s<=7) gotoloop2; } s=0; pos(0x40); delay(1); for(n=0;n<9;n++) {write(dis2[n]); delay(5); } } if(j==3) {loop3:{s=s+1; led=0; fmq=1; delay(100); led=1; fmq=0;

温馨提示

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

评论

0/150

提交评论