基于LCD的出租车计价器系统_第1页
基于LCD的出租车计价器系统_第2页
基于LCD的出租车计价器系统_第3页
基于LCD的出租车计价器系统_第4页
基于LCD的出租车计价器系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、本文设计了一种基于LCD的出租车计价器系统。使用电机模拟车轮转动并用四个灯轮流点亮的间隔大小模拟电机的快慢作为计价的基准。系统采用8位STC89C5单片机作为主控芯片,LCD160液晶显示作为主输出设备,外加几个按键进行人机交互式操作。设定 启动停止清零等几种工作模式。能够智能计算并显示出里程数和总价数。该系统低功耗体 积小,反应时间短,抗干扰能力强,便于携带,人机交互界面友好,显示清晰,适用于各 种应用场合。关键词:STC89C5单片机;定时器;LCD1602液晶显示;wI:”.;:.:;-:.:"1、绪论 . 2、总体方案设计 . 3、硬件电路设计 . 3.1 单片机简介 3.2

2、 晶振复位电路 3.3 显示电路 3.4 按键电路 4、系统软件设计 . 4.1 编程软件介绍 4.2 主程序 5、系统综合调试 . 总结及课设体会 . 附录 . 错误!未定义书签。2344567789101112参考文献 . II基于LCD的出租车计价器系统1、绪论随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理 以及减少司机与乘客的纠纷出发,具有良好性能的计价器无论是对广大出租车司机朋友还 是乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大 ,用到的器件多,造成故障率高,难调试。而单片机相对来说功能强大,用较少的硬件和 适当的软件相互配合

3、可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,避免了机械开关带来的不稳定因素。本设计采用AT89C5单片机为主控器,设计一款多功能出租车计价器,该计价器通过 电机模拟车轮转动,具有暂停和清零功能,能实现按里程计算车价,能将运行时间、里程 、单价、起步价、总车价等相关信息在1602液晶显示器上综合显示,它比市场上的一些计 价器使用更方便,功能更全,显示更直观,而且系统稳定性好。2、总体方案设计方案一:采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振 电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过译码电路对数据进行译码,将译

4、码所得的数据送给 LCD160显示。图1数字电路控制原理图方案二:采用单片机控制。通过 C52单片机作为主控器,利用LCD160显示电路,采 用外部晶振作为时钟脉冲,通过按键可以方便调节。同时有电机驱动输出和电机转速测量 信号输入。图2单片机控制原理图方案一的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对 于模式的切换需要用到机械开关,时间久了会造成接触不良,功能不易实现。整体来讲, 性能不够稳定,电路也不实用。方案二相对来说功能强大,用较少的硬件和适当的软件相 互配合可以很容易地实现设计要求, 灵活性强,测速码盘测量的精度也高,可以通过软件 编程来完成更多的附加功能。综合设

5、计要求以及上述两种设计方案,最终选择方案二。3、硬件电路设计3.1单片机简介在本设计中,用到的是AT89C5的升级版AT89C52AT89C5是ATME公司生产的CMOS 八位高性能低功耗微控制器,硬件方面,是 40脚DIP封装,其中有32个外部双向I/O (输 入/输出)端口,同时内含2个16位可编程定时/计数器和1个全双工串行通信口,允许六个 中断源进行两级中断,自带片内振荡放大器和时钟电路,又具有低功耗的闲置和掉电模式 ;软件方面,兼容标准 MCS-5指令系统,不管是通过汇编语言还是 C语言都可以对其进 行方便的编程。相比最为基础的AT89C5,AT89C5具有性能上的优势。C51只有4

6、kB闪存的只读存储 器,而S52有8Kb,有更为充足的存储空间可用于程序设计。尤为重要的是,AT89C5系统内核内已经固化了 ISP监控程序,支持ISP(在系统编程),这样就可以有效地缩短开发 时间并降低开发成本。综上可知, AT89C5单片机可谓功能强大,可适用于许多控制领域 ,为嵌入式控制系统提供了灵活高效且廉价的处理方案,完全能够满足本设计的需要。3.2晶振复位电路该系统是由AT89C5芯片构成单片机最小系统,是出租车计价系统的核心部分,主要对各种信号及信息进行处理,并对电路进行控制。单片机最小系统主要由电源、复位、振 荡电路以及扩展部分等部分组成。单片机的置位和复位,都是为了把电路初始

7、化到一个确 定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态。我们采用按键复位电路,如图3所示,按键复位就是在复位电容上并联一个开关,当开关按下时 电容被放电、RST也被拉到高电平。而且由于电容的充电,会保持一段时间的高电平来使 单片机复位。单片机系统里都有晶振,全称叫晶体振荡器。它结合单片机内部电路产生单片机所 需的时钟频率,单片机晶振提供的时钟频率越高,单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率之上。如图3所示,AT89C5使用12MHz的晶体振荡器作为振荡源。由于单片机内部带有振荡电路,所以外部只要连接一个晶振和 两个电容即可,电

8、容容量一般在15pF至50 pF之间。电路中采用22 pF的瓷片电容。XIX1OnYS'.TA i_1 OUI-C3i=HHICRYSTAL30 .X I All 1XT AL 2RSTPSEN ALUZ EARO. 1/A RD.2/A RO.3/A RD RO.G/A m es/A F-O.7/A厂as2 2 2 2 2 > LF'LFtIB (JZ1<T; FB:3 12/1IM r»3.3/in u.r?3.G. Hl h応 尸 3 T/lATSfSiCzSS图3 STC89C52复位及时钟电路3.3按键电路如图4所示,有三个按键接在单片机的 P3

9、口上,分别为P3.2、P3.3、P3.4,当第一 个按键按下时,单片机检测到 P3.2 口为低电平,直到按键释放后才执行操作。此时,定 时器启动,继电器闭合,电机开始转动,系统开始工作,计时开始,显示器上秒表开始刷 新。同时,显示出起步价以及每公里单价。第二个按键按下时,定时器停止,继电器断开 ,电机停止转动,秒表停止在当前示数,里程数以及总费用停止变化,可以读取示数。第 三个按键按下时,执行清零操作,相当于出租车上的空车指示,此时,除了起步价和单价以外,其余示数全部清零。329r丄 34TTALE EAP1.(VT2 P1.1/T2EXP1 2P1.3P1.4P1.5P1.6P1 7P22/

10、A10P2 3M11P2.4/A12P2.5/A13P2.6/A1-4P2.7/A15P3.0/RXDP3.1/TXD P3 2/1NT0 P3.3/iKnTP3.4/T0P3-5EP3.G/WRP3.7/RD10卫1231415W17O0O_OOAT89C52<TEXT>图4按键电路图3.4液晶显示模块电路如图5所示,LCD160液晶显示器与单片机的接口电路,其中 P0口为液晶显示器的数 据输出口,en是液晶的使能端由P1.6控制,给高电平的时候液晶显示器使能。dula与wela 是P2.6与P2.7 口,这两个是开发板内部定义的数码管段码和位码锁存器74hc573的锁存端,由于

11、要液晶显示,所以为了防止数码管出现乱码影响整个出租车计价器系统显示,特意在程序中关闭了数码管的位锁存端,这样就相当于关闭了所有的数码管,即使P0口持续不断的输送数据,数码管也不会有任何显示。P0 口在单片机不断刷新的同时,不断送出不 同的数据供显示。l J1> SCTAL-IXTAL21PO.DjfAIDO PO.1/AD1 PO.2/AD2 PO.3/AD3PO.4<AD4 PO .SAADSPOlG/ADB1P2.0/A6* P2.1/A9P2.2/AHORSENP2.3/A11ALEP2.4/A12EAP2.5/AH 3P2.6/A14P2.7/A15P1 .O/T2P3.O

12、RXDP1 .1 JT2EXP3.1XTXDPI .2P3.2JWMTOP1 .3P3.3JHMT1P1 .4P3.4./TCIPI .5P3.S/THP1 .6P3.BA>MRP1 .7P3.7XRD23工34332呂If13aI I L*73- LTI -UE3 F_g 0 o q a 0 c a5图5 LCD1602液晶显示器电路图3.5电机控制模拟电路如图6所示,电机旋转由四个灯依次亮来模拟,这是由于在实验过程中发现单片机功率有限,在单片机系统工作时若电机同时转动则系统由于电压不足会出乱,所以采用模拟。在系统开始后,电机就跟着转动。PSEN ALEEAR2470R4470P1 0

13、/T2P1 1/T2EXP1.2P1.3PI AP1.5P1.6P1 7AT69C52图6电机控制电路图4、系统软件设计4.1编程软件介绍KEIL C51是美国KEIL Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易 学易用。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调 试器等在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起。运行KEIL软件需要 WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么KEIL 几乎就是你的不二之选,即使

14、不使用 C语言而仅用汇编语言编程,其方便易用的集成环 境、强大的软件仿真调试工具也会令你事半功倍。4.2初始化子程序在程序开始时,需要对一些参数以及寄存器设置数值或者是工作方式,称之为系统 初始化。在本系统设计中,如图8所示,包含几个部分。其中变量指代的是显示以及一些 标志位的变量初值。定时器初始化需要设置定时器的标号以及工作方式。在这里,定时器 0用的是定时,方式一 16位定时器,定时器1用的是计数方式一,16位计数器。液晶初始化 包含测忙以及显示方式设置。静态显示是指液晶需要将一些标志符号比如总价、单价等一 直显示在液晶上。在程序开始时,这些初始化程序只执行一次。图8初始化子程序框图4.3

15、秒表子程序如图9所示,定时器每50ms会产生一次中断,每一次中断后会把变量tt加1,当加到 20时,代表1秒时间到,这时秒表的个位变量加1,当加到10时,十位加1,同时个位清零 。通过路程的计算公式,结合实际情况,测量出的电机转速在乘以系数10,作为实际中车 轮的转速,然后乘以车轮的周长2米,最后乘以时间算出总的路程并显示。同样,总费用 也是在路程的基础上计算得出的,在 3公里以内,费用为8元,超出后每公里加收2元。图9秒表子程序框图4.4主程序如图10所示,系统开始后,先进行初始化和静态显示,这些程序只执行一次,而后 就进入到大循环中,循环检测按键,不断刷新液晶显示。当第一个按键按下以后,系

16、统开始工作,电机转动,定时器打开,模拟电机旋转的四个灯会轮流点亮,秒表刷新。当第二 个按键按下以后,定时器关闭,电机停止转动,定时器计数器全部关闭。当第三个按键按 下以后,系统清零,恢复到初始化后的初始状态。7基于LCD的出租车计价器系统图10主程序框图5、系统综合调试对照硬件原理图,在单片机开发板上实验如图 11所示。连接完毕后,向单片机烧写 程序,开机,然后按下第一个按键,发现系统运行不完全,秒表正常运行,只是液晶上在 电机转起来以后会出现乱码,继电器也不能正常吸合。经过检查发现是单片机功率限制, 不能带动所有器件同时工作,于是把电机的旋转通过四个灯的轮流点亮来模拟,发现很好 的解决了刚才

17、的问题。由上述调试现象可知,系统达到设计要求图11硬件实物图参考文献1 刘复华.单片机及其应用系统.北京:清华大学出版社,19922 李斌,董慧颖.可重组机器人研究和发展现状.沈阳工业学院学报,2000,19(4):23-273 马淑华.单片机原理与接口技术.北京邮电大学出版社,2007, 84 张义和.例说51单片机.人民邮电出版社,2008,4总结及课设体会在本次设计中,我们对专业课的学习有了新的认识,以前上课注重理论的比较多, 真正自己动手做的时候比较少,所以在设计的过程中,遇到了很多的困难。但是还是在老 师和同学的帮助以及自己的不懈努力下成功地完成了本次设计。通过对该课题的研究,加深对

18、所学知识的理解,提高对课外知识的学习能力,增强 知识的应用能力,提高解决实际问题的能力, 培养自我创新意识。积累实践经验,为以后 的发展打下基础,也为以后我们自己在这方面的发展打下基础, 并能够在这方面培养自己 的兴趣。在设计中我们必须首先熟悉和掌握单片机的结构及工作原理,单片机的接口技术及 相关外围芯片的外特性,控制方法。以单片机核心的电路设计的基本方法和技术。单片机 不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲: 一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供 了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。课

19、程设计能培养学生综合运用所学知识,提高发现,提出,分析和解决实际问题的能 力,是对学生实际工作能力的具体训练和考察过程。通过这次设计,无论从选题到定稿,从理论到实践都使我学到了很多东西,它不仅 可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与 实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能 力和独立思考的能力。最后,特别感谢在两周课设里老师给予的技术上和硬件上的大力支持,同时课程设 计也大大提高了我的实际运用能力。2013年12月27日完成11附录1电路原

20、理图LCD11SEU1AOA?x.iPCI IVAbDI P 口 .KADIXTAU!FQADI RQAOSFD.MO*PDADSPCI ja*ADSpz.if.PZAIDPSE1IPZAHIALEPZ.AIZ0FZA13 FZJffAUF2.TM19P1i iyT?Bfpi imfBiP12 FUPlIffTDI faaUTTFt.* M些P3£fT1FlfiFl-STiWF1JP3.7/ffF31-du®"M m 口 L M Fl *Ioo头文件附录2程序清单*#in clude<reg52.h>#in clude<math.h> #i

21、 nclude<stdio.h>#i nclude<i ntri ns.h>宏定义*#defi ne uchar un sig ned char #defi ne uint un sig ned int#defi ne shuju P0 /LCD1602 P0 输出显示数据sbitrs=P2A1;/LCD1602忙碌检测sbitrw=P1A5;/LCD1602读写控制sbiten=卩1八6;/LCD1602使能端sbitwela=P2A7;/数码管位选锁存端sbitkey1 =P3A2;/启动命令sbitkey2 =卩3八3;/停止命令sbitkey3 =卩3八4;/清

22、除键sbitkey4 =卩3八5;/空车sbitLED0=P1A0;/定义LED端口sbitLED1=P1A1;/定义LED端口sbitLED2=P1A2;/定义LED端口sbitLED3=P1A3;/定义LED端口位定义*定义变量*uchar flag; / 标志位uchar flag1;uchar flag2;码表uchar table='0','1','2',3,'4','5','6',7',8,9; /uchar tt; / uchar pp; / uchar a; / uchar

23、b; / uchar c; /计时标量每50ms加1 计时标量每50ms加1 秒个位秒十位分个位uchar d; /分十位uchar e;/ 车轮转速(模拟为恒速)轮周长1.99m,转速8.378r/s/ 取整为 9r/s ,计算得速度约64.476km/hfloat f; /里程数(Km为简化运算以下全部取整数浮点数int g; /千米数uchar j; /千米个位uchar k; /千米十位uchar h; /总费用uchar hge;/总费用个位uchar hshi;/总费用十位/查询知直径634.5mm 按匀速60Km/h,合16.7m/s ,uchar count;unsigned

24、char i; /定义一个无符号字符型局部变量i 取值范围 0255延时函数*void delayus(uchar t)while(-t);延时函数*void delay(uchar t) /大致延时 1mSwhile(t-)delayus(235);delayus(235);电机灯代替*void dianji(void) if (flag1=1)switch(pp)case 5: LED0=0;break;基于LCD的出租车计价器系统case 10:LED1=0;break;case 15:LED2=0;break;case 20:LED3=0;break;default:P1=0xff;

25、break;else P1=0xff;*秒表计时*void jishi(void)/ 1 秒到/ 清零if(tt=20)tt=0;a+;if(a=10)a=0;b+; if(b=6)b=0;c+;if(c=10) c=0;d+;17里程数计算*计算公式 电机一圈车轮十圈void licheng(void)f=count*(a+10*b+60*c+600*d)*20; /f=e*(a+10*b+60*c+600*d)*2; /计算公式 电机一圈车轮十圈g=(int)f;/ 格式转换j=(g/(1000)%10; /float不能求余k=(g/(1000)/10;费用计算*void money(v

26、oid)if(j<=3)&&(k=0)/ 三公里以内if(flag=0)/ 标志位清零elseh=8;elseh=0;h=8+(j-3)*2+k*20;/费用计算公式hge=h%10;hshi=h/10;定时器初始化 *TMOD |= 0x51;/使用模式1, 16位定时器,使用"|TH0=(65535-50000)/256;TL0=(65535-50000)%256;TH1=0xFF;TL1=235;EA=1;ET0=1;ET1=1;/*/给定初值从235计数到255总中断打开定时器中断打开定时器中断打开测丿忙信号 *IIbit cema ng(void) s

27、huju=0xff;rs=0;rw=1;en=0;_nop_();en=1;return (bit)(shuju & 0x80);LCD *void comma nd(uchar com) while(cema ng();rs=0;rw=0;en=1; shuju=com;_nop_();en=0;基于LCD的出租车计价器系统*LCD初始化*void LCD_Init(void)command(0x38); / delay(5);command(0x38); delay(5);command(0x38); delay(5);command(0x38);command(0x08); /c

28、ommand(0x01); / command(0x06); / delay(5);command(0x0C); /显示模式设置/*写数据至void lcddata(uchar dataa)显示关闭显示清屏显示光标移动设置显示开及光标设置LCD *while(cemang(); / 忙则等待rs=1;rw=0;en=1;shuju=dataa;_nop_();en=0;清屏函数*void lcdclear(void) command(0x01);delay(5);*写一个字符数据到指定的目标*void write_Char(uchar x,uchar y,uchar z)if (y = 0)comma nd(0x80 + x);elsecomma nd(0xC0 + x); lcddata(z);*写入字符串函数 *void writestri ng(uchar x,uchar y,uchar *s) if (y = 0)comma nd(0x80 + x);elsecomma nd(0xC0 + x);while (*s)lcddata( *s);s +

温馨提示

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

评论

0/150

提交评论