ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:172.93KB ,
资源ID:13945419      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13945419.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机出租车计价器的设计.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

51单片机出租车计价器的设计.docx

1、51单片机出租车计价器的设计 摘要出租车计价器是出租车营运收费的专用只能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。出租车计价器计费是否准确是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。在随着科技的发展,现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,

2、计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。本次设计是采用AT89C52单片机为中心,外加霍尔传感器行对里程进行测距,由于实验室的限制的问题所以改用按键代替霍尔传感器,实现对出租车计价统计,输出采用LCD1602A的出租车计价器。关键字 :51系列单片机,霍尔传感器,LCD1602A前 言随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。用更加精良的计价器来为乘客提供更加方便快捷的服务。凡乘

3、过出租车的人都知道,只要汽车开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如5KM)计费数字显示开始从起步价(如5元)增加。当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。汽车继续行驶时,停止计算等候费,继续增加里程计费。到达目的地,便可按显示的数字收费。 汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个

4、应用价值的。 第一章 出租车计价系统的设计要求与设计方案1.1 基本设计要求本出租车自动计费,上电后显示最初的起步价,里程计费单价,等待时间计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。同时具有运行,暂停,停止等状态,可以显示运行的时间,同时可以显示暂停的时间,具有累加功能,暂停和运行时间在暂停和运行前一次的状态上计时。出租车停止后能够显示行驶的总费用。1.2 性能指标费用的计算是按行驶里程收费。设起步价为5.00元。1、当里程3km时,每公里按1.3元计费3、等待累计时间2min时,按1.5元/min计费1.3 显示功能1、显示行驶里程:用四位数字显示,显示方式为“XXX

5、X”,单位为km。计程范围0-99km,精确到1km。2、显示等候时间:用两位数字显示,显示方式为“XX”,单位为min。计时范围0-59min,精确到1min。3、显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。计价范围0-999.9元,精确到0.1元。第二章 出租车计价器系统的硬件设计2.1 出租车硬件框图图2-1系统的硬件框图2.2 AT89C52单片机及引脚说明图2-2 AT89C52引脚配置AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序

6、存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

7、 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。芯片的40个引脚功能为:VCC 电源电压。GND 接地。RST 复位输入。当RST变为高电平并保持2个机器周期时,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISKRTO位缺省为RESET输出高电平打开状态。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P0口 一组8位漏极开路型双向I/O口。也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1

8、”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口 一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。P1口部分端口引脚及功能如表2.1所示。表2.1 P1口

9、特殊功能P1口引脚特殊功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7SCK(用于ISP编程) P2口 一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。Flash编程和程序校验期间,P2亦接收低8位地址。P3口

10、 一个带内部上拉电阻的8位双向I/O口。P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2.2所示。P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。表2.2 P3口特殊功能P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6

11、(外部数据存储器写选通)P3.7 (外部数据存储器读选通) PSEN/ 程序储存允许输出是外部程序存储器的读先通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN/信号。EA/VPP 外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。Flash存储器编程时,该引脚加上+12V的编程电压VPP。2.3 LCD1602A的简介字符型液晶1602主要技术参数如表2.3所示:表2.3 字符型液晶1602主要技术参数显示容量

12、:16*2个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95*4.35(W*H)mm接口信号说明如表2.4所示:表2.4 1602接口信号说明编号符号引脚说明编号符号引脚说明1Vss电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4Rs数据/命令选择端(H/L)12D5DataI/O5R/W读/写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极控制器接口说明(HD44780

13、及兼容芯片)基本操作时序a 读状态:输入:Rs=L, Rw=H, E=H 输出:D0D7=状态字b 写指令:输入:Rs=L, Rw=L, D0D7=指令码 输出:无 E=高脉冲C 读数据:输入:Rs=H, Rw=L, E=H 输出:D0D7=数据d 写数据:输入:Rs=H, Rw=L, D0D7=数据 输出:无 E=高脉冲状态字说明如表2.5所示:表2.5状态字说明(a)STA7D7STA6D6STA5 D5STA4 D4STA3 D3STA2 D2STA1 D1STA0 D0表2.6 状态字说明(b)STA0-6当前数据地址指针的数值STA7读写操作使能1:禁止 0:允许注:对控制器进行读写

14、操作之前,都必须进行读写检测,确保STA7为0RAM地址映射图控制器内部带有80*8位(80字节)的RAM缓冲区,对应关系如下图2.7所示:表2.7 RAM地址映射图LCD16字*2行000102030405060708090A0B0C0D0E0F1027404142434445464748494A4B4C4D4E4F5067指令说明初始化设置显示模式设置如表2.8所示:表2.8显示模式设置指令码功能00111000设置16*2显示,5*7点阵,8位数据接口显示开关及光标设置如表2.9所示:表2.9 显示开关及光标设置指令码功能00001DCBD=1 开显示; D=0 关显示C=1 显示光标;

15、 C=0 不显示光标B=1 光标闪烁; B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字后地址指针减一,且光标减一S=1 当写一个字符后,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果S=0 当写一个字符,整屏显示不移动数据控制控制器内部没有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM。数据指针设置如表2.10所示表2.10 数据指针设置(a)指令码功能80H+地址码(027H, 4067H)设置数据地址指针读数据:见c写数据:见d其它设置如表2.11所示表2.11数据指针设置(b)指令码功能

16、01H显示清屏:1.数据指针清零 2.所有显示清零02H显示回车:1.数据指针清零2.4 时钟电路单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取33pF)。这样就构成一个稳定的自激振荡器。 振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。如图2-4所示:图2-4 AT89C52的时钟电路2.5 复位电路设计图如图2-5所示。复位操作有两种基本形式:一种是上电复位,另一种是按键复位。按键复位具有上电复位功能外,若要复位,只

17、要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。按键复位电路图2-5 AT89C52的按键复位电路2.6 显示电路对于现实电路我们可以采用数码管,也可以采用液晶显示,液晶又分字符型和点阵型,我们使用的液晶是字符型液晶,并且带字符库的,不需要查找代码。英文字符就可。液晶电路使用时,如果发现液晶不亮可以调节连接液晶的点位

18、器,改变液晶的亮度。显示电路如图2-6所示:图2-6 显示电路2.7 键盘接口技术独立式键盘:独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。键盘接口电路如图2-7所示:图2-7 按键电路2.8 霍尔传感器设计里程计算是通过安装在车轮旁的霍尔传感器检测到的信号,送到单片机,经处理计算,送给显示单元的。而由于本次实验室的局限不能利用霍尔传感器,所以我们利用按键来代替霍尔传感器,通过按一次键代表汽车行驶了1公里,当在行驶过程中,停止按键

19、代表行驶进入了等待时间。霍尔传感器的连接如图2-8所示图2-8 霍尔传感器的连接第三章 出租车计价器系统的软件设计3.1 系统整体程序流程图3-1 主流程图在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。主程序流程图如图3-13.2 中断子函数于中断程序,只要定时器计数满就会产生中断50ms中断一次,共计20次,秒钟加1,秒钟计满再分钟加,当分钟加到99

20、时全部清零。以下是中断子函数的流程图如图3-2所示:图3-2中断子程序流程图3.3 按键判断方式对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。判键子函数的流程框图如图3-3所示图3-3按键判断程序流程图3.4 LCD1602显示的判断1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写40个字符,在写显示程序的时候,我们先写命令,再设定字符显示,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。液晶显示程序流程图如图3-4所示3-4 LCD1602A显示子程序第四章 出租

21、车系统的安装与调试4.1 硬件调试进行通电调试,检查开发板是否正常。1 )当LCD1602A液晶背光亮,但无任何显示,就进行调节对比度后按复位键;当LCD1602A液晶发光,有一排白色方框,就把LCD1602A拔出重新插紧液晶,插正单片机,按复位或重新下载程序;当LCD1602A液晶没有反映,则要算开电源,检查各引脚的问题。2 )当LCD1602A都能不会有问题,可开发板还是不能正常使用,先检查下开发板的电源是否正常,不正常则进行调试。电源正常,则使用万用表检查AT89C52单片机芯片是否正常,要是短路则换一个新的单片机芯片。3)当键盘的按键失效,则换过一排按键,或修好按键在进行实验验证。4.

22、2 软件调试输入程序并检查无误,经编译、连接后烧入开发板运行,观察现象。 要是没有现象就查看下是否烧写软件出了问题。1)查看STC-ISP软件的地址上没有显示出地址,这说明开发板和烧写软件没有连接上,换个数据线在进行连接烧写。2)看是不是单片机的型号选错看或忘记选择,改后在下载过观察结果。3)观察下是否串行口选错了,查看我的电脑属性的硬件管理查看对应的串行口,错了改正,改后下载过在观察结果。4)在打开文件是没有看到所要的文件.hex,则重新按确步骤编写程序。第五章 设计体会与小结出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能,并能够通过LCD显示车费数目。

23、本款出租车计价器包括单价输出、单价调整、显示当前的系统时间等功能。同过了5周的课程设计让我学会了很多的东西。经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。学会了怎么去查找些资料,把所找到的东西与自己的问题所结合起来并给予解决。这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁,只有这样才能让自

24、己进一步的去学会新的东西和知识。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。书上学来中觉潜,只有实践与理论的结合才能让自己学会跟多的东西掌握更多的理论。参考文献1 李群芳,张士军,黄建.单片微型计算机与接口技术.北京:电子工业出版 ,2008.2丁元杰、吴大伟单片微机实题集与实验指导书M机械工业出版社, 20043张友德,赵志英,涂时亮. 单片微型机原理、应用与实验. 上海:复旦大学出版社 2005,12.4胡辉,单片机原理及应用设计21世纪高等院校规划教材M,水利水电出版社,

25、2005.7;5张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,1999.6李广弟,朱月秀,冷祖祁.单片机基础M.第3版.北京航空航天大学出版社,2007年1月附录一 源程序#include#define uchar unsigned char#define uint unsigned int sbit rw=P21;sbit rs=P20;sbit en=P22;sbit b=P07;void lcd_init();void wr_com(uchar command);void wr_data(uchar data0);void lcd_clear();void lcd_s

26、et();void busy();void display();void printstring(uchar *s);void display1();void key1();sbit K=P10;sbit K1=P11;sbit K2=P12;sbit K3=P13;sbit K4=P14;sbit g=P27;sbit aa=P23;sbit bb=P24;sbit cc=P25;sbit led_run=P30;sbit led_await=P31;sbit led_stop=P32;bit f_start;bit jump_in;bit jump_out;void key();uchar

27、 code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x70;uchar dispbuf=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar dispbuf1=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar v,v1; uchar i;void init();void chuli();void chuli1();void delay(uchar t);void clear();void set(uchar x);void set1(uchar y); uchar command;

28、uchar count,count1;uchar second,minite,second1,minite1;unsigned int tt,tt1;unsigned char value1=50,value2=25,value3=15;unsigned int money; void main() init(); lcd_init(); while(1) key1(); chuli(); display(); if(jump_in=1) jump_in=0; lcd_init(); while(1) key(); chuli1(); display1(); if(jump_out=1) lc

29、d_init(); jump_out=0; clear(); break; void clear() TR0=0; TR1=0; money=0; second=0; second1=0; minite=0; minite1=0; value1=50; value2=25; value3=15; led_run=1; led_await=1; led_stop=1; v=0; v1=0; for(i=0;i15;i+) dispbufi=0; dispbuf1i=0; void init() TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; ET0=1; ET1=1; EA=1; TR0=0; TR1=0;void

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2