《出租车计程计价器的设计.doc》由会员分享,可在线阅读,更多相关《出租车计程计价器的设计.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流出租车计程计价器的设计.精品文档. 出租车计程计价器的设计一课程设计目的与要求 为了能够精确地测量出租车行驶的路程和计算出该路程所需的价格,并显示出路程值和所需的钱值,基于单片机MCS-51能够完成该工作。 利用实验室提供的设配,利用实验箱上LED显示器设计能够显示6位(前四位是价钱值,后两位路程值),利用实验箱上提供的外部脉冲作为车轮走过的路程(设车轮直径为D=60cm,S=D=2m),设起步价为12.5元,超过3km,超出的每千米按2.4元计算,同时包含停车每超过45s又要加6角。二设计方案 (1)设计原理 1.利用发光二级管L0灭来辨识
2、有乘客,亮时没有乘客。通过开关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个
3、数码管将显示“209.3 85” 3.具体过程叙述如下:程序一开始由于CLR p1.1知L0亮,并且开始时开关K1置1档,直到有乘客上车时,把开关打向0档,L0灭,同时显示器开始计程计价(开始显示为“12.5 00)之后车轮每转一圈相当于输出一个外部脉冲到P3.4,利用T0计数,T0每计125则T0中断一次,由于1km=41252(车轮每转一圈则路程为2m),即在T0中断程序中还有一个计中断次数的。在本设计中用到6个数码管分别为 百元,十元,元,角,十千米,千米。程序中用十进制BCD码来表示价钱和路程,因此要用到将BCD码转换成非压缩的BCD码来驱动数码管显示。即用 30H 存储路程S(压缩B
4、CD码)。另外用31H,32H来存储计价值JJ的压缩BCD码,高字节放在32H中(百元,十元),低字节放在31H中(元,角),开始计价时30H为0,32H中为1(10元)31H中为25(二元五角)。调用BCDZH将BCD码转成非压缩BCD码在调用DISP显示函数驱动数码管显示。在T0中断中若S3km则调用BCDJ24即以后每千米加2.4元,在调用BCDZH和DISP显示路程和价钱。注意30H32H中对应的非压缩BCD码存放在40H45H(40H存放一千米,41H存放十千米,42H存放角,43H存放元,44H存放十元,45H存放百元)。程序中还用T1定时器来检测是否处于停车状态,由晶振频率fos
5、c=12MHz,T1定时为50ms,每过5S(100*0.1)检测一次TL0中的数据是否与上次相同,若相同则认为停车状态,直到检测了9次(9*5=45S)则就要加6角,之后再调用BCDZH和DISP驱动显示器,显示计价计程,又清零重新记录停车时间。此程序中比较特殊在于,T0每次中断恰好走过250m,及恰好也是调用BCDJ6,这就省略了一些计算步骤。三硬件系统说明和电路图原理 8279P1.1P3.3P3.4 Mcs-51+5vK1 数码管显示器使用六位 ckmot同样不用再连,箱上已连接实验箱上已连接好,不用再连 四程序模块主要流程图和源程序及注释程序流程图 开始,设置S,JJ存储单元程序 系
6、统初始状态化,状态码清零,S,JJ设置初值,T0计数,T1定时,R7,R3,R4,R5设置初值中断子程序:T!INT,T0INT中断返回调用DISP,等待中断,T0,T1,进入中断设计,子程序BCDZH,BCDJ6,T0INT,T!INT,又循环调用DISP源程序代码:QDJ EQU 125;起步价12.5元GLJ EQU 24;每公里价2.4元S EQU 30H ;路程压缩BCD码存放30HJJDZJ EQU 31H;计价值低字节存放在31H压缩BCD码,元,角JJGZJ EQU 32H;计价值高字节存放在32H压缩BCD码,百元,十元SGW EQU 40H;路程个位非压缩BCD码,kmSS
7、W EQU 41H ;路程十位非压缩BCD码,10kmJJJ EQU 42H ;计价值角位,非压缩BCD码JJY EQU 43H ;计价值元位,非压缩BCD码JJSY EQU 44H;计价值十元位,非压缩BCD码JJBY EQU 45H;计价值百元位,非压缩BCD码 ORG 0000H;程序开始 LJMP MAIN ORG 000BH LJMP T0INT ORG 001BH LJMP T1INTMAIN: MOV SP,#60H MOV DPTR,#5FFFH ;显示初始化 MOV A,#0DCH MOVX DPTR,ALP: MOVX A,DPTR JNB ACC.7,LP MOV A,#
8、00H MOVX DPTR,A MOV A,#34H MOVX DPTR,A MOV TMOD,#16H ;T0计数,模式二,T1定时,模式一 MOV TH0,#83H ;T0计数初值,每计到125,中断一次 MOV TL0,#83H MOV TH1,#3CH ;T1定时初值,每50ms,中断一次 MOV TL1,#0B0H MOV R7,#00H ;T0中断的次数,4次则路程加1kmMOV R3,#83H ;用于存放每次TLTLO中数 MOV R4,#00H ;T1中断子程序中100次,则5s检测车是否停车状态 MOV R5,#00H ;T1中断子程序中90次,则停车45s,加6角 SETB
9、 EA ;开启cpu中断,T0,T1中断 SETB ET1 SETB ET0 SETB PT0 ;T0中断优先级高 CLR P1.1 ;无乘客L0亮灯 MOV SGW, #00H ;显示位清零 MOV SSW,#00H MOV JJJ,#00H MOV JJY,#00H MOV JJSY,#00H MOV JJBY,#00H ;ACALL DISP JB P3.3,$ ;有乘客时,开始启动T0计数,T1定时,开关K1控制 SETB TR0 SETB TR1 CLR P1.1 ;有乘客时L0灭灯 MOV S,#00H ;路程初始值0km MOV JJGZJ,#01H ;计价初始值12.5元 MO
10、V JJDZJ,#25H ACALL BCDZH ;调用BCD转换程序,成非压缩BCD码LL: ACALL DISP ;调用显示程序,并等待中断 LJMP LL;将压缩BCD码转换成非压缩BCD码子程序如下BCDZH: PUSH PSW SETB RS0 ;选用工作寄存器组0 MOV R0,#S ;S的转换 MOV R1,#SGWLPB: MOV A,R0 MOV R2,A ANL A,#0FH ;保留低四位 MOV R1,A INC R1 MOV A,R2 ANL A,#0F0H ;保留高四位, SWAP A MOV R1,A INC R0 ;计价值的转? INC R1 CJNE R0,#3
11、3H,LPB CLR RS0 ;选回工作寄存器组0 POP PSW RET;T0中断子程序T0INT: PUSH PSW INC R7 CJNE R7,#04H,LPT0;路程不满1km,S不加1,转到LPTO MOV A,S ;S+1 ADD A,#01H DA A MOV S,A MOV R7,#00H ;R7复0LPT0: MOV A,S ;S是否大于3km CLR C SUBB A,#03H JC FH0 ;SLY2 INC R5 CJNE R5,#09H,LY2 ;是否停了45s MOV R5,#00H ;R5复0 ACALL BCDJ6 ;停车45s加6角 ACALL BCDZHL
12、Y2: MOV R3,TL0 ;用于存放每次TL0的值LY: POP PSW RETI;显示子程序DISP: MOV R3,#06H ;显示的位数 MOV A,#92H ;输出写显示RAM命令字 MOV DPTR,#5FFFH ;指向8279命令口 MOVX DPTR,A ;起始地址为0单元,自动加1 MOV R1,#SGW ;要显示数据的存放单元首地址TY11: MOV A,R1 MOV DPTR,#CODE1 ;#CODE1为查表偏移量 MOVC A,A+DPTR ;查表得到段码 MOV DPTR,#5EFFH ;指向8279数据口 MOVX DPTR,A ;写入显示RAM INC R1
13、DJNZ R3,TY11 RETCODE1: DB 0C0H,0F9H,0A4H,0B0H,99H ;段码表(共阳极) DB 92H,82H,0F8H,80H,90H,88H DB 83H,0C6H,0A1H,86H,8EH,8CH DB 0C1H,89H,0C7H,0BFH,91H DB 00H,0FFH END五课程设计总结 这次单片机课程设计对于自己来说,收获很多。通过这次包括汇编编程和对硬件的操作在内的,由自己动手实践的,在体提高自己编程能力方面和对单片机硬件操作能力方面都有一个很大的提高。由开始选题然后找到相关参考书,试着编写程序,到最后逐步的修改,碰到问题找老师和同学帮助(如如何提供外部脉冲来源,单步调式,设置断点等),最后能够在实验箱实现,这过程中收获颇多。总之,这次课程设计即有加深对课本知识了解,也加强了自己操作和编程能力。六参考书目【1】王琼,单片机原理及应用实验教程。合肥:合肥工业大学出版社,2005【2】王琼,单片机原理及应用。合肥:合肥工业大学出版社,2008【3】张大明,单片机控制实训指导及综合应用实例。机械工业出版社。2008
限制150内