




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上出租车计价器摘 要:本设计是利用单片机技术来实现一台多功能出租车计价器,由单片机、键盘控制部分、串口驱动显示电路、里程计价单元部分组成,能够实现白天晚上转换计价、中途等待计价、总金额路程转换显示、时钟显示、始终调整等功能,具有性能可靠、电路简单、成本低等特点。关键词:单片机控制 出租车计价器 数码显示1引言随着电子技术的发展,出租车计价器技术也在不断进步和提高,国内出租车计价器已经经历了四个阶段的发展,从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器,再从集成电路式到目前的单片机系统设计的出租车计价器。单片机控制的出租车计价
2、器性能可靠、电路简单、成本低,在出租车行业已经得到了广泛的应用。2总体设计方案出租车计价器通过传感器与行驶车辆连接。出租汽车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价营运里程。目前市场上出租车计价器功能主要有具有数据的复位功能、白天/晚上转换功能、数据输出功能、计时计价功能等。本设计利用89S51单片机丰富的I/O口进行移位显示和键盘控制,用六片74164驱动六片数码管显示,并带有复位电路,可以在不正常状况下按复位键复位。2.1设计思路出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。从起步价开始,当汽车程行驶未满2公里时,均按起步价计算。过
3、2公里后,实现每1公里单价收费,中间遇暂停时,计程数不再增加,开始计时收费,测距收费和测时收费的和便构成了一位乘客的车费。里程计算是通过安装在车轮上的霍尔传感器A44E检测到信号传到单片机通过处理计算,送给显示单元的。完整的出租车计价器还应包括查看、统计、时钟显示等功能。2.2总体设计框图总体设计框图如图1所示。键盘控制89S51单片机里程计算单元串口显示驱动电路总金额显示单价显示图1 出租车计价器原理框图3设计原理分析本系统的硬件设计主要包括单片机AT89S51、数据显示部件、A44E霍尔传感器电路、里程计算及计价单元的设计。在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设
4、计。软件设计主要可分为主程序模块、定时计数中断程序、里程计数中断服务程序、中途等待中断服务程序、时间调整子程序、显示子程序服务程序、字型码表及延时子程序。3.1硬件设计计价器的单片机控制方案图如图1所示。它由以下几个部件组成:单片机AT89S51、总金额及单价显示部件、键盘控制部件、里程计算单元、串口显示驱动电路等。利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。具体电路参见附录。3.11里程计算、计价单元的设计出租车中需要一个能准确获得车轮转动即路程计量信号的装置
5、,以得到标准的脉冲信号送入单片机外部中断0即P3.2引脚,由单片机完成计程数及车费的换算及显示。我们在汽车联轴器按圆周间隔嵌入磁钢,用霍尔传感器A44E检测并输出脉冲。原理图如图2所示。图2 传感器测距示意图3.12数据显示单元设计由于设计要求有单价(2 位)、路程(2 位)、总金额(3 位)显示输出,加上我们另外扩展了时钟显示(包含时分秒的显示),我们采用6 位LED数码管的分屏显示。时钟显示时,左端两位显示的是时,中间两位显示分,右边两位显示秒;总金额单价显示时,左边三位显示总金额,右边两位显示目前单价,中间显示短横线表示本位没有使用;总路程单价显示时,同样是左边两位显示总路程,右边两位显
6、示目前单价中间两位显示短横线;当切换置中途等待计价时,左边三位显示总金额,右边两位显示中途等待单价。几个显示部分通过按键可以自由切换。显示如图3所示。000210时钟显示(图中显示为12点0分0秒)20.03.0总金额和单价显示(图中显示为总金额20.0元,每公里3.0元)013.0里程和单价显示(图中显示为10公里,每公里3.0元)图3 采用6 位LED数码管的分屏显示本设计显示部分采用串行移位显示,从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动。显示器原理图如图4所示。图4 显示器
7、原理图3.13键盘设计本设计采用4个按键用来控制系统时间,总金额、单价显示,里程、单价显示,中途等待计价显示的切换,并且置有一个复位键S5。(1)S1按键的功能S1为计价启动/结束按键,在显示时间的情况下,按下S1为启动计价,再次按下S1为结束计价(2)S2按键的功能 在按下S1按键启动计价之后,若接着按下S2键则进入中途等待计价模式。在调整时间时,按下S2键则数值减1。(3)S3按键的功能 计价结束,在显示金额及单价时,若按下S3键则显示路程和单价,再次按下S3,可返回显示金额及单价。在调整时间时,按下S3键则数值加1。(4)S4按键的功能计价结束时,若按下S4,则返回系统时间的显示。在显示
8、时间时,按下S4进入时间调整,默认调整时,再次按下S4,调整分,再次按下S4,返回系统时间显示。按键电路如图5所示图5 按键电路图3.2软件设计本系统的软件设计主要可分为主程序模块、定时计数中断程序、里程计数中断服务程序、中途等待中断服务程序、显示子程序服务程序、键盘服务程序六大模块。下面对各部分模块作介绍。3.21系统主程序设计在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、
9、计程和计价等不同的操作。主程序流程图如图6所示。当按下S1时,就启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。主程序流程图如图6所示。启动计价器S1按下?否否是判时间设单价S2按下?调用时间调整是是开始否S1按下?中途等待计价霍尔中断?否否是是初始化数据是S4按下?返回正
10、常计价S1按下?否显示时间停止计价 S3按下?显示金额及单价是显示路程和单价否S3按下?否是图6 主程序流程图主程序如下:DAY_PRICE EQU 6FHNIGHT_PRICE EQU 6EHMID_PRICE EQU 6DHSTART_PRICE EQU 6CHCOUNTL EQU 6BHCOUNTH EQU 6AHM100 EQU 69H ; 外部中断次数DISTANCE EQU 68H ; 行车距离MS100 EQU 67HSEC EQU 66HMIN EQU 65HHOUR EQU 64HLEDSL EQU 63H ; 时分钞显示缓冲区LEDSH EQU 62HLEDML EQU 6
11、1HLEDMH EQU 60HLEDHL EQU 5FHLEDHH EQU 5EHLEDDANJIAL EQU 5DH ; 总额单价显示缓冲区LEDDANJIAH EQU 5CHLINE_ EQU 5BHLEDCOUNT1 EQU 5AHLEDCOUNT2 EQU 59HLEDCOUNT3 EQU 58HLEDDANJIA2L EQU 57H ; 路程,单价显示缓冲区LEDDANJIA2H EQU 56HLINE_ EQU 55HLINE_ EQU 54HLEDDISTANCEL EQU 53HLEDDISTANCEH EQU 52HLEDDAY_PL EQU 51H ; 中途,晚上,白天显示
12、缓冲区LEDDAY_PH EQU 50HLEDNIG_PL EQU 4FHLEDNIG_PH EQU 4EHLEDW_PL EQU 4DHLEDW_PH EQU 4CHS1 BIT P2.0S2 BIT P2.1S3 BIT P2.2S4 BIT P2.3MID1 EQU 4BHPRICE EQU 4AHDAYMID EQU 49HNIGHTMID EQU 48H ORG 0000H AJMP MAIN ORG 0003H AJMP TO ORG 000BH AJMP TOTIME ORG 001BH AJMP TOSTART ORG 0030HMAIN:MOV SP,#70H MOV TMO
13、D, #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,#69HLOOPL:MOV R0,#0 DEC R0 DJNZ R7,LOOPL MOV COUNTL, #00H ; 起步价 MOV COUNTH, #05H MOV DAY_PRICE,#25H ; 白天价格初始化 MOV DAYMID,#13H MOV NIGHT_PRICE,#30H ;
14、晚上价格初始化 MOV NIGHTMID,#15H MOV START_PRICE, #50H ; 起步价初始化 MOV MID1,#0 MOV DISTANCE, #02H MOV HOUR, #12HKEY_MAIN: SETB TR0 ACALL HMS_DIS ACALL T100MSD ACALL T100MSD ACALL T100MSD JNB S4,W3K11:JB S1,KEY_MAIN ACALL T10MSD JB S1,KEY_MAIN JNB S1,$ MOV A,HOUR ;判时间设单价 CLR CY CJNE A,#08H,K12 AJMP K16K12:JC K
15、13 CLR CY CJNE A,#20H,K15 AJMP K13K15:JNC K13K16:MOV PRICE,DAY_PRICE MOV MID_PRICE,DAYMID AJMP K14W3:AJMP K41K13:MOV PRICE,NIGHT_PRICE MOV MID_PRICE,NIGHTMIDK14:MOV 29H,PRICE MOV R0,#LEDDANJIAL ;启动初始化 MOV R2,#06H CLR A MOV M100,ABK1:MOVR0,A DEC R0 DJNZ R2,BK1 MOV COUNTL,#00H MOV COUNTH,#05H MOV DIST
16、ANCE,#02H SETB EX0 ;开始计价 LCALL CP_DIS ;金额单价显示K21:JB S2,K24 ACALL T10MSD JB S2,K24 JNB S2,$ MOV PRICE,MID_PRICE SETB TR1 ;启动中途等待计价 ACALL CP_DIS MOV A,M100K22:CJNE A,M100,K23 JB S1,K22 ACALL T10MSD JB S1,K22 JNB S1,$ CLR TR1 MOV MID1,#00H MOV PRICE,29H ACALL CP_DIS AJMP K25K23:CLR TR1 ;关闭中途等待计价 MOV MI
17、D1,#00H MOV PRICE,29H ACALL CP_DISK24:JB S1,K21 ACALL T10MSD JB S1,K21 JNB S1,$K25:JB S4,K31 ACALL T10MSD JB S4,K31 JNB S4,$ AJMP KEY_MAINK31:JB S3,K25 ACALL T10MSD JB S3,K25 JNB S3,$ ACALL DP_DIS ;调用里程显示K32:JB S4,K33 ACALL T10MSD JB S4,K33 JNB S4,$ AJMP KEY_MAINK33:JB S3,K32 ACALL T10MSD JB S3,K32
18、JNB S3,$ ACALL CP_DIS AJMP K25K41:ACALL T10MSD JB S4,W2 JNB S4,$ AJMP HOU_TW2:AJMP K113.22 定时中断服务程序在定时中断服务程序中,每100ms 产生一次中断,当产生10 次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。其程序流程如图7所示。开始保护现场重置计数初值否中断10次?是数据送显示缓冲单元调用显示子程序恢复现场 并中断返回图7 定时中断服务程序流程图定时中断服务程序如下:TOTIME: PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,
19、#0B0H INC MS100 MOV A,MS100 CJNE A,#10,RETURN MOV MS100,#0 MOV A,SEC ADD A,#1 DA A MOV SEC,A CJNE A,#60H,RETURN MOV SEC,#0 MOV A,#1H ADD A,MIN DA A MOV MIN,A CJNE A,#60H,RETURN MOV MIN,#0 MOV A,#1H ADD A,HOUR DA A MOV HOUR,A CJNE A,#24H,RETURN MOV HOUR,#0RETURN: POP ACC POP PSW RETI3.23 里程计数中断服务程序每当
20、霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000 次时,使微机进入里程计数中断服务程序中。在该程序中,需要完成当前行驶里程数和总额的累加操作,并将结果存入里程和总额寄存器中。里程计数中断服务程序如下:TO: PUSH PSW PUSH ACC MOV A,#1 ADD A,M100 MOV M100,A MOV A,M100 CJNE A,#100,RETURN1 MOV M100,#0 INC 21H MOV A,21H CJNE A,#0AH, RETURN1 ;已经到了1公里 MOV 21H,#0 MOV A,#1 ADD A,DISTANCE DA A
21、 MOV DISTANCE,A MOV A,PRICE ANL A,#0FH ADD A,COUNTL DA A MOV COUNTL,A MOV A,PRICE ANL A,#0F0H SWAP A ADD A,COUNTH DA A MOV COUNTH,A MOV A,COUNTL CJNE A,#10H,RETURN1 MOV COUNTL,#0 MOV A,#1 ADD A,COUNTH DA A MOV COUNTH,A CJNE A,#99H,RETURN1 MOV COUNTH,#0RETURN1:POP ACC POP PSW RETI3.24 中途等待中断服务程序当在计数状
22、态下霍尔开关没有输出信号,片内的T1 定时器便被启动,每当计时到达5分钟,就对当前金额加上中途等待的单价,以后每分钟都自动加上中途等待的单价。当中途等待结束的时候,也就自动切换到正常的计价。中途等待中断服务程序如下:TOSTART: PUSH PSW PUSH ACC MOV TH1,#3CH MOV TL1,#0B0H DJNZ 22H,RETURN2 ;1S未到返回 MOV 22H,#0AH MOV A,#1 ADD A,23H DA A MOV 23H, A CJNE A,#60H,RETURN2 MOV 23H,#0 MOV A,MID1 CJNE A,#00H,W1 MOV A,#1
23、 ADD A,24H DA A MOV 24H,A CJNE A,#05H,RETURN2 INC MID1 MOV 24H,#0W1: MOV A,PRICE ADD A,COUNTL DA A MOV COUNTL,A CJNE A,#10H,RETURN2 MOV COUNTL,#0 MOV A,#1 ADD A,COUNTH DA A MOV COUNTH,A CJNE A,#99H,RETURN2 MOV COUNTH,#0RETURN2:POP ACC POP PSWRETI3.25 时间调整子程序当S4按下即调用时间调整子程序,用加减的方式进行调整。时间调整子程序如下:HOU_T
24、:CLR TR0 ;调整小时 ACALL T100MSD ACALL T100MSD MOV LEDHL,#0AH MOV LEDHH,#0AH ACALL HMS_DIS1 ;直接调用,不经过拆分 ACALL T100MSD ACALL T100MSD MOV SEC,#00H ACALL HMS_DIS JB S3,K42 ACALL T10MSD JB S3,K42 JNB S3,$ MOV A,HOUR ADD A,#1 DA A MOV HOUR,A CJNE A,#24H,K42 MOV HOUR,#0K42:JB S2,K43 ACALL T10MSD JB S2,K43 JNB
25、 S2,$ MOV A,HOUR ADD A,#99H DA A MOV HOUR,A CJNE A,#99H,K43 MOV HOUR,#23HK43:JB S4,HOU_T ACALL T10MSD JB S4,HOU_T JNB S4,$MIN_T:ACALL T100MSD ;调整分钟 ACALL T100MSD MOV LEDML,#0AH MOV LEDMH,#0AH ACALL HMS_DIS1 ACALL T100MSD ACALL T100MSD MOV SEC,#0 ACALL HMS_DIS JB S3,K51 ACALL T10MSD JB S3,K51 JNB S3,
26、$ MOV A,MIN ADD A,#1 DA A MOV MIN,A CJNE A,#60H,K51 MOV MIN,#0K51:JB S2,K52 ACALL T10MSD JB S2,K52 JNB S2,$ MOV A,MIN ADD A,#99H DA A MOV MIN,A CJNE A,#99H,K52 MOV MIN,#59HK52:JB S4,MIN_T ACALL T10MSD JB S4,MIN_T JNB S4,$ AJMP KEY_MAIN3.26 显示子程序服务程序由于是分屏显示数据,所以就要用到3个显示子程序,分别是:时分秒显示子程序(HMS_DIS)、金额单价显
27、示子程序(CP_DIS)、路程单价显示子程序(DP_DIS)。显示子程序如下:HMS_DIS:PUSH ACC PUSH PSW SETB RS1 MOV R0,#SEC ;时分秒的拆分(三个字节) MOV R1,#LEDSL MOV R6,#03HLOOP1:MOV A,R0 MOV B,A ANL A,#0FH MOV R1,A DEC R1 MOV A,B SWAP A ANL A,#0FH MOV R1,A DEC R1 DEC R0 DJNZ R6,LOOP1 POP PSW POP ACCHMS_DIS1: PUSH ACC PUSH PSW MOV R7,#06H MOV R0,
28、#LEDSLLOOP: MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,ABK:JBC TI,NEXT SJMP BKNEXT:DEC R0 DJNZ R7,LOOP CLR RS1 POP PSW POP ACC RETCP_DIS:PUSH ACC PUSH PSW SETB RS1 MOV R0,#PRICE ;单价拆分(两个字节) MOV R1,#LEDDANJIAL MOV R6,#03H MOV A,R0 MOV B,A ANL A,#0FH MOV R1,A DEC R1 MOV A,B SWAP A ANL A, #0FH MOV R
29、1,A DEC R1 MOV A,LEDDANJIAL ;送单价低位 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,LEDDANJIAH ;送单价高位 MOV DPTR,#TAB MOVC A,A+DPTR CPL ACC.4 MOV SBUF,A JNB TI,$ CLR TI MOV SBUF,#0FEH ;送短线(短线的字型码是0FEH) JNB TI,$ CLR TI MOV R0,#COUNTH MOV R1,#LEDCOUNT2 MOV A,R0 MOV B,A ANL A,#0FH MOV R1,A DE
30、C R1 MOV A,B SWAP A ANL A,#0FH MOV R1,A MOV LEDCOUNT1,COUNTL MOV A,LEDCOUNT1 ;送总金额低位 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,LEDCOUNT2 ;送总金额中位 MOV DPTR,#TAB MOVC A,A+DPTR CPL ACC.4 MOV SBUF,A JNB TI,$ CLR TI MOV A,LEDCOUNT3 ;送总金额高位 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$
31、 CLR TI CLR RS1 POP PSW POP ACC RETDP_DIS:PUSH ACC PUSH PSW SETB RS1 MOV R0,#PRICE ;单价的拆分(一个字节) MOV R1,#LEDDANJIAL MOV A,R0 MOV B,A ANL A,#0FH MOV R1,A DEC R1 MOV A,B SWAP A ANL A,#0FH MOV R1,A DEC R1 MOV A,LEDDANJIAL ;送单价低位 MOV DPTR,#TAB MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,LEDDANJIAH ;送单价高位 MOV DPTR,#TAB MOVC A,A+DPTR CPL ACC.4 MOV SBUF,A JNB TI,$ CLR TI MOV SBUF,#0FEH ; JNB TI,$ CLR TI MOV SBUF,#0FEH ;送短线 JNB TI,$ CLR TI MOV R0,#DISTANCE MOV R1,#LED
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 609:2025 EN Coal and coke - Determination of carbon and hydrogen - High temperature combustion method
- 义务教育课程标准解读与思考
- 电力负荷控制员练习题库与参考答案解析
- 12月病理学模拟试题(含参考答案解析)
- 木材化学成分在生物医学工程中的应用考核试卷
- 纺织品的绿色染整工艺创新考核试卷
- 肥料制造的农田耕作与机械化作业考核试卷
- 2025年中子、电子及Γ辐照装置合作协议书
- 认证认可ISO设施管理体系考核试卷
- 四个精某著名企业激励故事
- 家长讲堂:法制主题教育
- 肿瘤科进修心得体会护理
- 第五单元 生物与环境 大单元教学设计-2023-2024学年科学四年级下册苏教版
- 生长激素在临床中的应用
- 武汉市2025届高中毕业生二月调模拟卷试题
- 卫生监督信息员培训课件
- 杜邦分析法公式
- 五年级下册劳动《编花篮》课件
- 贵州省2025届高考英语二模试卷含解析
- 2024年公务员考试申论课件:全面掌握答题技巧
- 2024年大唐集团招聘笔试试题及答案-
评论
0/150
提交评论