汽车速度里程表的设计.docx
- 文档编号:26619754
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:24
- 大小:369.89KB
汽车速度里程表的设计.docx
《汽车速度里程表的设计.docx》由会员分享,可在线阅读,更多相关《汽车速度里程表的设计.docx(24页珍藏版)》请在冰豆网上搜索。
汽车速度里程表的设计
汽车速度里程表的设计
摘要:
在车辆高速行驶的过程中,车速里程表是为驾驶员及时提供动态驾驶信息的重要仪表,它的好坏直接影响到车辆行驶平安。
而传统的车速里程表存在两大缺陷:
一是用软轴驱动的传统车速里程表在车辆高速行驶状态下,软轴高速旋转,由于软轴钢丝应力极限的限制,常常造成钢丝软轴的疲劳断裂,从而使车速里程表失效;二是由于软轴布线过长,出现形变过大和运动迟滞现象,导致动态指示迟钝或指示错误。
为了更加及时可靠的为驾驶员提供动态驾驶信息,保证车辆行驶平安,客服传统软轴驱动车速里程表故障率高、动态指示迟钝等问题,运用先进的电子技术、传感器测量技术和计算机智能技术,改良传统的里程表是非常必要的。
关键字:
单片机,霍尔传感器,车速里程表
Abstract:
Intheprocessofhigh-speedvehicles,vehiclespeedodometerisimportantinstrumentdrivertoprovidedynamicdrivinginformation,whichdirectlyaffectstherunningsafetyofvehicles.Thespeedometertraditionhastwodefects:
oneisthetraditionalspeedometerflexibleshaftdrivingthevehiclehighspeedrunningcondition,theshaftrotatingspeed,theflexibleshaftsteelwirestresslimit,oftenresultinginfatiguefractureofthewireflexibleshaft,sothatthespeedometerfailure;twoisaflexiblewiringistoolongduetodeformation,appeartoolargeandthemotionlag,leadtodynamicindicatingsloworindicationerror.Inordertobemorereliableandtimelytothedriver'sdrivingdynamicinformation,guaranteethedrivingsafety,theproblemofhighfailurerate,thespeedometerdynamicindicatingslowservicetraditionalflexibleshaftdriving,theuseofelectronictechnology,sensortechnologyandcomputerintelligencetechnologyadvanced,theimprovementofthetraditionalodometerisverynecessary.
Keywords:
Themicrocontroller,hallsensors,memory,Thespeedometer
前言
汽车是现代生活中不可或缺的一种重要交通工具,传统的指针式里程表伴随着汽车的诞生就一直为人们喜爱,不过,新生事物不会因传统的存在而停止它前进的步伐。
数码科技在今天已渗透到工业,农业,民用等产品的点点滴滴。
新概念的车速里程表最直观的变化就是用大屏幕的液晶取代指针式表盘,直接用数字显示速度和里程,以及其他一些诸如油耗、时钟、环境温度等参数,直观的呈现给使用者。
同时,它还具有本钱低廉,显示清晰,稳定可靠等优点。
由于单片机体积小,可以把它做到产品的内部,取代老式机械零件,缩小产品体积,增强功能,实现智能化。
因此被广泛地用在智能产品中。
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的均匀磁场中,磁场的方向和电流方向垂直,在金属板的第三对外表间就显示出横向电势差UH的现象称为霍耳效应。
UH就称为霍耳电势差。
实验测定,霍耳电势差的大小和电流I及磁感强度B成正比,而与板的厚度d成反比。
霍尔转速传感器:
霍尔转速传感器的外形图和与磁场的作用关系如下图。
磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。
霍尔传感器检测转速示意图如。
在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。
圆盘每转动一圈,霍尔传感器便输出一个脉冲。
通过单片机测量产生脉冲的频率就可以得出圆盘的转速。
霍尔电流传感器本身已经存在滤波电路,输出无须再加装滤波,可直接供单片机的0~5V的AD采集或直接送到单片机的中断输入引脚,信号非常稳定,而且抗干扰能力很强。
霍尔电流传感器反响速度一般在7微妙,所以不用考虑单片机循环判断的时间。
假设在圆盘上贴上多块磁钢,那么圆盘每转一圈,输出的脉冲信号将相应增加,单位时间内测到的脉冲数将增多,测出的转速也将更加精细。
图2.1-1霍尔转速传感器的外形图
图2.1-2霍尔传感器检测转速示意图
2.2AT89C2051芯片简介
AT89C2051是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器〔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次〕FlashROM;
★128x8bit内部RAM;
★6个中断源;
★低功耗空闲和掉电模式;
★软件设置睡眠和唤醒功能。
2.3液晶显示模块SED1520芯片介绍
SED1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十分方便,作为内藏式控制器被广泛应用于点阵数较少的液晶显示模块。
2.3.1SED1520芯片介绍
本设计仿真实验系统采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。
图形液晶显示模块有两种连接方式。
一种为直接访问方式,一种为间接控制方式。
本设计采用直接控制方式。
直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。
计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据存放器选择信号AO由地址线A0控制。
实际电路如图2.3.1-1所示。
地址映射如表2.3.1-1所示〔地址中的X由LCDCS决定,可参见地址译码局部说明〕。
表2.3.1-1地址映射
0X000H
0X001H
0X002H
0X003H
0X004H
0X005H
0X006H
0X007H
写E1指令
写E1数据
读E1状态
读E1数据
写E2指令
写E2数据
读E2状态
读E2数据
图2.3.1-1液晶屏显示控制电路
2.3.2SED1520的特性
内置显示RAM区RAM容量为2560〔32行80列〕位。
RAM中的1位数据控制液晶屏上一个点的亮灭状态:
“1〞表示亮,“0〞表示暗。
它具有16个行驱动口和16个列驱动口,并可级联两个SED1520实现32行驱动。
还可直接与80系列微处理器相连,亦可直接与68系列微处理器相连。
其驱动占空比为1/16或1/32。
并可以与SED1520配合使用,以便扩展列驱动口数目。
2.3.3SED1520指令与显示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。
电机转速控制模块程序设计如下:
movp1,#0ffh;设置P1口为输入口
movdptr,#cs0832
movA,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:
MOVIE,#10001010B;翻开中断开关
MOVTMOD,#MODE;设定内部定时器/计数器的工作模式
MOVSP,#70H
MOV40H,#00H
MOVTH1,#00H;将timer1的计数存放器赋初值0
MOVTL1,#00H;将timer1的计数存放器赋初值0
SETBTR1;启动timer1
AA:
CLRF1;标志位赋0
MOVTH0,#03CH;定时器写入初值
MOVTL0,#0B0H
SETBTR0;翻开定时器timer0
JNBF1,$;等待50ms
INC40H
MOVA,40H
CJNEA,#09H,AA;定时中断重复10次
CLRTR1;关闭计数器timer1
MOVDATA1,TL1;取出timer1计数值给DATA1
MOVA,DATA1
ADDA,DATA2
MOVDATA2,A;将计数值累加到DATA2
JNCBB;检查计数是否溢出
INCDATA3;有溢出那么DATA3加1
BB:
RET
;-----------------------------定时中断子程序
TIMER:
CLRTR0
SETBF1
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所示。
图3.2-1Timer0中断子程序流程图
主程序流程图如图3.2-2所示。
图3.2-2主程序流程图
4.3液晶显示程序的设计
本设计中速度和里程的数据由液
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 速度 里程表 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)