汽车速度里程表的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汽车速度里程表的设计
摘要:在车辆高速行驶的过程中,车速里程表是为驾驶员及时提供动态驾驶信息的重要仪表,它的好坏直接影响到车辆行驶安全。
而传统的车速里程表存在两大缺陷:一是用软轴驱动的传统车速里程表在车辆高速行驶状态下,软轴高速旋转,由于软轴钢丝应力极限的限制,常常造成钢丝软轴的疲劳断裂,从而使车速里程表失效;二是由于软轴布线过长,出现形变过大和运动迟滞现象,导致动态指示迟钝或指示错误。
为了更加及时可靠的为驾驶员提供动态驾驶信息,保证车辆行驶安全,客服传统软轴驱动车速里程表故障率高、动态指示迟钝等问题,运用先进的电子技术、传感器测量技术和计算机智能技术,改进传统的里程表是非常必要的。
关键字:单片机,霍尔传感器,车速里程表
Abstract:In the process of high-speed vehicles, vehicle speed odometer is important instrument driver to provide dynamic driving information, which directly affects the running safety of vehicles. The speedometer tradition has two defects: one is the traditional speedometer flexible shaft driving the vehicle high speed running condition, the shaft rotating speed, the flexible shaft steel wire stress limit, often resulting in fatigue fracture of the wire flexible shaft, so that the speedometer failure; two is a flexible wiring is too long due to deformation, appear too large and the motion lag, lead to dynamic indicating slow or indication error. In order to be more reliable and timely to the driver's driving dynamic information, guarantee the driving safety, the problem of high failure rate, the speedometer dynamic indicating slow service traditional flexible shaft driving, the use of electronic technology, sensor technology and computer intelligence technology advanced, the improvement of the traditional odometer is very necessary.
Key words:The microcontroller, hall sensors, memory,The speedometer
目录
前言 0
1 系统概述 (1)
2 基本原理与设计方案 (1)
2.1 霍尔传感器简介 (2)
2.2 AT89C2051芯片简介 (3)
2.3 液晶显示模块SED1520芯片介绍 (4)
2.3.1 SED1520芯片介绍 (4)
2.3.2 SED1520的特性 (5)
2.3.3 SED1520指令与显示RAM结构 (5)
2.4 定时器/计数器的结构 (6)
2.5 定时计数器的原理 (6)
2.6 频率测量 (7)
3 系统硬件设计 (7)
3.1 信号预处理电路 (7)
3.2 施密特触发器 (8)
3.3 液晶显示电路和数据存储电路 (9)
4 系统软件设计 (10)
4.1 电机转速控制模块程序设计 (11)
4.2 频率测量模块程序设计 (11)
4.3 液晶显示程序的设计 (14)
4.4 速度、里程显示程序的设计 (14)
4.5 模块程序设计 (17)
5 软件调试 (19)
5.1 程序的查错手段 (19)
5.2 源程序的检测 (20)
5.3 源程序的调试 (20)
6 设计总结 (21)
参考文献 (22)
前言
汽车是现代生活中不可或缺的一种重要交通工具,传统的指针式里程表伴随着汽车的诞生就一直为人们喜爱,不过,新生事物不会因传统的存在而停止它前进的步伐。
数码科技在今天已渗透到工业,农业,民用等产品的点点滴滴。
新概念的车速里程表最直观的变化就是用大屏幕的液晶取代指针式表盘,直接用数字显示速度和里程,以及其他一些诸如油耗、时钟、环境温度等参数,直观的呈现给使用者。
同时,它还具有成本低廉,显示清晰,稳定可靠等优点。
由于单片机体积小,可以把它做到产品的内部,取代老式机械零件,缩小产品体积,增强功能,实现智能化。
因此被广泛地用在智能产品中。
Intel公司的MCS-51系列单片机近年来得到了广泛流行。
本文即介绍一种基于AT89C2051单片机的汽车速度与里程表的设计和实现。
本设计以AT89C2051为核心,利用单片机的运算和控制功能,采用串口液晶显示模块实时显示所测汽车的速度和里程设计方案。
由于使用了串口液晶显示模块和E2PROM,以及高效快速算法,因而可在节约系统资源和简化程序设计的基础上保证测量精度和系统实时性。
本文先对里程表设计中所需设备作详细介绍,再对设计中存在的问题进行了说明,对硬件部分和软件部分的设计和实现作认真的分析。
1 系统概述
本系统由信号采集处理模块、单片机AT89C2051、系统化LCD 显示模块、系统软件组成。
系统软件包括单片机和液晶模块的初始化模块、液晶模块的写数据/命令子模块、周期测量模块、速度里程计算模块、数据存储模块、速度和里程显示数据转BCD 码模块、显示数据消多余零模块、数据显示模块以及实时中断服务模块等。
其中,信号采集处理模块以霍尔传感器为核心器件,将不同的转速信号转换成相应的脉冲信号,并送到单片机的T1引脚;对单片机进行设置,使内部的定时器/计数器timer0工作在定时状态,timer1工作在计数状态,利用内部定时器T0对脉冲输入引脚T1进行控制,这样就能精确地检测到设定时间内加到T1引脚的脉冲数,一个脉冲即代表着车子前进一个轮长,对脉冲数进行处理就可得到里程和速度的数据;将数据送到LCD 显示模块进行显示。
速度显示部分采用串口液晶显示模块,所得的数据采用I2C 总线并通过E2PROM 来存储,因而节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。
汽车速度与里程表系统原理框图如图1-1所示。
图1-1 汽车速度与里程表系统原理框图
2 基本原理与设计方案
该设计能实时地将所测的速度显示出来,同时也能够累计显示总里程数。
该速度里程表能将传感器输入到单片机的脉冲信号的宽度(传感器将车速转变成相应宽度的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由串口液晶显示模块实时显示出所测速度。
本设计用两个按键来控制显示速度或里程。
考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后再输入到单片机进行测速。
单片机利用定时器T0
的控制功能测出输入信
号的周期后,再利用单片机的算术运算功能将周期转换成速度,同时每秒钟进行一次里程累计,从而计算出总里程。
最后将得出的速度、里程值存储在E2PROM中,并根据两个按键的选择情况来显示速度或里程。
为了方便计算要显示数据值的段码,可再将其转换成压缩的BCD码,然后通过查表将要显示的数据值中每一位的压缩BCD码转换成8段码送到显示缓冲区,最后经串口送至液晶显示模块以显示所测的速度或里程。
2.1 霍尔传感器简介
霍耳效应:1879年E.H. 霍尔发现,如果对位于磁场(B)中的导体(d)施加一个电压(v),该磁场的方向垂直于所施加电压的方向,那么则在既与磁场垂直又和所施加电流方向垂直的方向上会产生另一个电压(UH),人们将这个电压叫做霍尔电压,产生这种现象被称为霍尔效应。
霍尔效应从本质上讲是运动的带电粒子在磁场中受洛仑兹力作用而引起的偏转。
当带电粒子(电子或空穴)被约束在固体材料中,这种偏转就导致在垂直电流和磁场的方向上产生正负电荷的积累,从而形成附加的横向电场。
通有电流I 的金属或半导体板置于磁感强度为 B 的均匀磁场中,磁场的方向和电流方向垂直,在金属板的第三对表面间就显示出横向电势差U H 的现象称为霍耳效应。
U H 就称为霍耳电势差。
实验测定,霍耳电势差的大小和电流I 及磁感强度B成正比,而与板的厚度d 成反比。
霍尔转速传感器:霍尔转速传感器的外形图和与磁场的作用关系如图2.1-1所示。
磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。
霍尔传感器检测转速示意图如图2.1-2所示。
在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。
圆盘每转动一圈,霍尔传感器便输出一个脉冲。
通过单片机测量产生脉冲的频率就可以得出圆盘的转速。
霍尔电流传感器本身已经存在滤波电路,输出无须再加装滤波,可直接供单片机的0~5V的AD采集或直接送到单片机的中断输入引脚,信号非常稳定,而且抗干扰能力很强。
霍尔电流传感器反应速度一般在7微妙,所以不用考虑单片机循环判断的时间。
若在圆盘上贴上多块磁钢,则圆盘每转一圈,输出的脉冲信号将相应增加,单位时间内测到的脉冲数将增多,测出的转速也将更加精细。
图2.1-1 霍尔转速传感器的外形图
图2.1-2 霍尔传感器检测转速示意图
2.2 AT89C2051芯片简介
AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C2051提供了高性价比的解决方案。
AT89C2051是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C2051可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C2051具有如下功能特性:
★兼容MCS—51指令系统;
★32个双向I/O口;
★两个16位可编程定时/计数器;
★1个串行中断;
★两个外部中断源;
★4k可反复擦写(>1000次)Flash ROM;
★128x8bit内部RAM;
★6个中断源;
★低功耗空闲和掉电模式;
★软件设置睡眠和唤醒功能。
2.3 液晶显示模块SED1520芯片介绍
SED1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十分方便,作为内藏式控制器被广泛应用于点阵数较少的液晶显示模块。
2.3.1 SED1520芯片介绍
本设计仿真实验系统采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。
图形液晶显示模块有两种连接方式。
一种为直接访问方式,一种为间接控制方式。
本设计采用直接控制方式。
直接控制方式就是将液晶显示模块的接口作为存储器或I/O 设备直接挂在计算机总线上。
计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据寄存器选择信号AO 由地址线A0控制。
实际电路如图2.3.1-1所示。
地址映射如表2.3.1-1所示(地址中的X由LCD CS决定,可参见地址译码部分说明)。
表2.3.1-1 地址映射
图2.3.1-1 液晶屏显示控制电路
2.3.2 SED1520的特性
内置显示RAM区RAM容量为2560(32行80列)位。
RAM中的1位数据控制液晶屏上一个点的亮灭状态:“1”表示亮,“0”表示暗。
它具有16个行驱动口和16个列驱动口,并可级联两个SED1520实现32行驱动。
还可直接与80系列微处理器相连,亦可直接与68系列微处理器相连。
其驱动占空比为1/16或1/32。
并可以与SED1520配合使用,以便扩展列驱动口数目。
2.3.3 SED1520指令与显示RAM结构
SED1520指令系统比较简单,共13条,除读状态指令、读显示RAM数据指令外,其他指令均为写操作,并且读写指令均为单字节指令。
在送出每条指令时,必须进行控制器状态检测,状态字节的含义如下:
D7:1/0,模块忙/准备就绪;
D5:1/0,模块显示关/开;
D4:1/0,模块复位/正常;
D3-D0:未用。
在指令使用中,关键要分清显示行、列设置和显示页面设置的关系。
单片SED1520可驱动61×16液晶屏,其内部显示RAM相对于COM0每8行为一个显示页面。
本设
计所用的字符液晶模块由两块SED1520级联驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520。
这样两片SED1520级联可驱动122×32图形点阵液晶显示屏,可完成图形显示,也可显示七个半(16×16点阵)汉字。
2.4 定时器/计数器的结构
16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。
其访问地址依次为8AH-8DH。
这些寄存器是用于存放定时或计数初值的。
此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。
这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。
TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON 还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
定时器/计数器的结构原理图如图2.4-1所示。
图2.4-1 定时器/计数器的结构原理图
2.5 定时计数器的原理
16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。
当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。
因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。
如果晶
振为12MHz,则计数周期为: T=1/(12×106)Hz×1/12=1μs 。
这是最短的定时周期。
若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。
计数器在每个机器周期的S5P2期间采样引脚输入电平。
若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。
此后的机器周期S3P1期间,新的计数值装入计数器。
所以检测一个由1至0的跳变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。
例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。
虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。
当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU 当前操作。
CPU也可以重新设置定时器工作方式,以改变定时器的操作。
由此可见,定时器是单片机中效率高而且工作灵活的部件。
2.6 频率测量
本设计所采用的霍尔传感器是由一个磁钢和一个霍尔器件组成的。
磁钢被贴在非磁性圆盘上,跟着圆盘一起旋转。
此霍尔器件就固定在圆盘的附近,工作时,圆盘每转动一圈,霍尔器件就会产生一个脉冲。
这里的一个脉冲就代表了一个圆盘的周长。
在本设计中,霍尔传感器产生的脉冲将被送到单片机的内部定时计数器timer1的T1口。
内部的定时计数器Timer0工作在定时状态,Timer1工作在计数状态。
Timer0和Timer1均工作在模式1。
本设计中,Timer0所产生的是0.5秒的定时。
Timer1将对0.5秒内对加到T1脚的脉冲进行计数。
假设0.5秒内timer1计数到N个脉冲,则圆盘的转动频率为N / 0.5=2N 。
若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。
对脉冲频率进行处理,即可转化为车速。
对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。
本设计中开辟了两个字节的数据区存储累加脉冲数据,最多能计数65536个脉冲,也即131072 米(假设车轮周长2m)。
3 系统硬件设计
3.1 信号预处理电路
它由二级电路构成,第一级是由开关三极管组成的零偏置放大器,采用开关三极管可以保证放大器具有良好的高频响应。
当输入信号为零或负电压时,三极管截止,电路
输出高电平;而当输入信号为正电压时,三极管导通,此时输出电压随着输入电压的上升而下降,这使得速度里程表既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。
由于放大器的放大功能降低了对待测信号的幅度要求,因此,系统能对任意大于0.5V的正弦波和脉冲信号进行测量。
预处理电路的第二级采用带施密特触发器的反相器CT74LS14来把放大器生成的单相脉冲转换成与COMS电平相兼容的方波信号同时将输出信号加到单片机的P3.2口上。
系统信号预处理电路如图3.1-1所示。
图3.1-1 系统信号预处理电路
3.2 施密特触发器
利用施密特触发器状态转换过程中的正反馈,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。
输入的信号只要幅度大于VT+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。
从传感器得到的矩形脉冲经传输后往往发生波形畸变。
当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接收端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。
无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。
只要施密特触发器的VT+和VT-设置得合适,均能受到满意的整形效果。
施密特触发器对脉冲整形图如图3.2-1所示。
图3.2-1 施密特触发器对脉冲整形图
3.3 液晶显示电路和数据存储电路
本设计的显示部分采用液晶显示模块LCM0825,液晶显示模块与单片机接口电路图如图3.3-1所示。
LCM0825是8位段码式液晶显示模块,它内部集成有LCD控制器、LCD驱动器和RAM,因而可方便显示数据的编程。
液晶显示模块采用3-4线串行数据输入,可直接与单片机接口。
由于串行接口方式节省了所需的口线和系统资源,因而使系统具有较高的资源利用率。
该模块可在2.7V-5.2V电压下工作,其低功耗及背光可调特性使得设计更具有经济性和通用性。
LCM0825能够显示8位数据,每一个数据均以8段码的形式放在其内部显示RAM区,并用模块内RAM的两个存储地址来放置一个数据的8段码。
8位数据共占用内部16个地址。
每一个数据位的8段码存放形式及高低地址存放段码的顺序都和表1所列的第8位数据的8段码存放格式一样,只是段码的存放地址不同。
所以,编程时一定要考虑数据的存放地址和形式。
在使用该液晶显示模块时,VCC与VLCD之间可用一个50KΩ的电位器来调整背光。
图3.3-1 液晶显示模块与单片机接口电路图
4 系统软件设计
整个程序的设计以GX-ARM-S3C2410试验箱为平台,其中速度和里程的计算都采取了近似处理。
本系统软件采用模块化设计方法。
整个系统由初始化模块、电机转速控制模块、电机转向显示模块、频率测量模块、速度,里程显示模块、汉字显示模块以及其他功能模块组成。
系统程序流程总框图如图3-1所示。
程序设计中,以60H、61H、62H三个地址为数据缓冲区,60H(DATA1)用于存储每0.5s 计数到的脉冲数,用于计算速度;61H(DATA2)、62H(DATA3)两个地址用于存储计数到的脉冲的累加数据,用于计算里程。
3-1 系统程序流程总框图
4.1 电机转速控制模块程序设计
电机转速的控制模块由指拨开关、单片机、DAC0832数模变换芯片组成。
指拨开关K0-K7接单片机的P10-P17(P1口),通过指拨开关可输入数据0-255,单片机将指拨开关输入的数据输出到DAC0832数模变换芯片,通过数模变换,转换成-8V-+8V的电压驱动直流电机。
从而达到对电机转速的控制。
输入数据等于128时,输出电压为0V;数据大于128时,输出电压大于0V;输入数据小于128时,输出电压小于0V。
电机转速控制模块程序设计如下:
mov p1,#0ffh ;设置P1口为输入口
mov dptr,#cs0832
mov A, p1
movx @dptr,A
4.2 频率测量模块程序设计
霍尔传感器产生的脉冲被送到单片机的内部定时/计数器timer1的T1口。
内部定时/计数器Timer0工作在定时状态,Timer1工作在计数状态。
Timer0和Timer1均工作在模式1。
本设计中Timer0产生0.5秒的定时。
Timer1将对0.5秒内对加到T1脚的脉冲进行计数。
我们假设0.5秒内timer1计数到了第N个脉冲。
这时,圆盘的转动频率就为为N / 0.5=2N。
频率测量模块程序设计如下:
JISHU: MOV IE,#10001010B ;打开中断开关
MOV TMOD,#MODE ;设定内部定时器/计数器的工作模式
MOV SP,#70H
MOV 40H,#00H
MOV TH1,#00H ;将timer1的计数寄存器赋初值0
MOV TL1,#00H ;将timer1的计数寄存器赋初值0
SETB TR1 ;启动timer1
AA: CLR F1 ;标志位赋0
MOV TH0,#03CH ;定时器写入初值
MOV TL0,#0B0H
SETB TR0 ;打开定时器timer0
JNB F1 , $ ;等待50ms
INC 40H
MOV A, 40H
CJNE A, #09H,AA ;定时中断重复10次
CLR
TR1 ;关闭计数器timer1
MOV DATA1,TL1 ;取出timer1计数值给DATA1
MOV A,DATA1
ADD A,DATA2
MOV DATA2,A ;将计数值累加到DATA2
JNC BB ;检查计数是否溢出
INC DATA3 ;有溢出则DATA3加1
BB: RET
;-----------------------------定时中断子程序
TIMER : CLR TR0
SETB F1
RETI
当Timer0工作在模式1时,TLO 、THO 计数寄存器各使用8位,从计算式 28 = 256,可以得出在设置计数初值时,把计数起点的值除以256,再将其余数放入TLO 计数寄存器,将商数放入THO 计数寄存器。
这个实验系统所采用的是12MHz 的晶振,定时器所计数的脉冲的周期为1us 。
由此,我们将这样设计:每50ms 产生一次定时中断,就需要计数50000个脉冲,则装入计数寄存器的计数初值就为65536–50000 = 15536,这时,装入THO 计数寄存器的初值就为15536/256 = 60(03CH), 装入TLO 计数寄存器的初值为176(0B0H)。
Timer0中断子程序流程图如图3.2-1所示。
4.3 液晶显示程序的设计
本设计中速度和里程的数据由液晶显示模块显示,所用的液晶显示模块由SED1520芯片驱动,首先必须对液晶显示模块进行初始化,编写相应的字库,编写读写程序等。
液晶显示程序的设计包括了初始化程序、清屏程序、写指令代码子程序、写显示数据子程序、读显示数据子程序、中文显示子程序、数字显示程序以及中文字库和数字字库的编写。
4.4 速度、里程显示程序的设计
本设计中霍尔传感器产生的脉冲被送到单片机的内部定时计数器timer1的T1口。
内部定时计数器Timer0工作在定时状态,Timer1工作在计数状态。
Timer0和Timer1均工作在模式1。
本设计中Timer0产生0.5秒的定时。
Timer1将对0.5秒内对加到T1脚的脉冲进行计数。
假设0.5秒内timer1计数到N个脉冲。
则圆盘的转动频率为N /
0.5=2N 。
若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。
对脉冲频率进行处理,即可转化为车速。
对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。
本程序对汽车运行的实际情况进行模拟。
设计程序时假设汽车轮子的周长约为2m,最后在显示屏显示的速度单位是km/h,里程单位是km。
速度的计算如下:
若0.5秒计数到N个脉冲,则轮子的转动频率为2N,车速为2N×2 m/s,也即2N×2×3.6 km/h 。
设计中作近似处理,处理为14N km/h 。
显示时先显示百位,再依次显示十位、个位。
程序如下:
;--------------------------------速度处理显示子程序
SPEED: PUSH A
MOV A,DATA1
MOV B,#0EH ;计数值乘以14
MUL AB
MOV B, #64H ;除数赋值100
DIV AB ;得到百位显示数据代码
MOV CODE_ , A ;百位显示字库代码
MOV A,B
LCALL BB1 ;调用速度写显示数据程序
MOV B,#0AH ;除数赋值10
DIV AB ;得到十位显示数据代码
MOV CODE_ , A ;十位显示字库代码
MOV CTEMP, #08H ;显示后移8列
MOV A,B
LCALL BB1 ;调用速度写显示数据程序
MOV CODE_ , A ;个位显示字库代码
MOV CTEMP, #10H
LCALL BB1
MOV DATA1,#00H ;数据缓冲区清零
POP A
RET
DATA2,DATA3存储计数到的脉冲总数,DATA2能存储255个脉冲,每次计数溢出,则DATA3加1,DATA3里的数据权重为256.这样两个字节的数据能计数最多65536个脉冲,也即131072 米。
130多公里。
实际制作里程表时只要适当增加数据缓冲区的数量,即可对最大显示里程进行扩充。
程序设计过程中,对里程数据的显示作了近似处理。
程序如下:
;---------------------------------里程处理显示子程序
MILAGE: PUSH A
MOV A,DATA3
MOV B,#0C8H ;除以200 显示百位里程数据
DIV AB
MOV CODE_, A
MOV CTEMP,#00H
MOV A,B
LCALL BB2
MOV B,#014H ;显示十位里程数据
DIV AB
MOV CODE_,A
MOV CTEMP, #08H
MOV A,B。