《出租车计程计价器的设计》.doc
文本预览下载声明
出租车计程计价器的设计
一·课程设计目的与要求
为了能够精确地测量出租车行驶的路程和计算出该路程所需的价格,并显示出路程值和所需的钱值,基于单片机MCS-51能够完成该工作。
利用实验室提供的设配,利用实验箱上LED显示器设计能够显示6位(前四位是价钱值,后两位路程值),利用实验箱上提供的外部脉冲作为车轮走过的路程(设车轮直径为D=60cm,S=πD=2m),设起步价为12.5元,超过3km,超出的每千米按2.4元计算,同时包含停车每超过45s又要加6角。
二·设计方案
(1)设计原理
1.利用发光二级管L0灭来辨识有乘客,亮时没有乘客。通过开关K1来控制。具体接线是将P1.1与L0相连,P3.3与K1相连。利用实验箱上的直流电机转速产生的脉冲作为T0的外来计数脉冲。具体接线是将P3.4与实验箱上的CKMOT(CKMOT即是直流电机转数产生脉冲输出端)相连。
2.规定如下:①起始价为12.5元,若在3Km以内则应付费12.5元,如果超过了3Km则应按超过3km的另外以每千米2.4元计算,及总价为 JJ={12.5+(S-3)×2.4}元 。②若途中因为红灯或塞车的原因停车则每停车45秒要另加0.6元即JJ=JJ+0.6.如举个例子S=85km,中途没有停车则JJ=12.5+(85-3)×2.4=209.3(元)则6个数码管将显示“209.3 85”
3.具体过程叙述如下:①程序一开始由于CLR p1.1知L0亮,并且开始时开关K1置1档,直到有乘客上车时,把开关打向0档,L0灭,同时显示器开始计程计价(开始显示为“12.5 00)之后车轮每转一圈相当于输出一个外部脉冲到P3.4,利用T0计数,T0每计125则T0中断一次,由于1km=4×125×2(车轮每转一圈则路程为2m),即在T0中断程序中还有一个计中断次数的。
②在本设计中用到6个数码管分别为 百元,十元,元,角,十千米,千米。③程序中用十进制BCD码来表示价钱和路程,因此要用到将BCD码转换成非压缩的BCD码来驱动数码管显示。即用RAM 30H 存储路程S(压缩BCD码)。另外用31H,32H来存储计价值JJ的压缩BCD码,高字节放在32H中(百元,十元),低字节放在31H中(元,角),开始计价时30H为0,32H中为1(10元)31H中为25(二元五角)。调用BCDZH将BCD码转成非压缩BCD码在调用DISP显示函数驱动数码管显示。
④在T0中断中若S3km则调用BCDJ24即以后每千米加2.4元,在调用BCDZH和DISP显示路程和价钱。注意30H~32H中对应的非压缩BCD码存放在40H~45H(40H存放一千米,41H存放十千米,42H存放角,43H存放元,44H存放十元,45H存放百元)。
⑤程序中还用T1定时器来检测是否处于停车状态,由晶振频率fosc=12MHz,T1定时为50ms,每过5S(100*0.1)检测一次TL0中的数据是否与上次相同,若相同则认为停车状态,直到检测了9次(9*5=45S)则就要加6角,之后再调用BCDZH和DISP驱动显示器,显示计价计程,又清零重新记录停车时间。
⑥此程序中比较特殊在于,T0每次中断恰好走过250m,及恰好也是调用BCDJ6,这就省略了一些计算步骤。
三·硬件系统说明和电路图原理
+5v
K1
ckmot
四·程序模块主要流程图和源程序及注释
程序流程图
程序
源程序代码:
QDJ EQU 125;起步价12.5元
GLJ EQU 24;每公里价2.4元
S EQU 30H ;路程压缩BCD码存放30H
JJDZJ EQU 31H;计价值低字节存放在31H压缩BCD码,元,角
JJGZJ EQU 32H;计价值高字节存放在32H压缩BCD码,百元,十元
SGW EQU 40H;路程个位非压缩BCD码,km
SSW EQU 41H ;路程十位非压缩BCD码,10km
JJJ EQU 42H ;计价值角位,非压缩BCD码
JJY EQU 43H ;计价值元位,非压缩BCD码
JJSY EQU 44H;计价值十元位,非压缩BCD码
JJBY EQU 45H;计价值百元位,非压缩BCD码
ORG 0000H;程序开始
LJMP MAIN
ORG 000BH
LJMP T0INT
OR
显示全部