基于单片机控制的出租车计价器设计_第1页
基于单片机控制的出租车计价器设计_第2页
基于单片机控制的出租车计价器设计_第3页
基于单片机控制的出租车计价器设计_第4页
基于单片机控制的出租车计价器设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机控制的出租车计价器设计任务书一.设计要求(一)基本功能1. 显示: 可以显示 单价、里程、总金额2. 停车计费功能:中途因故停车超过 5 分钟后每分钟按当时单价的 50%收费3. 自动分时计费功能:白天和夜间应能自动更换单价 (二)性能 里程误差小于 2%(三)扩展功能1可增加时钟功能2可增加数据掉电保护功能二计划完成时间 三周1第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。2第二周完成软件的具体设计和硬件的制作。3第三周完成软件和硬件的联合调试。基于单片机控制的出租车计价器设计摘要:随着出租车行业的发展,出租车行业已经是城市交通的重要组成部分,以单片机为核心的智能出租车计价系统的开发就显得尤其重要。本设计采用 89S51 单片机为主控器,以 FJ2E-D10NK 霍尔传感器测距,实现对出租车的多功能的计价设计,并采用 AT24实现在系统掉电的时候保存单价和系统时间等信息,输出采用段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜,中途等待来调节单价,但同时在不计价的时候还能作为时钟为司机同志提供方便。 关键词:AT89S51,霍尔传感器,AT24C02,数码显示管,定时器/计数器目 录1 引言12 总体设计方案12.1 方案论证与比较 12.2 主要元器件的介绍 22.3 设计方框图33 电路设计原理分析 43.1 里程计算、计价单元的设计43.2 数据显示单元设计43.3 掉电存储单元的设计63.4 按键单元的设计63.5 主程序设计64 总结与体会 8参考文献 8附录 91 引言本次课程设计利用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。2 总体设计方案2.1 方案论证与比较方案一:采用数字电路控制。其原理方框图如图 21 所示。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。图 21 数字电路方案方案二:采用单片机控制。本方案以单片机为核心,设计上采用 89S51 单片机为主控器,以 FJ2E-D10NK 霍尔传感器测距,并采用 AT24C02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用 8 段数码显示管。利用单片机丰富的 I/O 端口,及其控制的灵活性,实现基本的里程计价功能和价格调整、时钟显示功能。本电路设计的计价器不但能实现基本的计价,而且还能根据白天,黑夜,中途等待来调节单价,但同时在不计价的时候还能作为时钟为司机同志提供方便。单片机计算总价的公式为:总价=起步价+单价*(总里程-起步里程) 。89S51 作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能为设计电路提供了很好的选择原理结构如图 2-2 所示。图 22 单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。2.2 主要元器件的介绍(1)MCS51 系列 AT89S51 芯片管脚图如图 2-3 所示:图 2- 3 89S51 芯片管脚图AT89S51 的是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4K bytes 的可系统编程的 Flash 只读程序存储器,高密度、非易失性储存生产,可灵活控制。(2)FJ2E-D10NK 霍尔传感器 它是一种磁传感器。可以检测磁场及其变化,可在各种磁场有关的场合中使用。以霍尔效应为其工作基础。它结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动不怕一些污染和腐蚀,而且精度高工作温度范围宽。FJ2E-D10NK 集成霍尔开关由稳压器,霍尔电势发生器(即硅霍尔片)B,差分放大器 C,施密特触发器 D 和 OC 门输出 E 五个基本部分组成。 (1) 、 (2) 、 (3)代表集成霍尔开关的三个引出端点。外形及接线如图 2-4 所示。F J R 2 E -D 1 0 N KV c c G N DO U T1 2 3F J R 2 E -D 1 0 N K212 K+ 4 . 5 1 2 V3 O U T(a)外形图 (b)接线图图 2- 4 霍尔传感器外形及接线(3)数码管数码管时一种半导体发光器件,其基本单元时发光二极管。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。驱动时将所有数码管的 8 个显示笔划为“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管 的公共极 COM 增加位选通控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,通过单片机对位选通 COM 端电路的控制来觉得数码管显示的字形。其管脚图见2-5 所示。 图 2-5 数码管脚图2.3 设计方框图总框图的设计包括键盘控制模块,启动/清除开关模块,掉电储存单元模块 ,里程传感器,单片机控制模块部分,显示模块,锁存器和显示驱动电路。输入部分通过 89S51 控制输出的显示数字。其结构框图如 2-6 所示。图 2-6 结构总框图3 电路设计原理分析3.1 里程计算、计价单元的设计里程计算是通过安装在车轮上的霍尔传感器 FJ2E-D10NK 检测到的信号,送到单片机,经处理计算,送给显示单元的。其原理如图 3-1 所示。车轮霍尔传感器小磁铁P 3 . 28 9 S 5 1图 3-1传感器测距示意图由于 FJ2E-D10NK 属于开关型的霍尔传感器件,其工作电压范围(4.5V18V) ,其输出的信号符合 TTL 电平标准,可以直接接到单片机的 I/O 端口上,而且其最高检测频率可达到 1MHZ。我们选择了 P3.2 口作为信号的输入端,内部采用外部中断 0 车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当技术达到 1000 次时,也就是 1 公里,单片机就控制将金额自动的增加,其计算公式:当前单价公里数=金额。3.2 数据显示单元设计用单片机驱动 LED 数码管按显示方式分,有静态显示和动态(扫描)显示 ,由于设计要求有单价(2 位) ,路程(2 位) ,总金额(3 位)显示输出,加上我们另外扩展了时钟显示(包含时分秒的显示) ,而且在白天其对比度也不能够满足要求,因此我们采用了 6 位 LED 数码管道分屏显示,如图 3-2(A、B、C、D)所示。1 2 0 0 2 0图 3- 2(A)时钟显示 (显示为 12 点 00 分 20 秒)1 20 20图 3- 2(B)总金额和单价显示(显示为总金额 12.0 元,每公里 2.0 元)1 2 20图 3- 2(C)路程和单价显示(图中显示总路程 12 公里,当前单价 2.0 元)10 30 2. 0图 3- 2(D)单价调整显示(图中显示为右起白天单价 2.0 元、晚上 3.0/中途等待 1.0 元)数据的分屏的显示是通过按键 S1 实现切换的。在出租车不走的时候,按下 S1,可以实现数据的分屏显示;车载行走的时候只有总金额和单价显示屏在显示,当到达目的的的时候,就可以按下 S1 切换到里程和单价显示屏,供客户查询。显示电路的电路原理图如图 3-3 所示。图 3-3 显示器原理图从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器 74HC164 还兼作数码管的驱动,电路中的三个整流管 D1D3 的作用是降低数码管的工作电压,增加其使用寿命。3.3 掉电存储单元的设计 掉电存储单元的作用是在电源断开的时候,储存当前设定的单价信息。AT24C02 是 ATMEL 公司的 2 KB 字节的电可擦除储存芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为 1mA,静态电流 10Ua(5.5V) ,芯片内的资料可以在断电的情况下保存 40 年以上,而且采用 8 脚的 DIP 封装,使用方便。掉电储存电路如图 3-4 所示。图 3-4 掉电储存电路图中 R8、R10 是上拉电阻,其作用是减少 AT24C02 的静态功耗,由于 AT24C02 的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线 SCL(移位脉冲)和 SDA(数据地址)与单片机传送数据。每当设定一次单价,系统就自动调用储存程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读储存器程序,将储存器的单价等信息,读到缓存单元内,供主程序使用。3.4 按键单元的设计电路共采用了五个按键,S1、S2、S3、S4、S5,其功能分别是:S1 分屏显示切换按键,S2功能设定按键,S3:+/白天晚上切换按键,S4:/中途等待开关,S5:上电复位。3.5 主程序设计在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。主程序流程图如图9 所示。当按下S1时,就启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。主程序流程图如图3-5所示。 开始S1 按下 ?初始化数据S4 按下?设定默认单价(白天)启动计价器里程中断?到一公里?总路程加 1总金额加 1传感有信号?停止计价和里程计数是是是是否否否设定晚上单价按下 S4?设定中途等待单价S4 按下 ?返回时间显示是是是否否否显示金额及单价S3 按下?否是显示路程和单价S3 按下?是 否图 3-5 主程序流程图4 总结与体会通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89S51 单片机及其引脚说明、AT24C02 引脚图及其引脚功能等,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。参考文献1周航慈著.单片机应用程序设计基础.北京:电子工业出版社, 1997 年 7 月2朱承高.电工及电子技术手册M.北京:高等教育出版社,19903阎石.数字电子技术基础(第三版). 北京:高等教育出版社, 19894廖常初.现场总线概述J.电工技术,1999.6附录1. 总体设计电路图出租车计价器总体电路图2计价表使用说明(1)S1 按键的功能在出租车不走的时候,按下 S1,可以实现数据的分屏显示;车在行走的时候只有总金额和单价显示屏在显示,当到达目的地的时候,客户要求查看总的里程的时候,就可以按下 S1 切换到里程和单价显示屏,供客户查询。(2)S2 按键的功能在按下 S1 按键之后,若接着按下 S2 键则进行单价调整(默认为调整白天单价),当接着按下 S1 时,则进行晚上单价调,再次按下 S1 可进行中途等待单价调整。当单价调整结束后,可以通过过按下 S2 按键进行时间调整,默认为调整时,接着按下 S1可进行调整分,分调整后再接下 S1 可进行秒调整。当时调整完成后,若接着按下 S2则又可进行单价调整。(3)S3 按键的功能在显示金额及单价时,若按下 S3 键则显示路程和单价,再次按下 S3,可返回显示金额及单价。(4)S4 按键的功能在按下 S1 按键之后,若接着按下 S4 按键,则进行设定默认晚上单价,并启动计价器,若没有按下 S4 则可设定默认单价(白天) ,并启动计价器。当设定默认晚上单价结束后,再次接下 S4 按键,则可设定默认中途等待单价,并启动计价器。当设定默认中途等待单价后,若还按一次 S4,则返回系统时间的显示。3. 全部源程序该出租车计价器的系统软件设计源程序如下:DAY_PRICEEQU 6FHNIGHT_PRICEEQU 6EHMIDWAY_PRICEEQU 6DHSTART_PRICEEQU 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 61HLEDMH 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 ; 中途,晚上,白天显示缓冲区LEDDAY_PH EQU 50HLEDNIG_PL EQU 4FHLEDNIG_PH EQU 4EHLEDW_PL EQU 4DHLEDW_PH EQU 4CHS1 BIT P1.0S2 BIT P1.1S3 BIT P1.2S4 BIT P1.3S11 EQU 4BHS22 EQU 4AHS33 EQU 49HS44 EQU 48HM1 EQU 47HH1 EQU 46HM2 EQU 45HH2 EQU 44HPRICE EQU 43HORG 0000HAJMPMAINORG 0003HAJMPTOORG 000BHAJMPTOTIMEORG 001BHAJMPTOSTARTORG 0030HMAIN: MOV SP,#70HMOV TMOD, #11HMOV TH0, #3CHMOV TL0, #0B0HMOV TH1, #3CHMOV TL1, #0B0HMOV 22H, #0AHSETB EASETB TR0SETB EX0SETB IT0SETB ET0SETB ET1MOV R7,#34MOV R0,#69HLOOPL:MOV R0,#0DEC R0DJNZR7,LOOPLMOV COUNTL, #00H ; 起步价MOV COUNTH, #05HMOV DAY_PRICE,#25H ; 白天价格初始化MOV NIGHT_PRICE,#30H ; 晚上价格初始化MOV MIDWAY_PRICE,#10H ; 中途等待初始化MOV START_PRICE, #50H ; 起步价初始化MOV S11, #0MOV S22, #0MOV S33, #0MOV S44, #0MOV DISTANCE, #02HMOV HOUR, #12HKEY_MAIN: SETB TR0ACALL HMS_DISACALL T100MSDACALL T100MSDACALL T100MSDJB S1, KEY_MAINACALL T10MSDJB S1, KEY_MAINJNB S1,$SJMP WAI1WA1:JB S1, K1ACALL T10MSDJB S1, K1WAIT1:JNB S1, WAIT1MOV R0, #LEDDANJIALMOV R2, #6CLR AMOV COUNTL,AMOV COUNTH,AMOV M100, AMOV DISTANCE,ABK1: MOV R0, ADEC R0DJNZ R2, BK1MOV PRICE,DAY_PRICE; 起动初始化MOV COUNTL, #00H; 起步价MOV COUNTH, #05HLCALL CP_DIS; 总金额和单价显示K1: JB S2, K2ACALL T10MSDJB S2, K2WAIT2: JNB S2, WAIT2INC S22MOV A, S22CJNE A, #1, NEXT1LCALL PA_DISLJMP KEY_DJNEXT1:CJNE A, #2, NEXT2CLR TR0LCALL HMS_DISLJMP KEY_SJNEXT2:CJNE A, #3, K2MOV S22, #0K2: JB S3, K3ACALL T10MSDJB S3, K3WAIT3:JNB S3, WAIT3INC S33MOV A, S33CJNE A, #1, NXT1LCALL DP_DISNXT1: CJNE A, #2, NXT2CLR CMOV A, M2SUBB A, M1MOV M1, AMOV A, H2SUBB A, H1MOV H1, ANXT2: CJNE A, #3, K3MOV S33, #0LCALL CP_DISK3: JB S4, BK_KEY_MAINACALL T10MSDJB S4, BK_KEY_MAINWAIT4:JNB S4, WAIT4INC S44MOV A, S44CJNE A, #1, NT1MOV PRICE,DAY_PRICELCALL CP_DISNT1:CJNE A, #2, NT2MOV PRICE,NIGHT_PRICELCALL CP_DISNT2:CJNE A, #3, NT3MOV PRICE,MIDWAY_PRICESETB TR1LCALL CP_DISNT3:CJNE A, #4, BK_KEY_MAINMOV S44, #0LJMP KEY_MAINBK_KEY_MAIN: LJMP WA1KEY_DJ:JB S1, KY1ACALL T10MSDJB S1, KY1WAIT5:JNB S1, WAIT5INC S11MOV A, S11CJNE A, #1, NEXT11LJMP DAY_PNEXT11: CJNE A, #2,NEXT12LCALL NIG_PNEXT12:CJNE A, #3, KY1LCALL MID_PMOV S11, #0LJMP KEY_MAINKY1:JB S2, KY2ACALL T10MSDJB S2, KY2WAIT6:JNB S2, WAIT6INC S22MOV A, S22CJNE A, #1, NEXT13LCALL PA_DISLJMP KEY_DJNEXT13:CJNE A, #2, NEXT14CLR TR0LCALL HMS_DISLCALL KEY_SJNEXT14:CJNE A, #3, KY2MOV S22, #0LJMP KEY_MAINKY2:AJMP KEY_DJKEY_SJ:JB S1, KEY1ACALL T10MSDJB S1, KEY1WAIT7:JNB S1, WAIT7INC S11MOV A, S11CJNE A, #1,NEXT21LCALL HOU_TNEXT21:CJNE A, #2,NEXT22LCALL MIN_TNEXT22: CJNE A, #3,KEY1MOV S11, #0LJMP KEY_MAINKEY1: JB S2, KEY2ACALL T10MSDJB S2, KEY2WAIT8:JNB S2, WAIT8INC S22MOV A, S22CJNE A, #1, NEXT23LCALL PA_DISLJMP KEY_DJNEXT23:CJNE A, #2, NEXT24CLR TR0LCALL HMS_DISNEXT24:CJNE A, #3, KEY2MOV S22,#0LCALL KEY_SJLJMP KEY_MAINKEY2:AJMP KEY_SJDAY_P:SETB F0 LCALL T100MSDLCALL T100MSDMOV LEDDAY_PL, #0AHMOV LEDDAY_PH, #0AHLCALL PA_DIS1LCALL T100MSDLCALL T100MSDLCALL PA_DISLP1: JB S3, KEY11MOV A, #1ADD A, DAY_PRICEDA AMOV DAY_PRICE,AMOV A, DAY_PRICECJNE A, #99H, KEY11MOV DAY_PRICE, #0KEY11: JB S4, KEY12LCALL T10MSDJB S4, KEY12MOV A,DAY_PRICEADD A, #99HDA AMOV DAY_PRICE,ACJNE A, #00H, KEY12MOV A, #99HKEY12: JB S1, KEY13ACALL T10MSDJB S1, KEY13WAIT11: JNB S1, WAIT11INC S11MOV A, S11CJNE A, #1,NEXT31LCALL DAY_PNEXT31:CJNE A, #2,NEXT32LCALL NIG_PNEXT32:CJNE A, #3,NEXT33LCALL MID_PNEXT33:CJNE A, #4, KEY13MOV S11, #0KEY13:JB S2, KEY14LCALL T10MSDJB S2, KEY14WAIT12:JNB S2, WAIT12LJMP KEY_MAINKEY14:AJMP DAY_PNIG_P:SETB F0 ;调用定时延时标志位LCALL T100MSDLCALL T100MSDMOV LEDNIG_PL, #0AHMOV LEDNIG_PH, #0AHLCALL PA_DIS1LCALL T100MSDLCALL T100MSDLCALL PA_DISJB S3, KEY21LCALL T10MSDJB S3, KEY21MOV A, #1ADD A, NIGHT_PRICEDA AMOV NIGHT_PRICE,ACJNE A, #99H,KEY21MOV NIGHT_PRICE,#0KEY21:JB S4, KEY22LCALL T10MSDJB S4, KEY22MOV A, NIGHT_PRICEADD A, #99HDA AMOV NIGHT_PRICE,ACJNE A, #00H, KEY22MOV NIGHT_PRICE,#99HKEY22:JB S1, KEY23ACALL T10MSDJB S1, KEY23WAIT15:JNB S1, WAIT15INC S11MOV A, S11CJNE A, #1,NEXT41LCALL DAY_PNEXT41:CJNE A, #2,NEXT42LCALL NIG_PNEXT42:CJNE A, #3,NEXT43LCALL MID_PNEXT43:CJNE A, #4, KEY23MOV S11, #0LJMP KEY_DJKEY23:JB S2, KEY24LCALL T10MSDJB S2, KEY24WAIT30:JNB S2, WAIT30LJMP KEY_MAINKEY24: AJMP NIG_PMID_P: SETB F0 ;调用定时延时标志位LCALL T100MSDMOV LEDW_PL, #0AHMOV LEDW_PH, #0AHLCALL PA_DIS1LCALL T100MSDLCALL PA_DISJB S3, KEY31LCALL T10MSDJB S3, KEY31MOV A, MIDWAY_PRICEADD A, #1DA AMOV MIDWAY_PRICE,ACJNE A, #99H, KEY31MOV MIDWAY_PRICE, #00HCJNE A, #100, KEY31MOV MIDWAY_PRICE, #0KEY31: JB S4, KEY32LCALL T10MSDJB S4, KEY32MOV A, MIDWAY_PRICEADD A, #99HDA AMOV MIDWAY_PRICE,ACJNE A, #00H, KEY32MOV NIGHT_PRICE,#99HKEY32: JB S1, KEY33ACALL T10MSDJB S1, KEY33WAIT18: JNB S1, WAIT18INC S11MOV A, S11CJNE A, #1,NEXT51LCALL DAY_PNEXT51: CJNE A, #2,NEXT52LCALL NIG_PNEXT52: CJNE A, #3,NEXT53LCALL MID_PNEXT53: CJNE A, #4, KEY33MOV S11, #0LJMP KEY_DJKEY33: JB S2, KEY34LCALL T10MSDJB S2, KEY34WAIT31:JNB S2, WAIT31LJMP KEY_MAINKEY34: AJMP MID_PHOU_T: SETB F0 ;调用定时延时标志位LCALL T100MSDLCALL T100MSDMOV LEDHL, #0AHMOV LEDHH, #0AHLCALL HMS_DIS1;直接调用显示,不经过拆分程序LCALL T100MSDLCALL T100MSDMOV SEC, #0LCALL HMS_DISJB S3, KEY41MOV A, HOURADD A, #1DA AMOV HOUR,ACJNE A, #24H, KEY41MOV HOUR, #0KEY41: JB S4, KEY42MOV A, HOURADD A, #99HDA AMOV HOUR,ACJNE A, #99H, KEY42MOV HOUR, #23HKEY42: JB S1, KEY43ACALL T10MSDJB S1, KEY43WAIT21: JNB S1, WAIT21INC S11MOV A, S11CJNE A, #1,NEXT61LJMP HOU_TNEXT61: CJNE A, #2,NEXT62LJMP MIN_TNEXT62: CJNE A, #3,KEY43MOV S11, #0LJMP KEY_SJKEY43: JB S2, KEY44LCALL T10MSDJB S2, KEY44WAIT32: JNB S2, WAIT32LJMP KEY_MAINKEY44: AJMP HOU_TMIN_T: SETB F0 ;调用定时延时标志位LCALL T100MSDLCALL T100MSDMOV LEDML, #0AHMOV LEDMH, #0AHLCALL HMS_DIS1;直接调用显示,不经过拆分程序LCALL T100MSDLCALL T100MSDMOV SEC, #0LCALL HMS_DISJB S3, KEY51MOV A, MINADD A, #1DA AMOV MIN, ACJNE A, #60H, KEY51MOV MIN, #0KEY51: JB S4, KEY52MOV A, MINADD A, #99HDA AMOV MIN, ACJNE A, #99H, KEY52MOV MIN, #59HKEY52: JB S1, KEY53ACALL T10MSDJB S1, KEY53WAIT24: JNB S1, WAIT24INC S11MOV A, S11CJNE A, #1,NEXT71LCALL HOU_TNEXT71: CJNE A, #2,NEXT72LCALL MIN_TNEXT72: CJNE A, #3,KEY53SETB TR0MOV S11, #0LJMP KEY_SJKEY53: JB S2, KEY54LCALL T10MSDJB S2, KEY54WAIT33: JNB S2, WAIT33LJMP KEY_MAINKEY54: AJMP MIN_TTOTIME: PUSH PSWPUSH ACCMOV TH0, #3CHMOV TL0, #0B0HINC MS100MOV A, MS100CJNE A, #10,RETURNMOV MS100,#0MOV A, SECADD A, #1DA AMOV SEC,ACJNE A,#60H,RETURNMOV SEC,#0MOV A, #1HADD A, MINDA AMOV MIN,ACJNE A,#60H, RETURNMOV MIN,#0MOV A, #1HADD A, HOURDA AMOV HOUR,ACJNE A, #24H,RETURNMOV HOUR,#0RETURN: POP ACCPOP PSWRETITO: PUSH PSWPUSH ACCMOV A,#1ADD A,M100MOV M100,AMOV A, M100CJNE A, #100,RETURN1MOV M100,#0INC 21HMOV A,21HCJNE A, #0AH, RETURN1 ;已经到了1公里MOV 21H,#0MOV A, #1ADD A, DISTANCEDA AMOV DISTANCE,AMOV A, PRICEADD A, COUNTLDA AMOV COUNTL,ACJNE A, #10H,RETURN1MOV COUNTL,#0MOV A, #1ADD A, COUNTHDA AMOV COUNTH,ACJNE A, #99H, RETURN1MOV COUNTH,#0RETURN1: POP ACCPOP PSWRETITOSTART: PUSH PSWPUSH ACCMOV TH1, #3CHMOV TL1, #0B0HDJNZ 22H, RETURN2 ;1S未到返回MOV 22H, #0AHMOV A, #1ADD A, 23HDA AMOV 23H, ACJNE A, #60H, RETURN2MOV 23H, #0MOV A, #1ADD A, 24HDA AMOV 24H,ACJNE A, #10H, RETURN2MOV 24H, #0MOV A, START_PRICEADD A, COUNTLDA AMOV COUNTL,ACJNE A, #10H, RETURN2MOV COUNTL, #0MOV A, #1ADD A, COUNTHDA AMOV COUNTH,ACJNE A, #99H,RETURN2MOV COUNTH,#0RETURN2: POP ACCPOP PSWRETIHMS_DIS:PUSHACC PUSHPSWSETBRS1MOV R0,#SEC ;时分秒的拆分(三个字节)MOV R1,#LEDSLMOV R6,#03HLOOP1:MOV A, R0MOV B, AANL A, #0FHMOV R1,ADEC R1MOV A, BSWAPAANL A, #0FHMOV R1,ADEC R1DEC R0DJNZR6,LOOP1POP PSWPOP ACCHMS_DIS1: PUSH ACCPUSH PSWMOV R7,#06HMOV R0,#LEDSLLOOP: MOVA, R0MOVDPTR,#TABMOVCA,A+DPTRMOV SBUF,ABK: JBCTI,NEXTSJMPBKNEXT: DECR0DJNZR7,LOOPCLRRS1POPPSWPOPACCRETCP_DIS:PUSH ACC PUSH PSWSETB RS1MOV R0,#COUNTH ;MOV R1,#LEDCOUNT2MOV A, R0MOV B, AANL A, #0FHMOV R1,ADEC R1MOV A, BSWAPAANL A, #0FHMOV R1,AMOV LEDCOUNT1,COUNTLMOV A,LEDCOUNT1 ;送总金额低位MOV DPTR,#TABMOVC A, A+DPTRMOV SBUF,AJNB TI,$CLR TIMOV A,LEDCOUNT2 ;送总金额中位MOV DPTR,#TABMOVC A,A+DPTRCPL ACC.4MOV SBUF,AJNB TI, $CLR TIMOV A,LEDCOUNT3 ;送总金额高位MOV DPTR,#TABMOVC A,A+DPTRMOVSBUF,AJNB TI,$CLR TICLR RS1MOV SBUF,#0FEH ;送短线( 短线的字型码是0FEH)JNB TI, $CLR TIMOV R0,#PRICE;单价拆分(两个字节)MOV R1,#LEDDANJIALMOV R6,#03HMOV A, R0MOV B, AANL A, #0FHMOV R1,ADEC R1MOV A, BSWAPAANL A, #0FHMOV R1,ADEC R1MOV A,LEDDANJIAL ;送单价低位MOV DPTR,#TABMOVC A,A+DPTRMOV SBUF,AJNB TI, $CLR TIMOV A, LEDDANJIAH ;送单价高位MOV DPTR,#TABMOVCA,A+DPTRCPL ACC.4MOV SBUF,AJNB TI,$CLR TIPOP PSWPOP ACCRETDP_DIS:PUSH A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论