基于51单片机原理出租车计价器的设计摘要出租车计价器是出租车营运收费的专用只能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。
国内出租车计价器已经经历了4个阶段的发展。
从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器;再从集成电路式到目前的单片机系统设计的出租车计价器。
出租车计价器计费是否准确是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。
在随着科技的发展,现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
本次设计是采用AT89C52单片机为中心,外加霍尔传感器行对里程进行测距,由于实验室的限制的问题所以改用按键代替霍尔传感器,实现对出租车计价统计,输出采用LCD1602A的出租车计价器。
关键字:51系列单片机,霍尔传感器,LCD1602A前言 (2)第一章出租车计价系统的设计要求与设计方案 (3)1.1 基本设计要求 (3)1.2 性能指标 (3)1.3 显示功能 (3)第二章出租车计价器系统的硬件设计 (4)2.1 出租车硬件框图 (4)2.2 AT89C52单片机及引脚说明 (4)2.3 LCD1602A的简介 (7)2.4 时钟电路 (10)2.5 复位电路设计 (10)2.6 显示电路 (11)2.7 键盘接口技术 (12)2.8 霍尔传感器设计 (12)第三章出租车计价器系统的软件设计 (13)3.1 系统整体程序流程 (13)3.2 中断子函数 (14)3.3 按键判断方式 (15)3.4 LCD1602显示的判断 (15)第四章出租车系统的安装与调试 (17)4.1 硬件调试 (17)4.2 软件调试 (17)第五章设计体会与小结 (18)参考文献 (19)附录 (20)一源程序 (20)二系统硬件原理图 (29)随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以低价高质的服务给人们带来了出行的享受。
但是总存在着买纠纷困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器。
用更加精良的计价器来为乘客提供更加方便快捷的服务。
凡乘过出租车的人都知道,只要汽车开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如5KM)计费数字显示开始从起步价(如5元)增加。
当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。
汽车继续行驶时,停止计算等候费,继续增加里程计费。
到达目的地,便可按显示的数字收费。
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有一个应用价值的。
第一章出租车计价系统的设计要求与设计方案1.1 基本设计要求本出租车自动计费,上电后显示最初的起步价,里程计费单价,等待时间计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。
同时具有运行,暂停,停止等状态,可以显示运行的时间,同时可以显示暂停的时间,具有累加功能,暂停和运行时间在暂停和运行前一次的状态上计时。
出租车停止后能够显示行驶的总费用。
1.2 性能指标费用的计算是按行驶里程收费。
设起步价为5.00元。
1、当里程<3km时,按起价计算费用2、当里程>3km时,每公里按1.3元计费3、等待累计时间>2min时,按1.5元/min计费1.3 显示功能1、显示行驶里程:用四位数字显示,显示方式为“XXXX”,单位为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只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
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位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接收低8位地址。
P1口部分端口引脚及功能如表2.1所示。
表2.1 P1口特殊功能P1口引脚特殊功能P1.5 MOSI(用于ISP编程)P1.6 MOSI(用于ISP编程)P1.7 SCK(用于ISP编程)P2口一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收低8位地址。
P3口一个带内部上拉电阻的8位双向I/O口。
P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。
作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2.2所示。
P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。
表2.2 P3口特殊功能P3口引脚特殊功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外部中断0)P3.3 (外部中断1)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)PSEN/ 程序储存允许输出是外部程序存储器的读先通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN/信号。
EA/VPP 外部访问允许。
欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程电压VPP。
2.3 LCD1602A的简介字符型液晶1602主要技术参数如表2.3所示:接口信号说明如表2.4所示:控制器接口说明(HD44780及兼容芯片)基本操作时序a 读状态:输入:Rs=L, Rw=H, E=H 输出:D0—D7=状态字b 写指令:输入:Rs=L, Rw=L, D0—D7=指令码输出:无E=高脉冲C 读数据:输入:Rs=H, Rw=L, E=H 输出:D0—D7=数据d 写数据:输入:Rs=H, Rw=L, D0—D7=数据输出:无E=高脉冲状态字说明如表2.5所示:注:对控制器进行读写操作之前,都必须进行读写检测,确保STA7为0 RAM地址映射图控制器内部带有80*8位(80字节)的RAM缓冲区,对应关系如下图2.7所示:26指令说明初始化设置显示模式设置如表2.8所示:显示开关及光标设置如表2.9所示:表2.9 显示开关及光标设置数据控制控制器内部没有一个数据地址指针,用户可通过它们来访问内部的全部80字节RAM。
数据指针设置如表2.10所示读数据:见c写数据:见d其它设置如表2.11所示表2.11数据指针设置(b)指令码功能01H 显示清屏:1.数据指针清零2.所有显示清零02H 显示回车:1.数据指针清零2.4 时钟电路单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取33pF)。
这样就构成一个稳定的自激振荡器。
振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。
如图2-4所示:图2-4 AT89C52的时钟电路2.5 复位电路设计图如图2-5所示。
复位操作有两种基本形式:一种是上电复位,另一种是按键复位。