基于8051的出租车计价器的设计.doc

上传人:PIYPING 文档编号:10531803 上传时间:2021-05-22 格式:DOC 页数:14 大小:776.50KB
返回 下载 相关 举报
基于8051的出租车计价器的设计.doc_第1页
第1页 / 共14页
基于8051的出租车计价器的设计.doc_第2页
第2页 / 共14页
基于8051的出租车计价器的设计.doc_第3页
第3页 / 共14页
基于8051的出租车计价器的设计.doc_第4页
第4页 / 共14页
基于8051的出租车计价器的设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《基于8051的出租车计价器的设计.doc》由会员分享,可在线阅读,更多相关《基于8051的出租车计价器的设计.doc(14页珍藏版)》请在三一文库上搜索。

1、-1.设计的目的和意义1.1设计目的通过接口课程设计进一步的理解单片机的工作原理以及计算机的内部工作原理,进一步的掌握汇编语言,并能利用它编较大功能较齐全的时实控制程序,设计出租车计价器的目的是为了使司机能够根据自己的不同情况方便的选择计价器的工作方式,并且能使计价器能准确的显示车费和路程1.2设计内容编写出租车计价器的汇编程序,并通过伟福仿真器模拟,实现计价器的功能1.3设计要求能够通过键盘设定出租车的起步价和每公里的单价,同时能由数码管同时显示起步价及单价,同时显示路程及价钱。由于实验条件有限本系统的的起步价的设定范围在199元,单价的设定范围为19元,路程的显示范围为0127公里,价钱的

2、显示范围为1999元。系统的主要功能是:如果司机想设定起步价和单价,在开始计费之前通过键盘自由设定,首先输入的是起步价,然后输入的是单价,然后按确认键后,数码管即可同时显示起步价和单价,若司机不想重新设定起步价和单价,则开始计费前按一下确认键即可显示上次设定的起步价和单价。按下开始/结束键计费系统开始计费并通过数码管显示所行路程和车费,当再按下开始/结束键时则计费系统清零,可以进行下次起步价和单价的设定和计费。2.硬件电路设计 2.1总体设计方案 首先通过并行接口芯片74LS374和74LS245扩展I/O接口,用来数码管显示和扩展键盘(4X3),然后通过A/D转换器ADC0809模拟路程传感

3、器,将转换器读入的数据作为路程,进行相关的编程计算路费,然后将路费用与数码管显示,因为只有六个数码管,为了能同时显示路程和车费,所以只能有3个数码管显示路程,另外三个显示车费。由于只用数字键,所以键盘只用扩展为4*3形式即可,其中有9个数字键19和一个确认键,一个开始/结束键。 2.2硬件电路图 3.系统软件设计 3.1程序流- 14 - 判断按键是否为确认键0判断是否有按键等待按键开 始否是否是将20H22H单元清零,同时调用按键和确认键值子程序,将输入的每公里单价和起步价分别存入21H23H保留20H22H单元的内容,即保留上次设定的单价和起步价把20H22H单元的内容到输入数码管显示判断

4、是否为开始键F否 将测量的路程是否大于4公里将A/D转换器(测量路程)的内容读入到存储器是是否车费=(测量路程4公里)*单价+起步价车费=起步价有键按下否去抖动行扫描键号计算系统清零,准备下次计费键识别流程检测是否有结束按键F将车费和路程用数码管显示将路程和车费分别转换为十进制,转换后的路程存入40H42H单元,转换后的车费存入43H45H单元 否(去A/D转换) 图2.主程序流程图键测试 是 是等待键释放键号送A图3. 键识别子程序流程图3.2程序清单ORG 0000HLJMP MAINORG 1000HMAIN: MOV A, #3FH ;设定起步价和每公里的单价,并用数码管显示。 MOV

5、 DPTR, #8004H MOVX DPTR, A MOV DPTR, #8002H MOV A ,#0FFH MOVX DPTR, ASTART:ACALL KS1 JZ START ACALL LK1 CJNE A, #0AH, J1 AJMP DIR J1:MOV 20H, #00H MOV 21H, #00H MOV 22H, #00H MOV 23H, #00H MOV 20H, A M0:ACALL KS1 JZ M0 ACALL LK1 MOV R0, A SUBB A, #0AH JZ M10 MOV A, R0 MOV 21H, A SJMP M1 M10:MOV A, 2

6、0H MOV 21H, A MOV 20H, #00H SJMP M4 M1:ACALL KS1 JZ M1 ACALL LK1 MOV R0, A SUBB A, #0AH JZ M4 SJMP M1 M4:ACALL KS1 JZ M4 ACALL LK1 MOV 22H,A M3:ACALL KS1 JZ M3 ACALL LK1 PUSH A SUBB A, #0AH JZ M11 SJMP M3 M11:MOV A, 22H MOV 23H, A MOV 22H, #00HDIR: ACALL KS1 JZ M13 ACALL LK1 CJNE A, #0BH, M13 AJMP J

7、IFEI M13:MOV R0, #20H MOV R3, #04H MOV A, R3LD0:MOV DPTR, #8002H MOVX DPTR, A INC DPTR INC DPTR MOV A,R0DIR0:MOV DPTR, #TABLE MOVC A, A+DPTR MOV DPTR, #8004H MOVX DPTR, A MOV R6, #100 ACALL DL INC R0 MOV A, R3 JB ACC.1, DIR1 RR A MOV R3, A AJMP LD0DIR1:MOV R0, #22H MOV R3, #20H LD2:MOV A, R3 MOV DPT

8、R, #8002H MOVX DPTR, A INC DPTR INC DPTR MOV A, R0 DIR4:MOV DPTR, #TABLE MOVC A, A+DPTR MOV DPTR, #8004H MOVX DPTR, A MOV R6, #100 ACALL DL INC R0 MOV A, R3 JB ACC.4, DIR RR A MOV R3, A AJMP LD2JIFEI: ACALL KS1 ;A/D转换器(模拟路程)中的值输入到数码管显示 JZ M14 ACALL LK1 CJNE A, #0BH, M14 AJMP MAIN M14:MOV R0, #30H MO

9、V R2, #08H MOV DPTR, #9000H MOV A, #00H MOVX DPTR, A MOV R6, #10 ACALL DL MOVX A, DPTR MOV B, #02H DIV AB MOV R3, A CJNE A, #04H, N2 ;设定在起步价内的路程为4公里 AJMP N4 N2:JC N4 JNC N16 N4:MOV A, 30H CALL CHANGE MOV 40H, A MOV 41H, R2 MOV 42H ,R1 MOV A, R3 ACALL CHANGE MOV 43H, A MOV 44H, R2 MOV 45H, R1 AJMP N1

10、7 ;如果在起步价路程内 N16:ACALL KEYVALUE ;如果超过起步价路程 MOV A, R3 CLR C SUBB A, #04H MOV B, 31H MUL AB ADD A, 30H JC N20 SJMP N21 N2:INC B N21:MOV R4 , A MOV A , B JZ N3 MOV A, R4 ADD A, B JNC J7 INC B J7: MOV R4, A MOV A, #0FFH SJMP N13 N3 : MOV A, R4 N13:CALL CHANGE MOV 40H , A MOV 41H ,R2 MOV 42H, R1 MOV A, B

11、 JNZ N30 AJMP N11N30:DEC A MOV B,A JZ N15 AJMP N12 N12:MOV R1, BN31:MOV R0, #40HMOV R2, #03HN14: MOV A, R0 ADD A, R0 MOV R0, A INC R0 DJNZ R2, N14 DJNZ R1, N31 N15: MOV A, R4 ACALL CHANGE ADD A, 40H MOV 40H, A MOV A, 41H ADD A ,R2 MOV 41H ,A MOV A, R1 ADD A, 42H MOV 42H, A MOV A, 40H ACALL CHANGE MO

12、V 40H, A CJNE A, #0AH, J3 J2:SUBB A, #0AH MOV 40H, A INC 41H J3:MOV A ,R2 ADD A, 41H CJNE A, #0AH, J6 J6:JC J5 J4:SUBB A, #0AH MOV 41H, A INC 42HJ5:MOV A, 41H ACALL CHANGE MOV 41H, A MOV A, R2 ADD A, 42HMOV 42H, AN11:MOV A, R3 ACALL CHANGE MOV 43H, A MOV 44H, R2 MOV 45H, R1N17:MOV R0, #40H MOV R3, #

13、01H MOV A, R3LD6:MOV DPTR, #8002H MOVX DPTR, A NC DPTR INC DPTR MOV A, R0 MOV DPTR, #TABLE MOVC A, A+DPTR MOV DPTR, #8004H MOVX DPTR, A MOV R6, #70 ACALL DL INC R0 MOV A, R3 JB ACC.2, DIR5 RL A MOV R3, A AJMP LD6DIR5:MOV R0, #43H MOV R3, #08H LD7:MOV A, R3 MOV DPTR, #8002H MOVX DPTR, A INC DPTR INC

14、DPTR MOV A, R0 MOV DPTR, #TABLE MOVC A, A+DPTR MOV DPTR, #8004H MOVX DPTR, A MOV R6, #70 ACALL DL INC R0 MOV A, R3 JB ACC.5, N5 RL A MOV R3, A AJMP LD7 N5: AJMP JIFEIKS1:MOV DPTR, #8002H ; 判断是否有按键 MOV A, #0C7H MOVX DPTR, A MOV DPTR, #8001H MOVX A, DPTR CPL A ANL A, #0FH RETLK1: MOV R6, #50 ; 判断键值 AC

15、ALL DL ACALL DL ACALL KS1 JNZ LK2 ACALL DL AJMP LK1 LK2:MOV R2, #0DFH MOV R4, #00H LK4:MOV DPTR, #8002H MOV A, R2 MOVX DPTR, A MOV DPTR, #8001H MOVX A, DPTR JB ACC.0, LONE MOV A, #0AH AJMP LKPLONE: JB ACC.1 , LTWO MOV A , #01H AJMP LKPLTWO: JB ACC.2, LTHR MOV A, #04H AJMP LKPLTHR:JB ACC.3, NEXT MOV

16、A, #07H AJMP LKP LKP: ADD A, R4 PUSH ACC LK3:ACALL DL ACALL KS1 JNZ LK3 POP ACCKND: RETNEXT:INC R4 MOV A, R2 JNB ACC.3, KND RR A MOV R2, A AJMP LK4DL: MOV R7, #10 ; 延时子程序DELAY3: DJNZ R7, DELAY3 DJNZ R6,DL RETCHANGE: MOV R1, #00H ; 十六进制转换为十进制 MOV R2, #00H CLR C CHAN: SUBB A, #64H JC CHAN1 INC R1 LJMP

17、 CHANCHAN1: ADD A, #64H CLR CCHAN2 : SUBB A, #0AH JC CHAN3 INC R2 AJMP CHAN2CHAN3:ADD A, #0AH RETKEYVALUE: MOV 33H,#02H ; 将键盘输入的值转换为十六进制 MOV R0, #30H MOV R1, #20H N1:MOV A, R1 INC R1 MOV B, #10 MUL AB ADD A, R1 MOV R0, A DJNZ 33H, N0 SJMP QUIT N0:INC R0 INC R1 SJMP N1 QUIT : RETTABLE: DB 3FH, 06H, 5

18、BH, 4FH, 66H ; 0到11的数码显示字符表 DB 6DH, 7DH, 07H, 7FH, 6FH DB 77H, 7CH4电路调试4.1功能1的调试说明:在起步价内的路程为4公里。 (1)首先输入起步价为19之间的数据,例如输入“5”,按下确认键,然后输入单价,因为单价只能输入19,所以随意输入一个数“4”,然后按下确认键,此时发现左边3个数码管显示“04”,右边数码管显示“05”。 (2)首先输入起步价为1199之间的数据,例如输入“34”,按下确认键,然后输入单价,因为单价只能输入19,所以随意输入一个数“2”,然后按下确认键,此时发现左边3个数码管显示“02”,右边数码管显示

19、“34”。(3)首先输入起步价为1199之间的数据,例如输入“34”,按下确认键,然后输入单价,因为单价只能输入19,为了检验它是否具有限制功能,所以输入一个数“12”,然后按下确认键,此时发现左边3个数码管显示“01”,右边数码管显示“34”。 4.2功能2的调试说明:在起步价内的路程为4公里。(1)重复4.1(1)的过程,然后按下非开始键,发现数码管没有变换,接着按下开始/结束键发现数码管有显示,左边显示为“025”,右边“89”,注意车费的显示范围是小于255,调节电位器(即为改变路程),发现数码管跟着变动,而且计费完全正确,当路程显示为04(公里)时,右边显示为“005”即为起步价。当

20、调节电位器时路程显示为“114”时,费用显示为“445”,说明计价器能准确显示大于255的值。 (2)在(1)的基础上,按下开始/结束键,发现数码管即刻清零,说明计价器能反复使用(3)在(2)的基础上,直接按下确认键,发现数码管准确显示上次设定的起步价和单价,说明计价器不用每次都进行起步价和单价的设定。5结 论 通过课程设计,使我学到了不少,对汇编语言更加熟悉。对单片机的应用更加熟练。参考文献1 李广弟。单片机基础。北京:北京航空航天大学出版社,2004年2 倪继烈,刘新民。微机原理与接口技术(第二版)。成都:电子科技大学出版社,高等教育出版社,20053 郭文川。微机原理与接口技术实验指导书。陕西:西北农林科技大学出版社,20054 李伯成。微型计算机原理及接口技术。西安:西安交通大学出版社,19935 朱定华。单片机原理及接口技术实验。北京:清华大学出版社,北方交通大学出版社,20036 阎石。数字电子技术基础(第四版)。北京:高等教育出版社,20047 江小安,董秀峰。模拟电子技术。陕西:西安电子科技大学,2004

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1