出租车计价器单片机课程设计设计报告E-LAB

合集下载

出租车计价器(课程设计)

出租车计价器(课程设计)

摘要本设计的是一个基于c51单片机的出租车自动计费设计,附有复位电路,时钟电路,键盘电路和显示电路等。

复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。

时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。

在上电时字符型数码显示器显示最初的起步价,但超过3km时计价器会在起步价的基础上再按每里程收费,通过按键可以启动,清除显示器的显示价钱。

通过计算可以得出总共的费用和总的路程。

在这里主要是以AT89S51单片机为核心控制器,P0口和P2口接七段显示器模块,P1口接按键的,通过按键输入启动和清除总价格。

关键词:单片机AT89C51;七段数码显示器7SEG-MPX4-CA;出租车计费器。

AbstractThis design is a based on c51 taxi automatic bill design, with reset circuit, clocking circuit, the keyboard circuit and show circuit, etc. Reset circuit are the initialization of single chip, in addition to the normal operation of the initial barbarian, difficulty, through to reset circuit can start again. The 12 MHz clock circuit of crystals, as the system clock source, has enough precision.When power in character type digital display shows the first started value, but more than 3 km the meter will start in price when on the basis of every mileage charge, then press the button can be activated by the display of the display, clear price. Can be obtained by the computation of the total cost, and general journey. Here are based on AT89S51 as the core controller, mouth and P2 P0 mouth pick seven segment display module, pick buttons, the P1 mouth by keystroke start and remove the total price.目录摘要 (1)目录 (2)第一章出租车计价器的设计题目要求 (3)1.1设计题目 (3)1.2设计要求 (3)第二章出租车的总体设计方案 (3)2.1方法论证与比较 (3)2.2 工作原理 (5)2.21工作原理框图如下: (5)2.22 工作原理: (6)2.3 所需设备及软硬件 (6)第三章出租车硬件电路设计 (6)3.1 AT89S51介绍 (7)3.11主要的功能特性 (7)3.12 管脚功能 (8)3.2 LED数码管介绍 (9)3.3单片机最小系统 (11)3.4振荡电路 (12)3.5 复位电路 (12)3.6 按钮接口电路 (13)3.7 显示电路 (13)第四章系统软件设计 (14)4.1 proteus软件介绍 (14)4.2 keil软件介绍 (15)4.3利用proteus与keil进行调试 (15)4.4 主程序流程图 (16)4.5子程序流程图 (16)4.51 键盘扫描子程序 (16)4.52 处理总价子程序 (17)4.53 显示总价子程序 (18)第五章设计调试结果和设计心得以及参考资料 (20)5.1 设计调试结果 (20)5.2 设计中的问题及解决方法 (20)5.3 设计心得 (20)5.4参考资料 (21)附录: (21)附录一:程序清单 (21)附录二、系统总体电路图 (26)附录二、仿真图 (27)第一章出租车计价器的设计题目要求1.1设计题目出租车计价器1.2设计要求利用单片机设计一个出租车自动计费器,计费包括起步价、行车里程计费、用4个七段数字显示器显示总金额,最大值为999.9元,起步价为5.0元,3Km 之内按起步价计费,超过3Km之后1.6元/公里,每200米计价跳表(即1KM增加1.6元,200m增加0,32元)。

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计一、引言在现代化社会,出租车成为了人们出行的一种必要工具,而出租车的计价器是出租车行业的重要组成部分,它不仅能够准确的计算乘车费用,还可以提供一些其他服务项目、实时收费等功能。

本课题旨在设计一款基于单片机的出租车计价器,具有准确的实时的计价功能、节能以及模块化结构等优点。

二、总体设计(1)系统功能该系统由以下主要功能组成:(1)实时显示乘车价格。

(2)可以调整价格,也可以根据距离计算价格。

(3)可以根据计价需要灵活设置费率及参数。

(4)具有实时计费功能,可以自动计算乘车总价格。

(5)可以利用GPS定位功能,计算出距离目的地的距离及费用,以及发射警报等。

(2)系统结构该系统包括以下几个部分:(1)单片机控制器:采用嵌入式单片机系统,控制计价器的各项功能。

(2)距离传感器:采用光电开关或者其他机械开关,通过计数信号,来计算出行车车辆的行驶距离。

(3)GPS模块:用于定位车辆位置,以及计算出距离目的地的距离及费用。

(4)用户接口:采用按键开关或者触摸屏,实现用户与系统的交互功能。

(5)显示屏:用于显示乘车价格及时间等信息。

(6)节能模块:用于节约计价器的能耗,提高计价器的使用寿命。

三、实现方式(1)单片机系统的设计单片机系统是本系统的核心部分,由数据处理器、存储器、定时器、显示器等部分构成。

数据处理器负责计算距离和费用,根据计算结果控制显示;存储器用来存储相关参数;定时器可以用来判断行驶的时间;而显示器用于显示实时费用等信息。

(2)距离传感器的设计距离传感器是计算行驶距离的重要组成部分,一般采用光电开关或者其他机械开关,用于计数车轮的旋转,以此来计算出行驶距离。

(3)GPS定位模块的设计GPS定位模块可以用来接收GPS定位信号,较准确的计算出出租车的行驶距离及费用,还可以用来实现实时跟踪车辆的位置。

(4)用户接口的设计用户接口一般采用按键开关或者触摸屏,实现用户与系统的交互功能,使用户可以设置参数或者查看历史数据等。

单片机课程设计报告-出租车计价器

单片机课程设计报告-出租车计价器

微机原理及单片机接口技术实验报告学院:专业班级:学生姓名:学号:指导教师:一、验目的及实验实现的功能:(一)流水灯实验1、实验目的:1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断2、完成功能要求1)开机是点亮12发光二极管,闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示改为顺逆时针方式(二)定时器或实时时钟实验1、实验目的1)数码管动态显示技术2)定时器的应用3)按键功能定义2、完成功能要求1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。

2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。

上述二个功能至少完成一种功能。

(三)双机通信实验1、实验目的UART 串行通信接口技术应用2、完成功能要求用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

(四)交通灯实验1、实验目的1)按键、数码管、发光二极管综合应用编程技术2)数据存储于EEPROM的技术(也可以不使用)3)定时中断技术4)按键中断技术2、完成功能要求1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。

2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。

3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。

再按该键,恢复正常显示。

二、系统硬件设计硬件设计仿真图三、系统软件设计系统流程图(程序见附录)四、实验过程中遇到的问题及解决方法1.定时器0调试过程中:a)建好工程后,操作太快,忘了将保存过的C文件添加到工程里面,提示无效module。

b)初始化函数init_0() 声明时后面的‘;’忘记了,调试后出现了很多错误与警告,里面的变量及端口都提示重复定义。

数码管显示过程中:a)函数编写好后调用提示:uncalled segment ,ignored for overplay.原因:有函数未调用,可是我已经调用所有函数,后来检查一段时间后发现,count_down ()被我写成了count_dowm().b)FLAG标志位应用时,当FLAG=1时应该立即执行正常时钟程序clock(),可是当按键稍微晚些按时会出现:延时一段时间后才执行。

单片机课程设计论文---出租车计价器

单片机课程设计论文---出租车计价器
2.3 方案的选取 .................................................................................................... - 5 -
2.4硬件设计 ......................................................................................................... - 6 -
2.4.1 AT89S52单片机及最小系统..................................................................- 6 -
2.4.2 测距单元.................................................................................................- 8 -
5课程设计体会 ............................................................................................... - 14 -
参考文献 ......................................................................................................... - 16 -
规模较大用到的器件多造成故障率高难调试。而采用单片机进行的设计
相对来说功能强大是深化单片机应用的良好途径用较少的硬件和适当的软件
相互配合可以很容易地实现设计要求且灵活性强可以通过软件编程来完成更

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计一、设计目标:设计一个基于单片机的出租车计价器,能够准确计算乘客的乘车距离和费用,并能显示当前的计价信息。

二、设计原理:1. 距离测量:使用速度传感器和车轮直径来测量出租车行驶的距离。

2. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算。

3. 显示:使用LCD显示屏显示当前的计价信息和距离。

三、硬件设计:1. 单片机:选择合适的单片机,如ATmega8,作为主控制器。

2. 速度传感器:选择合适的速度传感器,如霍尔传感器,用于测量车轮转速。

3. LCD显示屏:选择合适的LCD显示屏,如16x2字符LCD,用于显示计价信息和距离。

4. 按键开关:设计合适的按键开关,用于启动计价器和调整设置。

四、软件设计:1. 初始化设置:在计价器启动时,进行LCD显示屏和速度传感器的初始化设置。

2. 距离测量:通过速度传感器读取车轮转速,根据车轮直径计算出租车行驶的距离。

3. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算,并将计算结果显示在LCD上。

4. 设置调整:设计按键开关用于调整计价规则和费率设置。

5. 实时显示:将计价信息和距离实时显示在LCD上,方便乘客查看。

五、测试和验证:进行功能测试和实地验证,确保计价器的准确性和稳定性。

包括距离测量的准确性、费用计算的准确性以及LCD显示的正确性。

六、优化和改进:根据测试结果和用户反馈,对计价器进行优化和改进,提高其性能和用户体验。

总结:基于单片机的出租车计价器是一个实用的设计,能够帮助出租车司机和乘客准确计算乘车距离和费用。

通过合理的硬件设计和软件编程,可以实现距离测量、费用计算和实时显示等功能。

在实际使用中,需要进行充分的测试和验证,以确保计价器的准确性和稳定性。

通过不断优化和改进,可以提高计价器的性能和用户体验,满足用户的需求。

出租车计价器单片机课程设计

出租车计价器单片机课程设计

出租车计价器单片机课程设计
一、课程设计背景
1.1 项目简介
出租车计价器是一款用来计算出租车费用的设备,它可以根据客户乘坐出租车的里程数、所在城市、车辆等级等信息,计算出乘客应付的出租车费用。

本课程设计主要以单片机实现出租车计价器的功能,采用单片机控制电容屏和按键,实现出租车客户输入数据和进行相关计算的功能。

1.2 基本要求
(1)设计出租车计价器的硬件模块,包括控制电容屏、按键等;
(2)设计出租车计价器的软件模块,编写出租车计价器的源程序;
(3)实现出租车计价器的测试功能,包括输入数据、计算费用等。

二、课程设计步骤
2.1 硬件设计
(1)材料准备:本课程设计所需的主要硬件设备有:单片机主
控板及其配件、电容屏和按键等。

(2)电路设计:根据课程设计的功能要求,设计出租车计价器
的硬件电路,实现主控板与电容屏、按键等设备的连接。

(3)原理图设计:根据电路设计,绘制出租车计价器的原理图,包括主控板、电容屏和按键等设备的结构。

2.2 软件设计
(1)源程序设计:编写单片机的源程序,实现出租车计价器的计算功能。

(2)组合程序设计:根据源程序,编写出租车计价器的组合程序,实现出租车计价器的实际应用。

2.3 课程实施
(1)硬件实施:根据原理图,把主控板、电容屏和按键等硬件设备安装在一起,组装成出租车计价器。

(2)软件实施:把编写的源程序和组合程序烧写到主控板上,运行程序,实现出租车计价器的功能。

(3)测试实施:运行出租车计价器,输入相关的参数,检验程序的正确性,确保出租车计价器正常工作。

基于单片机的出租车计价器设计

基于单片机的出租车计价器设计

基于单片机的出租车计价器设计一、出租车计价器的功能需求分析出租车计价器的主要功能是根据行驶里程和等待时间来计算乘车费用。

具体来说,它需要能够实时测量车辆行驶的里程,准确记录等待时间,并按照预设的计费规则计算出总费用。

此外,还应具备显示功能,能够清晰地向乘客展示里程、等待时间和费用等信息。

二、系统硬件设计(一)单片机的选择在本设计中,选用了_____型号的单片机作为核心控制器。

该单片机具有性能稳定、运算速度快、资源丰富等优点,能够满足计价器的功能需求。

(二)里程测量模块里程测量通常采用霍尔传感器。

当车轮转动时,霍尔传感器会产生脉冲信号,单片机通过对脉冲信号的计数来计算行驶里程。

(三)时间测量模块等待时间的测量可以通过单片机内部的定时器来实现。

当车辆处于停止状态且时间超过预设阈值时,开始累计等待时间。

(四)显示模块为了向乘客直观地展示相关信息,选用了_____型号的液晶显示屏。

它具有显示清晰、功耗低等特点。

(五)按键模块设置了几个按键,用于切换显示内容、调整计费参数等操作。

三、系统软件设计(一)主程序流程系统上电后,首先进行初始化操作,包括设置单片机的工作模式、初始化各个模块等。

然后进入主循环,不断检测里程和等待时间的变化,并根据计费规则计算费用,最后将结果输出到显示模块。

(二)里程计算算法根据霍尔传感器产生的脉冲数和车轮的周长,可以计算出行驶里程。

计算公式为:里程=脉冲数 ×车轮周长。

(三)等待时间计算算法通过定时器记录车辆停止的时间,当时间超过一定值时,将其计入等待时间。

(四)计费规则的实现根据当地的出租车计费标准,设定起步价、里程单价和等待时间单价。

总费用=起步价+里程费用+等待时间费用。

四、系统调试与测试(一)硬件调试首先检查各个硬件模块的连接是否正确,然后通过示波器等工具检测信号的准确性和稳定性。

(二)软件调试采用在线调试工具,对程序进行单步调试,查看变量的值和程序的执行流程,确保软件逻辑的正确性。

基于单片机的出租车计价器设计

基于单片机的出租车计价器设计

基于单片机的出租车计价器设计《基于单片机的出租车计价器设计》这个题目引起了我的兴趣。

出租车计价器是一种用于计算出租车旅客收费到终点所需要的路程和收费的机器,它可以帮助出租车司机以及乘客有效地完成收费过程,从而提升出租车行业的效率和服务质量。

本文首先介绍了出租车计价器的基本要素,并介绍了基于单片机的出租车计价器的系统设计。

将会讨论基于单片机的出租车计价器的硬件设计和软件设计。

此外,本文还将详细介绍基于单片机的出租车计价器的测试方法和结果。

一、出租车计价器的基本要素出租车计价器的基本要素包括:显示屏、路程传感器、光学接收器和键盘。

显示屏用于显示当前路程距离和费用;路程传感器用于测量当前出租车行驶的距离;光学接收器用于接收外部事件信号;键盘用于输入相关信息。

二、基于单片机的出租车计价器系统设计基于单片机的出租车计价器系统设计是一种将单片机、存储器、显示屏、路程传感器、光学接收器、键盘等部件组成的一个完整的系统,这个系统是由一个中央处理器(CPU)控制的,它能够对来自外部的信号进行读取和处理,并将处理后的信号转换成计价器中显示屏上按照约定好的格式显示出来。

三、基于单片机的出租车计价器的硬件设计基于单片机的出租车计价器的硬件设计包括单片机的选择、存储器的类型、显示屏的尺寸和解析度、路程传感器的类型、光学接收器的功能和键盘的类型。

1.片机的选择在这次的出租车计价器的硬件设计中,我们选用的是AT89C51单片机。

AT89C51单片机具有低功耗、低成本和高性能特点,能够满足出租车计价器在可靠性、负荷能力以及精度方面的要求。

2.储器的类型为了满足出租车计价器的需要,我们在这次的硬件设计中选用了ROM和RAM双类存储器。

ROM用于储存程序,而RAM则用于储存数据和参数。

3.示屏的尺寸和解析度为了满足出租车计价器的要求,我们选用的显示屏的尺寸是32*32的屏幕,其解析度为1024*768。

4.程传感器的类型为了能够有效测量出租车行驶的距离,我们在这次的硬件设计中选用了一种能够测量出租车行驶距离的传感器。

单片机课设 出租车计价器的设计

单片机课设 出租车计价器的设计

单片机原理与应用课程设计(论文)摘要本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。

复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。

时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。

在上电时四位共阴极5461AS数码管显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。

通过按键模拟出租车的运行,暂停,停止。

在5461AS液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。

在这里主要是以AT89S52单片机为核心控制器,P0口接5461AS液晶显示模块,P1口接按键的,通过按键输入。

关键词:单片机AT89S52;5461AS液晶;出租车计费器单片机原理与应用课程设计(论文)目录第1章设计方案论证 (1)1.1 出租车计价器设计要求 (1)1.2 课题设计要求、系统方案介绍 (1)第2章硬件电路设计 (3)2.1振荡电路 (3)2.2复位电路设计 (3)2.3 键盘接口电路 (4)2.4 显示电路 (4)2.5 路程测量部分 (5)2.6 单片机各引脚功能说明 (5)第3章程序设计 (8)3.1总流程图 (8)第4章设计总结 (13)参考文献 (14)附录1:整体电路原理图 (15)附录2:器件清单 (16)单片机原理与应用课程设计(论文)第1章设计方案论证1.1 出租车计价器设计要求设计一个出租车自动计费器,计费包括起步价、行车里程计费、二部分,用5461AS 液晶显示总金额,运行时间,暂停时间,最大值为99.9元,起步价为5.0元,3Km之内起步价计费,超过3Km,增加2.0元(即1KM增加2.0元),用液晶显示总里程,同时用液晶显示等待时间和运行花费时间。

①、计费功能费用的计算是按行驶里程收费。

设起步价为5.00元。

出租车计价器-课程设计报告

出租车计价器-课程设计报告

软件学院课程设计报告课程题目出租车计价器班级集成13-4专业集成电路设计与集成系统学生学号指导教师(填写自己班的指导教师)年月日1.课程设计目的全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

2.课程设计题目描述和要求2.1.课程设计题目描述①.实现计费功能,计费标准为:按行驶里程计费,起步价为7.0元,并在车行3km 后按2.2元/km 计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。

②.现场模拟功能:以开关或按键模拟公里计数,能模拟汽车起动、停止、暂停等状态。

③.将车费和路程显示出来,各有一位小数。

2.2.总体设计思路框架2.3.课程设计题目要求①.设计正确,方案合理。

②.程序精炼,结构清晰。

③.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。

④.上机演示。

⑤.有详细的文档。

文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。

3.设计思想和设计内容3.1 出租车计费设计该出租车计费器按下开关S1后开始计费和计里程数,起步价是7元,行驶3公里,以后2.2元/公里。

并且设计选择模块,在车费超过20元每公里加收50%车费即3.3元/公里。

3.2 基本设计思想出租车计费器根据设计要求可初步分为3方面——显示、记里程数、记费。

之后再根据三方面分别设计模块。

1.显示模块。

一般计数器显示数字为1-F即16进制,而16进制不方便观看,所以在设计这一模块时我们将16进制改为10进制输出进而设计了译码模块。

2、里程模块。

设计要求对里程计数主要分为两个方面,计数以及公里数比较。

即3公里之内收7元,3公里之后20元(通过计算为9公里)以内每公里2.2元,9公里以外为每公里3.3元。

#单片机课程设计:出租车计价器

#单片机课程设计:出租车计价器

计算机和信息工程学院《单片机》课程设计课程设计题目出租车计价器专业:计算机控制班级:控制09--3姓名:费翔学号:20指导教师:范爱华2012年3月2日摘要:近些年来,随着单片机的发展,产品相当的繁多,单片微型机又称嵌入式控制器,是20世纪70年代中期发展起来的一种大规模的集成电路器件。

当单片机的使用不断地深入,新技术的发展也是层出不穷的。

这是一项新型的工程技术,其内涵也是随着单片机的发展而发展。

MCS-51系列的单片机是属于结构相当简单,但也是单片机中的典型,使用也相当的灵活。

51系列的单片机产品发展迅速,在国内外占有重要的地位。

出租车计价器从最初的只能进行简单的价格计算,发展到价格、距离独立计量并显示,可根据特殊情况设定相应的收费标准,能打印营运发票,可使用IC卡结算等的功能。

目前市场上的计价器越来越趋向于集成有多种功能。

关键词:51单片机,价格计算,独立显示,手动输入正文:1. 出租车计价器是乘客和司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

它关系着交易双方的利益。

具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。

我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

针对计费模式的切换,通过软件编程就可以轻易而举的实现。

避免了机械开关带来的不稳定因素。

方案论证最终方案选择出租车计价器基本功能部分是根据里程数来完成总金额的输出。

实现方法有两种。

方案一:采用数字电路控制。

其原理方框图如图 2.1所示。

采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。

方案二:采用单片机控制。

利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计
随着城市化进程的加速,出租车已经成为人们出行的重要方式之一。

而出租车计价器则是出租车行业中不可或缺的一部分。

本文将介绍一种基于单片机的出租车计价器的设计。

我们需要了解出租车计价器的基本原理。

出租车计价器主要是通过计算车辆行驶的里程数和时间来计算乘客需要支付的费用。

因此,我们需要使用传感器来测量车辆行驶的里程数和时间。

在本设计中,我们使用了两个传感器:一个是用于测量车辆行驶里程数的速度传感器,另一个是用于测量时间的时钟芯片。

速度传感器通过检测车轮的转速来计算车辆行驶的里程数,而时钟芯片则可以精确地测量时间。

接下来,我们需要将传感器的数据输入到单片机中进行处理。

在本设计中,我们使用了AT89C51单片机。

单片机通过读取传感器的数据来计算车辆行驶的里程数和时间,并根据计算结果来计算乘客需要支付的费用。

我们需要将计算结果显示在计价器的显示屏上。

在本设计中,我们使用了LCD显示屏。

单片机将计算结果发送到LCD显示屏上,乘客可以通过显示屏来了解自己需要支付的费用。

基于单片机的出租车计价器设计可以实现精确计算乘客需要支付的费用,并且具有可靠性高、成本低等优点。

随着科技的不断发展,
出租车计价器的设计也将不断更新,为人们出行提供更加便捷、高效的服务。

基于单片机控制的出租车计价器的课程设计

基于单片机控制的出租车计价器的课程设计

摘要:智能仪器仪表技术是一门集电子技术、单片机技术,自动化仪表、自动控制技术、计算机应用等一体的跨学科的专业技术。

自20世纪90年代初以来,这项技术已逐步引入到国内工科专业中的电子信息、通讯、自动化、计算机应用等信息类专业中。

随着微电子技术和计算机技术的飞速发展,测控仪器仪表的智能化、总线化、网络化发展已在各个相关行业呈现出广阔的发展前景,同时也日益成为工程界和科技界人士所关注的重要问题之一。

因此,了解和熟悉智能仪器仪表的特点功能,发展趋向及其应用前景是十分重要和必要的。

出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。

它关系着交易双方的利益。

具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。

因此,汽车计价器的研究也是十分有一个应用价值的。

而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。

而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

针对计费模式的切换,通过软件编程就可以轻易而举的实现。

避免了机械开关带来的不稳定因素。

本设计主要了解应用单片机的定时器/计数器,以及中断。

这是一个比较小的系统,故采用汇编语言来编辑。

汇编语言是一种编译型程序设计语言,它具有编译速度快,占用系统空间小,具有一定的助记可读性等特点。

本系统假设速度恒定60Km/h(1Km/min),单价一定1.3元/Km,起步价5.0元,超过三公里开始计费,每公里加1.3元。

关键词:出租车计费器; AT89S51;霍尔传感器1.引言:本课程设计所设计的出租车计价器的主要功能有:数据的复位、白天/晚上转换、数据输出、计时计价、单价输出及调整、路程输出、语音播报数据信息、实现在系统掉电的时候保存单价和系统时间等信息等功能。

单片机课程设计出租车计价器就

单片机课程设计出租车计价器就

单片机课程设计出租车计价器就河南理工大学《单片机应用与仿真训练》设计报告基于单片机的出租车计价器的设计2012年7月1日摘要出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。

而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。

而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。

复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。

时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。

在上电时四位共阴极5461AS数码管显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。

通过按键模拟出租车的运行,暂停,停止。

在5461AS液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。

在这里主要是以AT89S52单片机为核心控制器,P0口接5461AS液晶显示模块,P1口接按键的,通过按键输入。

图1-1方案一案二:采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图1-2所示:图1-2方案二方案三:采用MCU技术,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,以下是方案三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又不高。

方案图如图1-3所示:图1-3方案三方案总结:通过各个方案的比较,本次采用方案三,不但控制简单,而且成本低廉,设计电路简单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 引言1.1 出租车计价器概述计价器显示的营运金额是营运里程与价格的函数(等候时间一般折算成一定比例的里程来计算)。

出租车计价器通过传感器与行驶车辆连接。

出租汽车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价营运里程。

目前市场上出租车计价器功能主要有具有数据的复位功能、白天/晚上转换功能、数据输出功能、计时计价功能等等,但能够进行语音播报数据信息的出租车计价器还是比较少见的,针对这一点我们来设计一款多功能出租车计价器,在原有功能的基础上增加单价输出、单价调整、路程输出、显示当前的系统时间、语音播报数据信息等功能。

1.2 系统主要功能本课程设计所设计的出租车计价器的主要功能有:数据的复位、白天/晚上转换、数据输出、计时计价、单价输出及调整、路程输出、语音播报数据信息、实现在系统掉电的时候保存单价和系统时间等信息等功能。

输出采用8 段数码显示管。

本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。

2计价器硬件设计本系统的硬件设计主要包括单片机AT89S51、数据显示部件、A44E霍尔传感器电路、AT24C02 掉电存储单元的设计、里程计算及计价单元的设计。

在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。

2.1 系统的硬件构成及功能计价器的单片机控制方案图如图1 单片机控制方案图所示。

它由以下几个部件组成:单片机AT89S51、总金额及单价显示部件、键盘控制部件,AT24C02 掉电存储控制、里程计算单元、串中显示驱动电路等。

利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。

不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。

具体电路参见附录中“多功能出租车计价器总体电路图”如图1 单片机控制方案图。

图1 单片机控制方案图2.2 AT24C02 掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。

AT24C02 是ATMEL公司的2KB 字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40 年以上,而且采用8 脚的DIP 封装,使用方便。

其电路如图4掉电存储电路原理图所示。

图 4 掉电存储电路原理图图中R8、R10 是上拉电阻,其作用是减少AT24C02 的静态功耗,由于AT24C0的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。

每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。

2.3 里程计算、计价单元的设计里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的。

其原理如图5传感器测距示意图所示。

图 5 传感器测距示意图由于A44E 属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL 电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。

A44E集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。

在输入端输入电压CCV ,经稳压器稳压后加在霍耳电势发生器的两端,根据霍耳效应原理,当霍耳片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍耳电势差H V 输出,该H V 信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。

当施加的磁场达到 工作点 (即OP B )时,触发器输出高电压(相对于地电位),使三极管导通,此时OC 门输出端输出低电压,通常称这种状态为开。

当施加的磁场达到 释放点(即rP B )时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为关。

这样两次电压变换,使霍耳开关完成了一次开关动作。

我们选择了P3.2口作为信号的输入端,内部采用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1 米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000 次时,也就是1公里,单片机就控制将金额自动的加增加,其计算公式:当前单价×公里数=金额。

2.4 数据显示单元设计由于设计要求有单价(2 位)、路程(2 位)、总金额(3 位)显示输出,加上我们另外扩展了时钟显示(包含时分秒的显示),采用LCD液晶段码显示,在距离屏幕1米之外就无法看清数据,不能满足要求,而且在白天其对比度也不能够满足要求,因此我们采用6位LED数码管的分屏显示,如图6采用6位LED数码管的分屏显示所示:时钟显示(图中显示为12点0分46秒)图 6 采用6位LED数码管的分屏显示数据的分屏的显示是通过按键S1 来实现切换的,如图 7 S1切换显示屏所示。

图 7 S1切换显示屏在出租车不走的时候,按下S1,可以实现数据的分屏显示;车在行走的时候只有总金额和单价显示屏在显示,当到达目的地的时候,客户要求查看总的里程的时候,就可以按下S1切换到里程和单价显示屏,供客户查询。

显示电路的电路原理图如图8显示器原理图所示。

图8 显示器原理图从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。

移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。

电路中的三个整流管D1~D3 的作用是降低数码管的工作电压,增加其使用寿命。

3 系统的软件设计本系统的软件设计主要可分为主程序模块、定时计数中断程序、里程计数中断服务程序、中途等待中断服务程序、显示子程序服务程序、键盘服务程序六大模块。

下面对各部分模块作介绍。

3.1 系统主程序设计在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。

另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。

然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。

主程序流程图如图9所示。

当按下S1时,就启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。

若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。

当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。

开始S1按下?初始化数据S4按下?设定默认 单价(白天)启动计价器里程中断?到一公里?总路程加1总金额加1传感有信号?停止计价和 里程计数是是是是否否否设定晚上单价按下S4?设定中途等待单价S4按下?返回时间显示是是是否否否显示金额及单价S3按下?否是显示路程和单价S3按下?是否3.2 定时中断服务程序在定时中断服务程序中,每100ms 产生一次中断,当产生10 次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。

其程序流程如图10 所示。

3.3 里程计数中断服务程序每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000 次时,使微机进入里程计数中断服务程序中。

在该程序中,需要完成当前行驶里程数和总额的累加操作,并将结果存入里程和总额寄存器中。

3.4 中途等待中断服务程序当在计数状态下霍尔开关没有输出信号,片内的T1 定时器便被启动,每当计时到达10分钟,就对当前金额加上中途等待的单价,以后每十分钟都自动加上中途等待的单价。

当中途等待结束的时候,也就自动切换到正常的计价。

3.5 显示子程序服务程序由于是分屏显示数据,所以就要用到4 个显示子程序,分别是:时分秒显示子程序(HMS_DIS)、金额单价显示子程序(CP_DIS)、路程单价显示子程序(DP_DIS)、单价调节子程序(PA_DIS)。

3.6 键盘服务程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。

如图9主程序流程图,图10定时中断服务程序。

开始保护现场重置计数初值否中断10次?是数据送显示缓冲单元调用显示子程序恢复现场并中断返回图10 定时中断服务程序4 系统调试与测试结果分析根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。

测试包括里程计价测试、掉电存储测试测试。

4.1 使用的仪器仪表数字万用表DT9203单片机仿真器WAVE6000烧写器 GF2100双踪稳压稳流电源DH1718E-5数字示波器 TDS10024.2 系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。

由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。

参考文献[1] 李顺增. 微机原理与接口技术.北京:机械工业出版社出版社,2005[2] 顾德英. 计算机控制技术.北京:北京邮电大学出版社,2007[3] 张友德赵志英涂时亮. 单片微型机原理、应用与实验.上海:复旦大学出版社2005.12[4] 徐光翔. 单片机原理接口及应用.南京大学出版社[5] 张淑清等. 单片微型计算机接口技术及其应用.北京:国防工业出版社,[6] 王晓君等. MCS-51及兼容单片机原理与选型.北京:电子工业出版社[7] 张鑫、华臻、陈书谦.《单片机原理及应用》[M].电子工业出版社,2005.P110~136.致谢在这次课程设计的撰写过程中,我得到了许多人的帮助。

首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。

在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。

同时也感谢学院为我提供良好的做毕业设计的环境。

最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学附 录系统原理图全部源程序该出租车计价器的系统软件设计源程序如下:DAY_PRICEEQU 6FH NIGHT_PRICEEQU 6EH MIDWAY_PRICEEQU 6DH START_PRICEEQU 6CH COUNTL EQU 6BH COUNTH EQU 6AHM100 EQU 69H ; 外部中断次数 DISTANCE EQU 68H ; 行车距离 MS100 EQU 67H SEC EQU 66H MIN EQU 65HHOUR EQU 64H LEDSL EQU 63H ; 时分钞显示缓冲区 LEDSH EQU 62H LEDML EQU 61H LEDMH EQU 60H LEDHL EQU 5FH LEDHH EQU 5EHLEDDANJIAL EQU 5DH ; 总额,单价显示缓冲区LEDDANJIAH EQU 5CH LINE_ EQU 5BHLEDCOUNT1 EQU 5AHLEDCOUNT2 EQU 59HLEDCOUNT3 EQU 58HLEDDANJIA2L EQU 57H ; 路程,单价显示缓冲区LEDDANJIA2H EQU 56HLINE__ EQU 55HLINE___ EQU 54HLEDDISTANCEL EQU 53H LEDDISTANCEH 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 43H ORG 0000HAJMPMAINORG 0003HAJMPTOORG 000BHAJMPTOTIMEORG 001BH AJMPTOSTARTORG 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 A MOV 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, NXT1 LCALL DP_DISNXT1: CJNE A, #2, NXT2 CLR CMOV A, M2SUBB A, M1MOV M1, AMOV A, H2SUBB A, H1MOV H1, ANXT2: CJNE A, #3, K3 MOV S33, #0LCALL CP_DISK3: JB S4, BK_KEY_MAIN ACALL T10MSDJB S4, BK_KEY_MAIN WAIT4:JNB S4, WAIT4 INC S44MOV A, S44CJNE A, #1, NT1MOV PRICE,DAY_PRICE LCALL CP_DISNT1:CJNE A, #2, NT2 MOV PRICE,NIGHT_PRICE LCALL CP_DISNT2:CJNE A, #3, NT3 MOV PRICE,MIDWAY_PRICE SETB TR1 LCALL CP_DISNT3:CJNE A, #4, BK_KEY_MAIN MOV 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, KY1 LCALL 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, KY2 MOV S22, #0LJMP KEY_MAINKY2:AJMP KEY_DJKEY_SJ:JB S1, KEY1 ACALL T10MSDJB S1, KEY1WAIT7:JNB S1, WAIT7INC S11MOV A, S11CJNE A, #1,NEXT21LCALL HOU_TNEXT21:CJNE A, #2,NEXT22 LCALL MIN_TNEXT22: CJNE A, #3,KEY1 MOV 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, NEXT24 CLR TR0LCALL HMS_DISNEXT24:CJNE A, #3, KEY2 MOV S22,#0LCALL KEY_SJLJMP KEY_MAINKEY2:AJMP KEY_SJDAY_P:SETB F0LCALL T100MSDLCALL T100MSDMOV LEDDAY_PL, #0AH MOV LEDDAY_PH, #0AH LCALL PA_DIS1LCALL T100MSDLCALL T100MSDLCALL PA_DISLP1: JB S3, KEY11MOV A, #1ADD A, DAY_PRICEDA AMOV DAY_PRICE,AMOV A, DAY_PRICECJNE A, #99H, KEY11 MOV DAY_PRICE, #0KEY11: JB S4, KEY12 LCALL 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_DIS1 LCALL T100MSDLCALL T100MSDLCALL PA_DISJB S3, KEY21LCALL T10MSDJB S3, KEY21MOV A, #1ADD A, NIGHT_PRICE DA AMOV NIGHT_PRICE,A CJNE A, #99H,KEY21 MOV NIGHT_PRICE,#0 KEY21:JB S4, KEY22 LCALL T10MSDJB S4, KEY22MOV A, NIGHT_PRICE ADD A, #99HDA AMOV NIGHT_PRICE,A CJNE A, #00H, KEY22 MOV NIGHT_PRICE,#99H KEY22:JB S1, KEY23 ACALL T10MSDJB S1, KEY23WAIT15:JNB S1, WAIT15 INC 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, KEY31 MOV MIDWAY_PRICE, #0KEY31: JB S4, KEY32 LCALL T10MSDJB S4, KEY32MOV A, MIDWAY_PRICEADD A, #99HDA AMOV MIDWAY_PRICE,ACJNE A, #00H, KEY32MOV NIGHT_PRICE,#99HKEY32: JB S1, KEY33 ACALL T10MSDJB S1, KEY33WAIT18: JNB S1, WAIT18 INC S11MOV A, S11CJNE A, #1,NEXT51LCALL DAY_PNEXT51: CJNE A, #2,NEXT52 LCALL NIG_PNEXT52: CJNE A, #3,NEXT53 LCALL MID_PNEXT53: CJNE A, #4, KEY33 MOV S11, #0LJMP KEY_DJKEY33: JB S2, KEY34 LCALL 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, KEY43 WAIT21: 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, KEY53 ACALL T10MSDJB S1, KEY53WAIT24: JNB S1, WAIT24 INC S11MOV A, S11CJNE A, #1,NEXT71LCALL HOU_TNEXT71: CJNE A, #2,NEXT72 LCALL MIN_TNEXT72: CJNE A, #3,KEY53 SETB TR0MOV S11, #0LJMP KEY_SJKEY53: JB S2, KEY54 LCALL T10MSDJB S2, KEY54WAIT33: JNB S2, WAIT33 LJMP KEY_MAIN KEY54: AJMP MIN_T TOTIME: PUSH PSW PUSH ACCMOV TH0, #3CHMOV TL0, #0B0HINC MS100MOV A, MS100CJNE A, #10,RETURN MOV MS100,#0MOV A, SECADD A, #1DA AMOV SEC,ACJNE A,#60H,RETURN MOV SEC,#0MOV A, #1HADD A, MINDA AMOV MIN,ACJNE A,#60H, RETURN MOV MIN,#0MOV A, #1HADD A, HOURDA AMOV HOUR,ACJNE A, #24H,RETURN MOV HOUR,#0 RETURN: POP ACC POP 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 ACC POP 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:PUSHACCPUSHPSWSETBRS1MOV 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,#LEDSL LOOP: MOVA, @R0 MOVDPTR,#TABMOVCA,@A+DPTRMOV SBUF,ABK: JBCTI,NEXTSJMPBKNEXT: DECR0DJNZR7,LOOPCLRRS1POPPSWPOPACCRETCP_DIS:PUSH ACCPUSH 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, B SWAPAANL 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 ACCPUSH PSWSETB RS1MOV R0,#PRICE ;单价的拆分(一个字节)MOV R1,#LEDDANJIALMOV 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 TIMOV SBUF,#0FEH ;JNB TI, $CLR TIMOV SBUF,#0FEH ;送短线JNB TI,$CLR TIMOV R0,#DISTANCEMOV R1,#LEDDISTANCELMOV A, @R0MOV B, AANL A, #0FH MOV @R1,ADEC R1MOV A, BSWAPAANL A, #0FHMOV @R1,ADEC R1MOV A,LEDDISTANCEL ;送路程低位MOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AJNB TI, $CLR TIMOV A,LEDDISTANCEH ;送路程高位MOV DPTR,#TABMOVC A,@A+DPTRMOVSBUF,AJNB TI,$CLR TICLR RS1POP PSWPOP ACCRETPA_DIS:PUSH ACCPUSH PSWSETB RS1MOV R0,#DAY_PRICE ;价格调整拆分(三个字节)MOV R1,#LEDDAY_PLMOV R6,#03HLOOP2:MOV A, @R0MOV B, AANL A, #0FHMOV @R1,ADEC R1MOV A, BSWAPAANL A, #0FHMOV @R1,ADEC R1DEC R0DJNZR6,LOOP2POP PSWPOP ACCPA_DIS1:PUSH ACCPUSH PSWMOV A,LEDDAY_PL ;白天单价MOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AJNB TI, $CLR TIMOV A, LEDDAY_PHMOV DPTR,#TABMOVCA,@A+DPTRCPL ACC.4MOV SBUF,AJNB TI,$CLR TIMOV A,LEDNIG_PL ;晚上单价MOV DPTR,#TABMOVCA,@A+DPTRMOV SBUF,AJNB TI, $CLR TIMOV A,LEDNIG_PHMOV DPTR,#TABMOVC A, @A+DPTRCPL ACC.4MOV SBUF,AJNB TI,$CLR TIMOV A,LEDW_PL ;中途等待单价MOV DPTR,#TABMOVC A,@A+DPTRMOV SBUF,AJNB TI, $CLR TIMOV A,LEDW_PHMOV DPTR,#TABMOVC A,@A+DPTRCPL ACC.4MOVSBUF,AJNB TI,$CLR TICLR RS1POP PSWPOP ACCRETTAB:DB11H,0D7H,32H,92H,0D4H,98H,18H,0D1 H,10H,90H,0FFHT10MSD: SETBRS0; 10毫秒延时程序MOVR4,#12TM:MOVR3,#128TM6:DJNZR3,TM6DJNZR4,TMCLRRS0RETT100MSD: MOV R3, #200D11: MOV R4, #125D12: DJNZ R4, D12DJNZ R3, D11RETEND。

相关文档
最新文档