否 是 开始 初始化数据 S1按下? 是 S4按下? 设定晚上单价 否 设定默认 否 单价(白天) 按下S4? 是 启动计价 设定中途等待单价 器 否 里程中断? 否 S4按下? 是 是 否 到一公里? 返回时间显示 是 总里程加1 总金额加1 是 传感有信号? 是 否 S3按下? 否 停止计价 显示路程和单价 里程计数 是 否 S3按下? 显示金额及单价 主程序流程图
2.计价表使用说明
(1)S1按键的功能
在出租车不走的时候,按下S1,可以实现数据的分屏显示;车在行走的时候只有总金额和单价显示屏在显示,当到达目的地的时候,客户要求
- 11 -
简易出租车计价器设计
查看总的里程的时候,就可以按下S1 切换到里程和单价显示屏,供客户查询。
(2)S2按键的功能
在按下S1按键之后,若接着按下S2键则进行单价调整(默认为调整白天单价),当接着按下S1时,则进行晚上单价调,再次按下S1可进行中途等待单价调整。当单价调整结束后,可以通过过按下S2按键进行时间调整,默认为调整时,接着按下S1可进行调整分,分调整后再接下S1可进行秒调整。当时调整完成后,若接着按下S2则又可进行单价调整。 (3)S3按键的功能
在显示金额及单价时,若按下S3键则显示路程和单价,再次按下S3,可返回显示金额及单价。 (4)S4按键的功能
在按下S1按键之后,若接着按下S4按键,则进行设定默认晚上单价,并启动计价器,若没有按下S4则可设定默认单价(白天),并启动计价器。当设定默认晚上单价结束后,再次接下S4按键,则可设定默认中途等待单价,并启动计价器。当设定默认中途等待单价后,若还按一次S4,则返回系统时间的显示。
参考文献
[1] 丁元杰 主编.《单片微机原理及应用》[M].机械工业出版社. [2] 戴永 主编.《微机控制技术》[M].湖南大学出版社.
[3] 李伯成 主编.《微型计算机原理及接口技术》[M].清华大学出版社.
设计感受
本款出租车计价器比目前市场现在的增加了不少功能,其中包括单价输出、单价调整、路程输出、显示当前的系统时间、语音播报数据信息等功能。另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。
通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。 在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89S51单片机及其引脚说明、AT24C02引脚图及其引脚功能等,为本次课程设计提供了一定的资料。由于平时很少进行课程设计,所以对于课程设计报告的格式也是近期才接触到,经过这两次的设计,为我们以后毕业设计的制作也奠定了一定的基础。 3.全部源程序
该出租车计价器的系统软件设计源程序如下:
- 12 -
简易出租车计价器设计
DAY_PRICEEQU 6FH NIGHT_PRICEEQU 6EH MIDWAY_PRICEEQU 6DH START_PRICEEQU 6CH COUNTL EQU 6BH COUNTH EQU 6AH M100 EQU 69H ; 外部中断次数 DISTANCE EQU 68H ; 行车距离 MS100 EQU 67H SEC EQU 66H MIN EQU 65H HOUR EQU 64H LEDSL EQU 63H ; 时分钞显示缓冲区 LEDSH EQU 62H LEDML EQU 61H LEDMH EQU 60H LEDHL EQU 5FH LEDHH EQU 5EH LEDDANJIAL EQU 5DH ; 总额,单价显示缓冲区 LEDDANJIAH EQU 5CH LINE_ EQU 5BH LEDCOUNT1 EQU 5AH LEDCOUNT2 EQU 59H LEDCOUNT3 EQU 58H LEDDANJIA2L EQU 57H ; 路程,单价显示缓冲区 LEDDANJIA2H EQU 56H LINE__ EQU 55H LINE___ EQU 54H LEDDISTANCEL EQU 53H LEDDISTANCEH EQU 52H LEDDAY_PL EQU 51H;中途,晚上.白天显示缓冲区 LEDDAY_PH EQU 50H LEDNIG_PL EQU 4FH LEDNIG_PH EQU 4EH LEDW_PL EQU 4DH LEDW_PH EQU 4CH S1 BIT P1.0 S2 BIT P1.1 S3 BIT P1.2 S4 BIT P1.3 简易出租车计价器设计
H2 EQU 44H PRICE EQU 43H ORG 0000H AJMPMAIN ORG 0003H AJMPTO ORG 000BH AJMPTOTIME ORG 001BH AJMPTOSTART ORG 0030H MAIN: MOV SP,#70H MOV TMOD, #11H MOV TH0, #3CH MOV TL0, #0B0H MOV TH1, #3CH MOV TL1, #0B0H MOV 22H, #0AH SETB EA SETB TR0 SETB EX0 SETB IT0 SETB ET0 SETB ET1 MOV R7,#34 MOV R0,#69H LOOPL:MOV @R0,#0 DEC R0 DJNZR7,LOOPL MOV COUNTL, #00H ; 起步价 MOV COUNTH, #05H MOV DAY_PRICE,#25H ; 白天价格初始化 MOV NIGHT_PRICE,#30H ; 晚上价格初始化 MOV MIDWAY_PRICE,#10H ; 中途等待初始化MOV START_PRICE, #50H ; 起步价初始化 MOV S11, #0 MOV S22, #0 MOV S33, #0 MOV S44, #0 MOV DISTANCE, #02H MOV HOUR, #12H KEY_MAIN:SETB TR0 ACALL HMS_DIS ACALL T100MSD - 13 -
S11 EQU 4BH S22 EQU 4AH S33 EQU 49H S44 EQU 48H M1 EQU 47H H1 EQU 46H M2 EQU 45H JB S1, KEY_MAIN ACALL T10MSD JB S1, KEY_MAIN JNB S1,$ SJMP WAI1 WA1:JB S1, K1 ACALL T10MSD JB S1, K1 WAIT1:JNB S1, WAIT1 MOV R0, #LEDDANJIAL MOV R2, #6 CLR A MOV COUNTL,A MOV COUNTH,A MOV M100, A MOV DISTANCE,A BK1: MOV @R0, A DEC R0 DJNZ R2, BK1 MOV PRICE,DAY_PRICE; 起动初始化 MOV COUNTL, #00H; 起步价 MOV COUNTH, #05H LCALL CP_DIS; 总金额和单价显示 K1: JB S2, K2 ACALL T10MSD JB S2, K2 WAIT2: JNB S2, WAIT2 INC S22 MOV A, S22 CJNE A, #1, NEXT1 LCALL PA_DIS LJMP KEY_DJ NEXT1:CJNE A, #2, NEXT2 CLR TR0 LCALL HMS_DIS LJMP KEY_SJ NEXT2:CJNE A, #3, K2 MOV S22, #0 简易出租车计价器设计
ACALL T100MSD ACALL T100MSD MOV M1, A MOV A, H2 SUBB A, H1 MOV H1, A NXT2: CJNE A, #3, K3 MOV S33, #0 LCALL CP_DIS K3: JB S4, BK_KEY_MAIN ACALL T10MSD JB S4, BK_KEY_MAIN WAIT4:JNB S4, WAIT4 INC S44 MOV A, S44 CJNE A, #1, NT1 MOV PRICE,DAY_PRICE LCALL CP_DIS NT1:CJNE A, #2, NT2 MOV PRICE,NIGHT_PRICE LCALL CP_DIS NT2:CJNE A, #3, NT3 MOV PRICE,MIDWAY_PRICE SETB TR1 LCALL CP_DIS NT3:CJNE A, #4, BK_KEY_MAIN MOV S44, #0 LJMP KEY_MAIN BK_KEY_MAIN: LJMP WA1 KEY_DJ:JB S1, KY1 ACALL T10MSD JB S1, KY1 WAIT5:JNB S1, WAIT5 INC S11 MOV A, S11 CJNE A, #1, NEXT11 LJMP DAY_P NEXT11: CJNE A, #2, NEXT12 LCALL NIG_P NEXT12:CJNE A, #3, KY1 LCALL MID_P MOV S11, #0 LJMP KEY_MAIN KY1:JB S2, KY2 - 14 -
K2: JB S3, K3 ACALL T10MSD JB S3, K3 WAIT3:JNB S3, WAIT3 INC S33 MOV A, S33 CJNE A, #1, NXT1 LCALL DP_DIS NXT1: CJNE A, #2, NXT2 CLR C MOV A, M2 SUBB A, M1 LJMP KEY_DJ NEXT13:CJNE A, #2, NEXT14 CLR TR0 LCALL HMS_DIS LCALL KEY_SJ NEXT14:CJNE A, #3, KY2 MOV S22, #0 LJMP KEY_MAIN KY2:AJMP KEY_DJ KEY_SJ:JB S1, KEY1 ACALL T10MSD JB S1, KEY1 WAIT7:JNB S1, WAIT7 INC S11 MOV A, S11 CJNE A, #1,NEXT21 LCALL HOU_T NEXT21:CJNE A, #2,NEXT22 LCALL MIN_T NEXT22: CJNE A, #3,KEY1 MOV S11, #0 LJMP KEY_MAIN KEY1: JB S2, KEY2 ACALL T10MSD JB S2, KEY2 WAIT8:JNB S2, WAIT8 INC S22 MOV A, S22 CJNE A, #1, NEXT23 LCALL PA_DIS LJMP KEY_DJ NEXT23:CJNE A, #2, NEXT24 CLR TR0 简易出租车计价器设计
ACALL T10MSD JB S2, KY2 WAIT6:JNB S2, WAIT6 INC S22 MOV A, S22 CJNE A, #1, NEXT13 LCALL PA_DIS ADD A, DAY_PRICE DA A MOV DAY_PRICE,A MOV A, DAY_PRICE CJNE A, #99H, KEY11 MOV DAY_PRICE, #0 KEY11: JB S4, KEY12 LCALL T10MSD JB S4, KEY12 MOV A,DAY_PRICE ADD A, #99H DA A MOV DAY_PRICE,A CJNE A, #00H, KEY12 MOV A, #99H KEY12: JB S1, KEY13 ACALL T10MSD JB S1, KEY13 WAIT11: JNB S1, WAIT11 INC S11 MOV A, S11 CJNE A, #1, NEXT31 LCALL DAY_P NEXT31:CJNE A, #2,NEXT32 LCALL NIG_P NEXT32:CJNE A, #3,NEXT33 LCALL MID_P NEXT33:CJNE A, #4, KEY13 MOV S11, #0 KEY13:JB S2, KEY14 LCALL T10MSD JB S2, KEY14 WAIT12:JNB S2, WAIT12 LJMP KEY_MAIN KEY14:AJMP DAY_P NIG_P:SETB F0 ;调用定时延时标志位 LCALL T100MSD - 15 -