




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计用纸 基于单片机的公交报站系统的设计毕业论文目 录第一章. 绪论11.1 公交报站系统的现状与发展方向11.2 公交报站系统设计的意义11.3 公交报站系统设计的任务及要求11.4 公交报站系统设计研究内容2第二章.公交报站系统方案设计22.1 公交报站系统设计思路22.2 公交报站系统方案比较和选择22.2.1 方案一22.2.2 方案二32.2.3 方案选择3第三章.公交报站系统硬件设计53.1 主控电路设计53.1.1 AT89C51单片机的介绍53.1.2 振荡器电路设计73.1.3 复位电源电路设计83.2 语音输出电路脉设计103.3 LCD1602液晶显示电路设计143.3.1 LCD液晶显示器件介绍143.3.2 LCD液晶显示流程图163.3.3 LCD1602液晶显示电路设计17第四章 软件设计184.1 系统程序流程图184.2 程序子函数模块代码20第五章 系统仿真与调试255.1 系统的仿真255.2 系统调试27结束语28参考文献29附录 程序清单30致谢 37共 39页 第 1页第一章 绪 论 随着科学技术的日益发展和进步,城市化进程的加快,公共交通作为城市的基础设施之一,是绝大多出行者的首选交通方式。为了使得人们特别是为外来旅游、出差、就医、工作等急需了解本地的公交路线的人提供高效、方便、快捷的公交系统,使他们能够方便的获得自己所需要的各种信息,以此来减少各种不必要产生的交通流量,缓解交通压力,提高公交车的运作效率,由此公交车自动报站系统便得到了快速发展。在计算机还未普及之前公交车报站管理都是有工作人员人工报站的方式来操作的。随着社会的进步和计算机的快速发展,便有了公交车自动报站系统的出现。语音报站系统在公交车上的广泛使用,这在相当大的程度上免除了乘务人员沿途报站的麻烦,防止了错报、漏报,给许多不熟悉公交线路的乘客带来了方便。1.1 公交报站系统的现状与发展方向公交车报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。目前公交车报站有三种方式,一种是利用GPS全球卫星定位系统的公交车报站系统,在司机座位后面隔板上,安装了一台15英寸的液晶电视和 GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没听清报站的话,通过显示屏,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音;驾驶员也可以通过相应的工具进行回复。目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站的方式,而它们都离不开司务人员,加大司乘人员的工作强度。手动电子报站一般有司机或者乘务员控制,经常出现错报,误报的情况。城市公共交通是市民出行的主要交通工具之一。提供舒适,安全、便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是不断追求的目标。1.2 公交报站系统设计的意义近年来单片机技术迅猛发展,广泛应用于诸多领域,在公交事业上已经运用单片机来实现公交报站这项功能。但由于现在的公交车大部分还是采用的人工手动控制的报站器,这不但影响了公交司机的正常驾驶,分散了驾驶员的注意力,同时也加重了他的工作的负担。不过这相对于以前的人工报站已经有了大的提高,但同时由于人工控制就存在着差错,给人们的出行带来不便。为了使大家的生活更加便捷,让公交车驾驶员的工作量能有效减轻,减少报站出错等的问题,故运用单片机技术、语音芯片技术、无线收发技术以及液晶显技术溶于一体设计出既能手动又能自动报站的公交语音自动报站系统,使每辆公交车都能准确无误的实现报站,让每位乘客准确知道自己的位置。1.3 本设计的任务及要求本设计主要设计一种用单片机设计公交车报站系统。利用AT89C51单片机控制语音芯片ISD1700语音芯片模块来控制播报站点信息,站点信息则通过LCD液晶屏显示出来。该设计可以模拟人声音进行报站和预报站;能准确报站,可及时更新。本设计要求利用AT89C51作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、LCD显示电路、电源电路等。1.4 设计研究内容 根据对公交报站器的调研,本设计主要研究一种采用单片机来设计既能手动又能自动报站的公交语音自动报站系统。此设计主要采用AT89C51单片机、LCD显示模块、ISD1700语音芯片来设计本公交报站系统。 第二章 系统方案设计2.1 系统设计思路本系统采用两种工作模式,分别为自动模式和手动模式。本次设计采用一个AT89C51单片机作为接收端的控制器。在每个站台上安装上无线发射装置,信号由无线发射头通过编码芯片不断向一定半径范围内发射无线信号。而公交车上则安装主体器件。包括LCD液晶显示模块、无线接收识别模块以及语音播报模块等。无线接收识别模块由无线接收头通过解码芯片解码接收到的信号。C51对无线接收模块的端口进行扫描,当公交车即将到站进入信号范围时,端口电平发生改变,C51识别到后先调用语音芯片内部播放指针,让其指向预置的数据段,并进行播报。同时改变LCD的显示内容,将下一站的站名进行更新。接着下车指示灯亮起,通知到站乘客下车。车子离站台后信号消失,指示灯熄灭。2.2 系统方案比较和选择2.2.1 方案一 公交车站自动报站器的设计,对车轮轴的转角的脉冲进行计数,将计数值与预置值对比,即可确定报站时刻,达到准确自动的目的。以AT89C51为主控芯片,对外来脉冲计数,结合语音芯片ISD1700输出语音。系统由脉冲检测、脉冲计数、CPU控制、控制信号、语音芯片、输出显示等组成。原理框图如图21所示。音频播放电路语音芯片输出显示CPU控制控制信号 脉冲计数脉冲检测图21 原理框图1. CPU控制:程序中将计数值于预置值进行比较,判断是否到站,当到站时就输出信号控制语言芯片进行报站。 2. 控制按键:用于手动控制、手动调整、预置值的输入等。 3. 语言芯片:由专用语音芯片ISD1700组成,可擦写,便于在不同公交线上使用。 4. 输出显示:LCD液晶屏显示。 5. 预置存储:采用两种方式存储,一种是在烧写器上将数据写入,另一种是在车上,单片机处于输入状态,车辆行驶一遍,将站与站之间的脉冲数写入片内。2.2.2 方案二利用8031单片机作为CPU来进行总体控制,当汽车到达某站时,汽车司机通过键盘来控制本系统进行工作,并且,系统将使用状态指示电路,向司机指示出当前的行驶方向及站号。原理图框图如图22所示。语音合成电路LED点阵显示电路8031小系统键盘状态指示电路语音输入输出电路图2-2 原理框图本系统使用8031作为CPU,由CPU去控制语音芯片,使系统在8031的控制下工作运行。当系统进行语音再生时,由CPU控制语音合成电路中的语音芯片来读取其外接的存储器内部的语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。CPU同时通过程序读取汉字信息,送入LCD屏显示电路来进行站点信息提示。当系统进行语音录制时,语音信号通过语音输入电路输入给语音合成电路中的语音合成芯片,由语音合成芯片进行数据处理,并将生成的数字语音信息存储到语音存储芯片中,从而建立语音库。2.2.3 方案选择将方案一与方案二进行比较,方案二是采用8031单片机控制,通过键盘来控制报站时刻,需要全人工员手动控制,比较繁琐。所以本课题决定选用方案一,它使用AT89C51作为主控制芯片,通过对里程的计数来控制报站时刻,无需人工控制,选用的语音芯片是美国ISD公司的ISD1700,该芯片与其它语音芯片相比较,其语音音质好,录放时间长。 第三章 系统硬件设计3.1 主控电路设计公交车报站系统主要由四个部分组成,即主控电路、显示电路、语音电路以及电源电路。3.1.1 AT89C51单片机的介绍AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含有4K bytes的可反复擦写的只读程序存储器和128的随机存取数据存储器,器件采用AEMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C51的封装采用双列直插式封装(DIP),其外部含有40个引脚,如下图所示:图3-1 AT89C51引脚图VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,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的一些特殊功能口,如下表所示: 表3-1端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外部中断1)P3.4T0(定时/计数器0外部输入)P3.5T1(定时/计数器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3.1.2 振荡器电路设计89系列单片机的内部振荡器电路如图32所示,由一个单级反相器组成。XTAL1为反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要在XTAL1和XTAL2引脚上外接一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,如图34示,此方法称为内部方式。 另一种使用方法如图33示,由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用图34所示的方法,这种方式的结构紧凑,成本低廉,可靠性高。 振荡器的等效电路如图34上部所示。在图中给出了外接元件,即外接晶体及电容C1,C2,并组成并联谐振电路。在电路中,对电容C1和C2的值要求不是很严格,如果用高质的晶振,则不管频率为多少,C1,C2通常都选择20nF。有时,在某些应用场合,为了降低成本,晶体振荡器可用陶瓷振荡器代替。如果使用陶瓷振荡器,则电容C1,C2的值取47pF。XTAL2XTAL1内部定时/PD400D1D2Q1RfQ2VCCQ3Q4XTAL1XTAL289系列单片机GND内部定时VCC/PDRf石英晶体或陶瓷振荡器C1C2 图3-2 AT89C51单片机内部振荡器电路XTAL2XTAL1GNDNCCMOS门外部振荡信号 图3-3 外部时钟接法 图3-4 片内振荡器等效电路通常,在单片机中对所使用的振荡晶体的参数要求如下: ESR(等效串联电阻):根据所需频率按图36选取。 C0(并联电容):最大7.0pF。 CL(负载电容):30pF+3pF。 通常,其误差及温度变化的范围要按系统的要求来确定。6005004003002001000 4 8 12 16 图35 ESR与频率的关系曲线 在本设计中,采用的是内部方式,即如图34所示,在XTAL1和XTAL2引脚上外接一个12MHZ的晶振及两个20nF的电容组成。3.1.3 复位电源电路设计89系列单片机与其他微处理器一样,在启动的时候都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,则CPU就可以响应并将系统复位。 1、 手动复位手动复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。由于人的动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位的时间要求。手动复位的电路如图36所示。 Vcc AT89C51RST GND8.2k10uF+Vcc 图3-6 手动复位电路2、 上电复位AT89C51的上电复位电路如图37所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。上电复位的过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平信号必须维持足够长的时间。 上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。 在图37的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。 如果系统在上电时得不到有效的复位,则在程序计数器PC中将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。 VccAT89C51RST8.2k10uF+VccGND图37 上电复位电路 3、 复位后寄存器的状态当系统复位时,内部寄存器的状态如表31所列,即在SFRS中,除了端口锁存器、堆栈指针SP和串行口的SBUF外,其余的寄存器全部清0,端口锁存器的复位值为0FFH,堆栈指针值为07H,SBUF内为不定值。内部RAM的状态不受复位的影响,在系统上电时,RAM的内容是不定的。专用寄存器复位值专用寄存器复位值PC0000HTCON00HACC00HB00HPSW00HSP07HDPTR0000HP0-P3FFHIP00000BIE000000BTMOD00HTH000HTL000HTH100HTL100HSCON00HSBUF不定PCON(CHMOS)00000B表32 各特殊功能寄存器的复位值在本设计中复位电路采用的是上电复位,即如图37所示。 3.2 语音输出电路脉设计ISD1700是华邦 ISD公司2007年新推出的单片优质语音录放电路,该芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示, 双运作模式,以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。 1、 特点:(1)可录、放音十万次,存储内容可以断电保留一百年(2)两种控制方式,两种录音输入方式,两种放音输出方式(3)可处理多达 255 段以上信息(4)有丰富多样的工作状态提示(5)多种采样频率对应多种录放时间(6)音质好,电压范围宽,应用灵活2、电特性:(1)工作电压: 2.4V-5.5V, 最高不能超过 6V(2)静态电流: 0.5 - 1 A(3)工作电流: 20mA图3-8 ISD1700引脚图用户可利用震荡电阻来自定芯片的采样频率,从而决定芯片的录放时间和录放音质。芯片的采样率可以通过外部振荡电阻来调节:采样频率(KHZ )1286.45.34ROS阻值( K )6080100120160表3-33、 独立按键工作模式 ISD1700的独立按键工作模式录放电路非常简单,而且功能强大。不仅有录、放功能,还有快进、擦除、音量控制、直通放音和复位等功能。这些功能仅仅通过按键就可完成。在按键模式工作时,芯片可以通过LED管脚给出信号来提示芯片的工作状态,并且伴随有提示音,用户也可自定4种提示音效。 录音操作:按下REC键,/REC管脚电平变低后开始录音,直到松开按键使电平拉高或者芯片录满时结束。录音结束后,录音指针自动移向下一个有效地址。而放音指针则指向刚刚录完的那段语音地址。放音操作 :放音操作有两种模式,分别是边沿触发和电平触发,都由PLAY管脚触发。快进操作:点按一下FWD按钮将FWD端拉低,会启动快进操作。快进操作用来将播放指针移向下一段语音信息。当播放指针到达最后一段语音处时,再次快进,指针会返回到第一段语音。当下降沿来到FWD端时,快进操作还要决定于芯片当时的状态。擦除操作:擦除操作分为单段擦除和全体擦除两种擦除方式。复位操作:如果用RESET控制此管脚,建议RESET管脚与地之间连接 一个0.1F电容。当RESET被触发,芯片将播放指针和录音指针都放置在最后一段语音信息的位置。 音量操作:点按一下VOL键将VOL管脚拉低会改变音量大小。每按一下,音量会减小一档,再到达最小档后再按的话,会增加音量直到最大档,如此循环。总共有8个音量档供用户选择,每一档会改变4dB 。复位操作会将音量档放在默认位置,即最大音量。FT 直通操作:按住FT键将FT管脚持续保持在低电平会启动直通模式。出厂设定的是在芯片空闲状态,直通操作会将语音从Analn端直接通往喇叭端或AUD输出口。在录音期间按下FT键,会同时录下Analn进入的语音信号。4、管脚功能说明:管脚名称PDIP/SOIC管脚TSOP管脚引脚说明VCCD122数字电路电源 /LED223LED 指示信号输出/RESET324芯片复位MISO425SPI 接口的串行输出。MOSI526SPI 接口的数据输入端口。 SCLK 627SPI 接口的时钟。/SS 7 28为低时,开启 SPI 接口。 VSSA81模拟地AnaIn92芯片录音或直通时,辅助的模拟输入。MIC+ 103麦克风输入 + MIC- 114麦克风输入 - VSSP2125负极 PWM 喇叭驱动器地 SP- 136喇叭输出 - VCCP147PWM 喇叭驱动器电源 SP+ 158喇叭输出 + VSSP1 169正极 PWM 喇叭驱动器地 AUD/AUX1710辅助输出,用来输出一个 AUD 或 AUX AGC1811自动增益控制/VOL 1912音量控制 ROSC2013振荡电阻,决定芯片的采样频率 VCCA2114模拟电路电源/FT2215在独立芯片模式下,当 FT 一直为低, Analn 直通线路被激活。/PLAY 2316播放控制端/REC2417录音控制端 /ERASE2518擦除控制端 /FWD2619快进控制端 RDY / INT2720一个开路输出。VSSD 2821数字地 3.3 LCD1602液晶显示电路设计3.3.1 LCD液晶显示器件介绍字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,市面上字符液晶绝大多数是基于HD44780液晶芯片,HD44780是带西文字库的液晶显示控制器,用户只需要向HD44780送ASCII的字符码,HD44780就按照内置的ROM点阵发生器自动在LCD液晶显示器上显示出来。所以,HD44780主要适用于显示西文ASCII字符内容的液晶显示。1602字符型LCD能够同时显示16*2即32个字符(16列2行)。其内置192种字符(160个5*7点阵字符和32个5*10点阵字符),具有64个字节的自定义字符RAM,可自定义8个5*8点阵字符或4个5*11点阵字符。1602通常有14条引脚线或16条引脚线两种,多出来的2条线是背光电源线和地线,带背光的比不带背光的略厚,控制原理与14脚的LCD完全一样,是否带背光在应用中并无差别。本设计中采用带背光14引脚线的。其主要技术参数为:图3-9 LCD1602引脚图VSS:电源地(GND)。VDD:电源电压(5V)。VEE:LCD驱动电压,液晶显示器对比度调整端。使用时可以通过一个10K的电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。RS:寄存器选择输入端,选择模块内部寄存器类型信号。RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。RS=1,无论进行读操作还是写操作均指向数据寄存器。R/W:读写控制输入端,选择读/写模块操作信号。R/W=0,读操作;R/W=1,写操作。本设计中只需往LCD里写数据即可,写时序见图3-4。E:使能信号输入端。读操作时,高电平有效;写操作时,下降沿有效DB0DB7:数据输入/输出口,单片机与模块之间的数据传送通道。选择4位方式通讯时,不使用DB0DB3。1602模块内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。控制器接受来自MPU的指令和数据,控制着整个模块的工作。主要由显示数据缓冲区DDRAM,字符发生器CGROM,字符发生器CGRAM,指令寄存器IR,地址寄存器DR,忙标志BF,地址计数器AC以及时序发生电路组成。模块通过数据总线DB0DB7和E、R/W、RS三个输入控制端与MPU接口。这三根控制线按照规定的时序相互协调作用,使控制器通过数据总线接受MPU发来的数据和指令,从CGROM中找到欲显示字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符。控制器还可以根据MPU的指令,实现字符的显示,闪烁和移位等显示效果。CGROM内提供的是内置字符码,CGRAM则是供用户存储自定义的点阵图形字符。模块字符在LCD显示屏上的显示位置与该字符的字符代码在显示缓冲区DDRAM内的存储地址一一对应。LCD1602模块内部具有两个8位寄存器:指令寄存器IR和地址寄存器DR,用户可以通过RS和R/W输入信号的组合选择指定的寄存器,进行相应的操作。RSR/W操 作00将DB0DB7的指令代码写入指令寄存器IR中01分别将状态标志BF和地址计数器AC内容读到DB7和DB6DB010将DB0DB7的数据写入数据寄存器中,模块的内部操作将数据写到DDRAM或者CGRAM中的数据送入数据寄存器中11将数据寄存器内的数据读到DB0DB7,模块的内部操作自动将DDRAM或者CGRAM中的数据送入数据寄存器中表3-5 寄存器选择组合1602提供了较为丰富的指令设置,通过选择相应的指令设置,用户可以实现多种字符显示样式。下面仅简要介绍本次设计中需要用到的一些指令设置。清屏指令 Clear display清显示指令将空位字符码20H送入全部DDRAM地址中,时DDRAM中的内容全部清除,显示消失,地址计数器AC=0,自动增一模式。显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。清屏指令码见表3-6。RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001表3-6 清屏指令码进入模式设置指令 Entry mode set 见表3-7,进入模式设置指令用于设定光标移动方向和整体显示是否移动。RSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DS表3-7 模式设置指令码显示开关控制指令 Display on/off control 指令码见表3-8,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。RSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB表3-8 显示开关控制指令码D:显示开/关标志。D=1,开显示;D=0,关显示。关显示后,显示数据仍保持在DDRAM中,开显示即可再现。C:光标显示控制标志。C=1,光标显示;C=0,光标不显示。不显示光标并不影响模块其他显示功能。显示5*8点阵字体时,光标在第八行显示;显示5*10点阵字符时,光标在第11行显示。B:闪烁显示控制标志。B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。功能设置指令 Function set 功能设置指令用于设置接口数据位数,显示行数以及字形。指令码见表3-9。RSR/WDB7DB6DB5DB4DB3DB2DB1DB000001DLNF*表3-9 功能设置指令码DL:数据接口宽度标志。DL=1,8位数据总线DB7DB0;DL=0,4位数据总线DB7DB4,DB3DB0不使用,此方式传送数据需分两次进行。1602模块内部设有上电自动复位电路,当外加电源电压超过+4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。初始化大约持续10ms左右。但是需要特别注意的是,倘若供电电源达不到要求,模块内部复位电路无法正常工作,上电复位初始化就会失败。因此,最好在系统初始化时通过指令设置对模块进行手动初始化。3.3.2 LCD液晶显示流程图LCD液晶显示是通过调用初始化程序,写数据子程序,写指令子程序,地址转换子程序,读忙状态子程序以及延时子程序组合。具体如下:调用忙子程序调用延时子程序LCD写指令子程序启动写数据清屏读写线置0LCD写指令子程序启动使能控制线调用延时子程序传输数据设定方向及位移 调用延时子程序返回LCD写指令子程序调用延时子程序返回 图3.10 写数据子程序流程图 LCD主要负责将各个站台的名称显示出来,首先由CPU中央处理器调用延时子程序,然后传入LCD,LCD首先清屏,清屏结束后LCD读取写指令子程序,并调用延时子程序,将方向和位移存入LCD,再利用LCD显示出来,在汽车运行过程中,会出现忙碌状态,汽车上会有自动提醒系统,首先由CPU写入忙碌时报警的程序,再由LCD显示出来,3.3.3 LCD1602液晶显示电路设计图3.11 LCD1602液晶显示电路设计 程序存入AT89C51单片机系统,汽车会根据行驶的路程方向等条件判别到了哪个站,然后单片机读取相对应的子程序传入LCD,LCD会显示相应的站台,并提示下一站的名字第四章 软件设计4.1 系统程序流程图图4-1 系统程序流程图 首先打开程序,程序自动显示下一站的名称,由公交司机确定采用自动还是手动程序,如果采用自动模式,由无线接收扫描是否到站,如果确定到站,则语音播报当前到站信息,LCD显示更新下一站的信息,同时下车指示灯亮,规定时间结束后,程序跳转到运行模式,再重复之前的步骤,若采用手动模式,那就由司机确定站台名称,并按下按键,出现语音播报,液晶显示还有下车指示灯亮,确定下车指示灯灭的情况下重复运行模式。4.2程序子函数模块代码按键扫描驱动该模块为语音芯片内部集成模块。无线接收端扫描函数该函数采用while语句判断P31端口是否出现下降沿,如果出现下降沿则往下执行,如果没有则等待。while(P31); delay(); 红外发射模块(实验室演示用)void send() re=0;TMOD=0x02; EA=1;TH0=0xf3;TL0=0xf3;ET0=1;void ttl(void)interrupt 1re=re;通过设定采用定时器/计数器0以方式2工作。定时/计数方式2是将两个8位计数器THx、TLx分成独立的两部分,组成一个8位可自动再装入的定时器/计数器。由TLx作为8位计数器,THx作为计数初值寄存器,设置初值时同时送THx和TLx,启动后,当TLx计数满回0产生溢出,不仅置为TFx,向主机请求中断,并且控制THx中的初值重新装入TLx中,继续下一轮计数。通过软件只需设置一次初值,启动后可连续无限次定时/计数运行,上一次计数结束,立即继续下一次,中间不会丢失计数信号。重新再装入将不影响THx的内容7。系统采用12MHz晶振,时钟周期为1/12 us,机器周期则为1us。中断计数时间为(FF-F3)*2*1us=12us。如果忽略指令的执行时间,那么re的电平改变周期为24us。发射频率为1/24us41.7KHz。语音模块该模块采用单片机端口输出负脉冲信号模拟按键信号对语音芯片进行控制。P24=0;delay();P24=1;delay();16P25=0;delay();P25=1;本模块程序流程如图4-3接收到信号P24输出一个负脉冲,语音芯片内部指针指向本站点语音段头P25输出一个负脉冲,播放当前指针指向的语音段结束图4-2语音芯片运行流程 语音芯片接收到信号,24管脚输出一个负脉冲,语音芯片内部指针指向本站点语音段头,25管脚输出一个负脉冲,播放当前指针指向的语音段,然后结束语音播报液晶显示模块1、内部等待函数LCD_Wait(void)unsigned char LCD_Wait(void)LcdRs=0; LcdRw=1; _nop_();LcdEn=1; _nop_();while(DBPort&0x80); LcdEn=0;return DBPort;2、向LCD写入命令或数据子函数LCD_Write()void LCD_Write(bit style,unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();LcdEn=1; _nop_();LcdEn=0; _nop_();LCD_Wait();3、设置显示模式子函数LCD_SetDisplay()该函数可以根据表3-2设置显示的开关、光标的有无、光标是否闪动。void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND,0x08|DisplayMode); 4、设置输入模式子函数LCD_SetInput()该函数可根据表3-2设置画面是否平移以及平移的方向。void LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND,0x04|InputMode);5、初始化LCD子函数LCD_Initial()void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);6、显示定位子函数GotoXY()void GotoXY(unsigned char x,unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);7、显示字符子函数Print()void Print(unsigned char*str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;delay1();站点信息设置及调用用数组定义站点信息字符串:uchar code dis1=A zhan;uchar code dis2=B zhan ;uchar code dis3=C zhan ;uchar code dis4=D zhan ;uchar code dis5=E zhan ;uchar*p;用case语句判断要显示的站点switch(i)19case 0:p=dis1;break;case 1:p=dis2;break;case 2:p=dis3;break;case 3:p=dis4;break;case 4:p=dis5;break; 第五章 系统仿真与结果5.1 系统的仿真经过使用proteus软件的画电路仿真图结合keil c 软件的编写程序,最终系统的简单仿真出来了。图5-1 系统初始化图5-2 接到信号后图5-3 语音报站图5-4 到站门开图5-5 车子离开由仿真图可以看出,当程序下载至C51单片机中后即可运行电路仿真图,开始运行,当系统接收到信号后D2亮,语音芯片下移一位,此时D3灯亮,进行语音报站,LCD液晶屏显示下一站点信息。到站时指示灯D1亮,车子离站后指示灯灭。5.2 电路调试 按照上面的步骤,系统在正常的情况下安装并焊接完成。在调试前,先检测系统的VCC和GND之间是否短路和断路现象,如果有,用万用表检查故障原因并维修好,直接把故障消除。然后按照设计结构电路分别对各个电路结构进行检测。 1)前工序做好以后,接上+5V的电源,观察电源指示灯是否正常。如果正常点亮,则说明电源部分正常,否则检测电源电路故障,直到电源指示灯正常点亮。 2)单片机控制电路、液晶显示器、按键部分。接上电源,将单片机下载好编写的程序,再根据系统的控制要求对各部分进行检测,检测要求包括AT89S51单片机正常工作、时间和温度的显示是否正常、按键的控制是否符合电路的控制要求。 3)语音电路的检测:在接通电源的情况下,接上扬声器,芯片录音时,将REC键按下,并录好音,再按下PLAY键,观察录好的音是否能够播放,如果能播放,再按下VOL键看看能否调节音量,能够调节,则说明电路正常。如果不能播放和调节音量,则应该维修电路,直到正常为止。对以上各个部分调节好以后。至此,系统的整个过程结束。否则,要对其相应的部分做维修处理,直到一切正常为止。结束语 经过一个多月的奋战,我的毕业设计公交车自动报站系统,终于即将完成了。最终系统实现了自动报站功能。通过这次论文设计让我对AT89C51单片机和一些陌生的器件LCD1602液晶芯片和ISD1700语音芯片有了一定熟知和了解。该设计的创新之处在于它应用89C51单片机的高速计数器端口进行脉冲计数,以距离来控制报站时刻。本系统功能强大,成本低,系统稳定,无需人工介入,语音音质好,很好的实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- QC/T 1228-2025汽车用有机发光二极管(OLED)照明光源试验方法
- 2025年室内设计师高级面试实战模拟题集详解
- 2025年面试食堂管理常见问题及答案
- 2025年安全生产安全培训手册题及答案
- 2025年机械工程初级面试题
- 2025年小学安全意识测试题及答案
- 2025年安全管理法规考试题集
- 机电运输知识培训内容课件
- 2025年金融市场分析师资格认证考试试题及答案解析
- 2025年学生防拐骗安全知识问卷及答案
- 中国成人急性淋巴细胞白血病诊断与治疗指南2024
- 第三届全国工业经济应用创新职业技能竞赛(供应链管理师赛项)考试题库(含答案)
- 写作《观点要明确》教学设计
- 医院清洁消毒灭菌原则与措施
- 2024年新沪科版八年级物理上册全册教学课件
- 沁园春雪教案
- 2024-2030年中国电动自行车市场前景调研及投融资风险趋势研究报告
- 吊篮施工安全技术交底
- 第七单元 专题突破9 聚焦变异热点题型-2025年高中生物大一轮复习
- 《高等数学教程》全套教学课件
- 2024年个人信用报告(个人简版)样本(带水印-可编辑)
评论
0/150
提交评论