出租车里程显示系统设计.docx
《出租车里程显示系统设计.docx》由会员分享,可在线阅读,更多相关《出租车里程显示系统设计.docx(54页珍藏版)》请在冰豆网上搜索。
出租车里程显示系统设计
出租车里程显示系统的设计
第1章概述
1.1国内外研究现状
自今汽车走过了100多年的发展历程,汽车仪表也在不断开发和发展之中。
汽车仪表发展,按其工作原理上取得的重大技术创新来分经过四代:
第一代汽车仪表是基于机械作用力而工作的机械式仪表,即机械机芯表;第二代汽车仪表的工作原理基于电子测量原理,即通过各类传感器将被测的非电量变换成电信号加以测量,称之为电气式仪表;第三代为模拟电路电子式;第四代为步进电机式全数字汽车仪表。
目前,汽车仪表正在经历第三代向第四代转型时期。
第三代汽车用仪表工作原理与电气式仪表基本相同,只是用电子器件取代原来的电气器件。
随着集成电路技术突飞猛进的发展,这种仪表现在均采用汽车仪表专用集成电路,是国内汽车仪表目前的主流产品,经过多年的发展,其结构形式经历了动圈式机芯和动磁式机芯阶段。
电子器件经历了分立器件和专用集成电路阶段。
发展到今天以塑料件为主;围绕提高指示精度和指针平稳性,有动圈式、动磁式等。
第四代步进电机式全数字式汽车仪表从其应用的技术手段上看,还是电子技术范畴,也属于电子式仪表,但信号处理方式己从模拟变成数字。
其最显著的特征是工作原理与第三代汽车仪表完全不同。
本系统研制的步进电机式车速里程表就是在这第三代和第四代转型时期开发研制的第四代新型仪表。
该表属于第四代步进电机式全数字式汽车仪表,本系统开发的仪表的优点是指示精度高,响应速度快、无抖动,指示范围分度均匀等。
1.2方案比较
根据设计任务,车速里程表机芯的研制主要设计出车速的指示和里程的显示,具有小计里程和总里程的双显示功能,车速具有回零功能。
因此根据总体设计要求,经过分析研究设计出方案如下。
1.2.1方案一:
动磁式车速里程表
电子车速里程表是由步进电机M驱动机械式里程记录机构(计数器),装在变速箱内霍尔传感器的输出信号控制步进电机。
步进电机M由专门集成电路BL2115驱动,步进电机M转动量与变速箱输出轴转动量成一定速比关系,从而取消了传统的软轴驱动。
指示瞬时车速的指针用十字交叉动磁式机芯驱动,该机芯上有一个专门集成电路LM1819同时接受霍尔传感器输出信号,并输出两路驱动十字交叉线包的电流信号。
这两路电流信号决定十字交叉线包的合成磁场方向,合成磁场驱动瞬时车速的指针偏转,用以指示车速。
综上所述,累计里程计数和瞬时车速指示都受控于同一个信号源(霍尔速度传感器)。
图1-1是动磁式车速里程表工作原理框图。
图1-1动磁式车速里程表工作原理框图
这种结构的车速里程表结构复杂,但它具有较好的优点:
用指针指示速度,指针的转速连续、稳定,驾驶员不易产生视觉疲劳。
1.2.2方案二:
双线圈式车速里程表
本方案是通过单片机来实现里程累计、清零及存储,存储由E2PROM芯片AT24C02组成,并以LM1819集成电路驱动十字线圈表头,从而实现车速的指示。
原理框图见图1-2所示。
该设计方案成本低廉、指针稳定性好、响应速度快、抗震性强、可靠性和性价比都很高。
该里程表完全取代了传统的以软轴驱动的车速里程表。
当然,这只是一种实现方案,也可以由单片机通过软件来驱动十字线圈表头,即由单片机分别控制表头的正弦线圈和余弦线圈而省去LM1819集成电路。
对此,本文不再赘述。
图1-2双线圈式车速里程表原理框图
1.2.3方案三:
步进电机式车速里程表
本方案的步进电机式车速里程表是一种用指针指示速度、用液晶显示里程的电子式车速里程表。
车速表不再采用十字交叉动磁式机芯,而改用步进电机式机芯。
该步进电机式机芯由单片机控制,再由步进电机带动指针指示行驶车速,从而实现车速的瞬时指示,因而称作单片机控制步进电机式机芯车速表。
里程累计和小计不再使用机械计数器,而是改用E2PROM芯片存储显示数值,由显示屏LCD(液晶显示屏)显示累计和小计里程。
采用液晶显示后,克服了字轮显示故障率高、受命短等缺点,还增加了短距离计程等功能。
本方案中的步进电机式车速里程表原理框图如图1-3所示。
步进电机式车速里程表是一种以单片机来实现里程累计、小计、清零及存储,并以步进电机来实现车速的指示。
该方案成本低廉、指针稳定性好、响应速度快、抗震性强、可靠性和性价比都很高。
图1-3步进电机式车速里程表原理框图
1.2.4方案论证
实现以上方案都可以达到车速和里程显示的目的,但采用动磁式车速里程表在装配过程中易发生针轴与轴承间间隙不一致、阻尼油阻尼不合适等问题。
而采用双线圈式车速里程表速度指示在低速区的线性差和精度不高。
对于第三种方案采用步进电机式车速里程表,其工作原理上的技术创新以及指针精度较。
故确定采用此方案来实现高精度的车速和里程。
步进电机式车速里程表车速对应指示区间为0~200km/h;里程表由总里程和小计里程组成,总里程显示范围为0~999999km,小计里程显示范围为0~999.9km。
在这第三种方案中,车速和里程信号都是由霍尔传感器送入到单片机的T0和T2端口,T2记录霍尔传感器送入信号的周期,在单片机中做相应处理后,送给步进电机用于车速的测量。
T0记录霍尔传感器送入信号的个数,记录到一定的数值送给LCD显示里程。
并把显示的总里程保存在E2PROM中。
第二章步进电机式车速里程表的硬件构成
在上一章中我们论证了车速里程表的设计方案,步进电机式车速里程表是本文选取的最优方案。
本章将重点介绍该方案的具体实施内容,其中包括车速、里程信号模块、控制模块、LCD显示模块、步进电机指示模块和掉电保护模块等。
下面我们分别对各个模块进行一一介绍。
2.1总体结构的设计和原理概述
步进电机式车速里程表机芯研制的硬件原理框图如图2-1所示。
其中车速、里程信号部分是由霍尔传感器组成。
霍尔传感器安装在变速箱输出轴上,霍尔传感器采集到的信号送是给单片机的定时器/计数器T0和定时器/计数器T2中。
单片机构成了控制部分,单片机把霍尔传感器送来的信号,通过单片机的计数器T0做相应编程,记录下汽车行驶0.1km时霍尔传感器所产生的信号脉冲个数,通过单片机转换为BCD码送给LCD显示,也就实现了最小显示为0.1km,如果累计到1km,就把1km累加到总里程并送入E2PROM保存,再从E2PROM中调入LCD中进行总里程显示。
在LCD显示中分为小计里程显示和总里程显示,小计里程可实现单次行驶路程,总里程记录汽车总行驶路程。
在E2PROM中只保存总里程值,以备单片机掉电时总里程数据丢失。
定时器/计数器T2用于记录单个脉冲的周期,把这个周期值通过软件编译转化为车速值,再由单片机的P0口送给步进电机指示瞬时车速值。
图2-1步进电机式车速里程表机芯的原理框图
显示模块由驱动芯片PCF8566和LCD显示屏组成。
在显示模块中,显示里程的信号是由P2口送入的,P2输出的信号要先经过驱动芯片PCF8566再送给LCD显示。
步进电机模块同样也由驱动芯片组成,本系统选择的驱动芯片是ULN2003,速度信号经由单片机P0口送给驱动芯片,再由驱动芯片送给步进电机指示相应车速值。
2.2车速、里程信号电路的设计
第四代汽车仪表对于传感器的选择,一般常用的是霍尔式和干簧管式转速传感器,也比较少的用到磁电式转速传感器。
因为随着车速的提高,用软轴驱动的传统车速里程表受到前所未有的挑战,这是因为软轴在高速旋转时,由于受钢丝交变应力极限的限制而容易断裂,同时,软轴布置过长会出现形变过大或运动迟滞等现象。
第四代车速里程表无论选择哪种传感器它们输出的信号都要是脉冲信号,从而使得非接触式转速传感器得以迅速发展。
也只有选择产生脉冲信号的传感器才能满足本课题的要求。
故本系统选用霍尔式转速传感器。
霍尔探头组件安装在变速箱输出轴上,里程计数、车速计时脉冲产生的工作原理如图2-2所示。
八个磁钢与变速箱输出轴同步旋转。
霍尔探头固定在变速箱壳体上静止不动,当输出轴上某只磁钢转动到霍尔探头对应位置时,霍尔探头中的霍尔敏感器件受到磁钢磁场作用,霍尔探头输出一个低电平,当没有磁钢与霍尔探头对准时,霍尔探头不再受到磁场作用,输出高电平。
输出轴转动一周,霍尔探头有八个方波输出。
如果以速比为1:
624的车型为例,汽车行驶一公里,则霍尔传感器发出的脉冲数共为8×624=4992个。
步进电机式车速里程表机芯的转动和LCD中里程的显示都是受控于霍尔探头输出的方波个数。
记录4992个脉冲表示汽车行驶1公里,记录单个脉冲的周期算出汽车行驶的速度,具体应用将在相应章节中介绍。
图2-2霍尔传感器组件
2.3控制模块电路的设计
控制模块由单片机构成,单片机的复位电路和振荡电路的连接如图2-3所示,复位选用自动上电复位方式,晶振选用典型值11.0592MHz。
电容C01和C02的作用是帮助起振。
由于AT89S52有8k字节的ROM,对于本系统来说存储器能够满足要求,因此,
=1。
图2-3开关按钮复位和晶振连接图
P0口的低四位承担着传送步进电机时序信号的任务,这个时序信号用来指示相对应的速度,因此P0口的低四位接ULN2003。
由于P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
故需要接上拉电阻来实现“1”的输出。
P2口中的P2.0和P2.1接E2PROM芯片AT24C02的SDA和SCL管脚,P2.2和P2.3接PCF8566的SDA和SCL管脚。
连线之间均接上拉电阻。
2.4里程显示电路的设计
里程显示可由LED和LCD来显示。
由于LCD显示屏具有零辐射、低功耗、散热小、体积小、显示清晰等优点,并且显示视觉效果较好,可有效地缓解驾驶员的眼疲劳。
对于功耗要求越低越好的汽车仪表来说,优先选用LCD来显示里程是它最终的选择。
本文选择的是PCF8566驱动器和专用LCD组成LCD显示模块。
之所以如此选择,是因为PCF8566芯片是低功耗的LCD驱动器。
图2-4为LCD显示模块连线图。
PCF8566的SDA和SCL管脚分别接单片机的P2.0和P2.1,在这两者的连线之间接上拉电阻。
PCF8566的四个背极输出BP0-BP3分别直接与LCD的背极输入BP0-BP3相连,PCF8566的24个段输出也同样直接与LCD相连。
PCF8566器件地址和控制命令字要通过I2C总线发送进来,它们发送的顺序为:
器件地址——方式设置——数据指针——器件选择——闪烁控制。
但本系统只用到一个PCF8566器件,器件的默认子地址为00H,不需要再进行器件选择,故可省去器件选择这个控制命令字。
那么控制命令字的发送顺序改为:
器件地址——方式设置——数据指针——闪烁控制。
PCF8566的VDD脚接+5V,OSC、A0、A1、A2、VSS和VLCD接地。
闰土机械外文翻译成品TB店
图2-4LCD显示模块连线图
车速里程表的速比表示的是:
车轮转轴在汽车行驶一公里时所转过的转数。
步进电机式车速里程表采用的是霍尔式转速传感器。
这种车速里程表转轴每转一圈,霍尔传感器将感应发出八个脉冲。
现在以速比为1:
624的车型为例,汽车行驶一公里,则霍尔传感器发出的脉冲数共为8×624=4992个,也就是说,每个脉冲代表了1/4992公里的路程。
将这些脉冲信号输入给单片机的定时器/计数器T0,利用T0的计数功能,使之计到499个脉冲产生一个中断,中断后进入计数器T0中断子程序,在这个中断子程序中,实现对小计里程的累计和总里程的累加。
若累加了总里程则把累加的总里程数送到E2PROM芯片AT24C02中保存,并从芯片AT24C02中调出送给LCD显示。
从以上章节,我们已经知道LCD分别显示出小计里程和总里程,其中小计里程进位时,也同时累计至总计里程。
小计里程显示为000.0~999.9km,总里程液晶显示为000000~999999km。
液晶里程显示屏见图2-5所示,其中上一排6位显示总里程,下一排4位显示小计里程,且小计里程的最后一位为小数。
器件子地址的传送顺序是从上排左首至右结束,接着再从下排右首开始,至左首结束,上下两排都是左首为高位。
小计里程显示的复位是通过外部中断INT0来实现的,小计里程以0.1km为最低显示数字,停车关掉电门后不保存,总里程显示数值保存在E2PROM中,从而掉电不会丢失总里程数值,当打开电门,即刻显示上次总里程累计数。
下次行车总里程继续累计相加,总里程累计超过显示范围999999km时,不再响应里程数的变化,而一直显示999999km。
小计里程超过显示范围999.9km时即刻清零,并从000.0开始重新计数。
图2-5液晶里程显示屏
2.6掉电保护电路的设计
由于需要保存总里程,但单片机在掉电模式下数据会丢失。
因此应该选择E2PROM存储器,本文选择的E2PROM存储器是AT24C02,它的主要特点在于I2C总线的应用,16字节页写缓冲区、100万次擦写周期、数据存储长达100年和温度范围大等优点。
该存储芯片和单片机的P2.0、P2.1相连,在计数时只要总里程有进位,单片机就把总里程送入AT24C02中保存,同样每次显示的总里程都是从该存储器件中调入的。
该器件支持I2C总线数据传送协议。
I2C总线协议规定,任何将数据传送到总线的作为发送器,任何从总线接收数据的器件为接收器。
数据传送由主器件控制,总线的串行时钟、起始停止条件均由主控制器产生。
主器件和从器件都可以作为发送器或者接收器,但数据转送(接收或发送)模式由主器件控制。
I2C总线协议定义如下:
1.只有在总线非忙时才被允许进行数据传送。
2.在数据传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。
时钟线为高电平时,数据线的任何电平变化将被当作总线的启动或停止条件。
I2C总线的具体应用,请参考相关书籍,本文不再骜述。
总之,通过开始信号、写或读命令、应答信号、传送字节、结束信号等依次顺序送入即可实现数据的传送。
电路连线如图2-8所示。
图2-8E2PROM连线图
里程显示的程序设计
AT89S52和一般单片机一样,支持C51高级语言和asm51汇编语言两种语言编程。
但我们在大学的学习中用的是asm51汇编语言,为了更好的对大学所学课程知识的一次再认识和连贯性总结,故本论文仍然选用汇编语言。
且本程序在设计上主要具有以下特点:
1)在软件结构上,各功能程序实现模块化、子程序化;
2)在显示方式上,采用循环显示队列;
3)速度信号采用脉冲周期测量法,根据车轮周长推算出速度值;
4)里程计数由脉冲个数换算成公里数。
图3-1主程序流程图
主程序流程图如图3-1所示。
在主程序中用来对系统进行初始化,将系统中所有的命令状态以及有关的存储单元置位成初始状态,设置AT89S52的堆栈指针、读E2PROM中的总里程并转化为BCD码,初始化LCD显示,初始化步进电机并使之逆时针旋转280度进行回零,然后判断20H.0是否为1,如为1则保存里程信号到E2PROM中,否则调用里程显示模块,再判断20H.3是否为1,如为1则调用速度显示模块,否则返回继续判断20H.0。
中断实现了对采集的信号处理、置判断标志、存储、送显示、指示等。
3.1.1里程的累加
T0中断里程计数子程序中,计499个脉冲表示行走了0.1公里,并产生中断进入T0中断子程序。
在这里首先关闭中断,小计里程单元加一,并送备调用显示单元。
如果进位达到一公里,则总里程单元也加一,并把总里程单元送入E2PROM芯片保存。
其中写里程子程序如图3-2所示。
起始地址SLA24赋值00H,发送数据缓冲区首址为50H,传送字节数为06H,所以发送数据单元为50H、51H、52H、53H、54H、55H六个单元。
寻址字节为0A0H,表示为写字节。
最终发送的六个数据保存在AT24C02的00H、01H、02H、03H、04H和05H中。
图3-2写里程子程序图3-3读里程子程序
读里程子程序如图3-3所示,其中起始地址SLA24同样赋值00H,接收数据缓冲区首址为40H,传送字节数为06H,所以接受数据单元为40H、41H、42H、43H、44H和45H六个单元。
寻址字节为0A0H时为写字节,为0A1H时为读字节。
同样是从00H、01H、02H、03H、04H和05H这六个地址中读出的。
里程的设计关键是在中断里的设置,计数器T0初值的计算为:
216表示计数器T0选择方式1的最大计数值,499为汽车行驶0.1公里的脉冲个数,65037化为十六进制为0FE0DH。
当T0计到499个脉冲时,就跳转到T0中断。
在中断中首先关闭中断允许EA,接着就是做加法处理,并置标志位20H.0以便是否要送E2PROM保存。
图3-4为具体流程图。
小计里程在36H、37H、38H、39H中做加法,并送46H、47H、48H、49H单元,以便转化为BCD码送入LCD显示。
标志位20H.0为1时,就把总里程加法处理过的30H、31H、32H、33H、34H、35H单元内容送50H、51H、52H、53H、54H、55H单元,以便写入E2PROM保存。
如果标志位20H.0为0,则中断返回。
从而实现了里程的处理。
图3-4T0中断子程序
下面我们给出T0中断的子程序:
INTT0:
PUSHACC
PUSHPSW
CLREA
MOVTH0,#0FEh
MOVTL0,#0Dh
INC36H
;小计里程显示
MOVA,36H
CJNEA,#10,LT03
MOV36H,#00H
CLR20H.0
LCALLLT06
;小计里程进位送总里程
INC37H
MOVA,37H
CJNEA,#10,LT03
MOV37H,#00H
INC38H
MOVA,38H
CJNEA,#10,LT03
MOV38H,#00H
INC39H
MOVA,39H
CJNEA,#10,LT03
MOV39H,#00H
LT03:
MOVA,36H
;小计里程送46-49以备送显示
MOV46H,A
MOVA,37H
MOV47H,A
MOVA,38H
MOV48H,A
MOVA,39H
MOV49H,A
POPPSW
POPACC
SETBEA
RETI
LT06:
INC35H
;插入总里程
MOVA,35H
CJNEA,#10,LT04
;45H不等于10,则跳转
MOV35H,#00H
INC34H
MOVA,34H
CJNEA,#10,LT04
;44H不等于10,则跳转
MOV34H,#00H
INC33H
MOVA,33H
CJNEA,#10,LT04
MOV33H,#00H
INC32H
MOVA,32H
CJNEA,#10,LT04
MOV32H,#00H
INC31H
MOVA,31H
CJNEA,#10,LT04
;41H不等于10,则跳转
MOV31H,#00H
INC30H
MOVA,30H
CJNEA,#10,LT04
MOV30H,#09H
MOV31H,#09H
MOV32H,#09H
MOV33H,#09H
MOV34H,#09H
MOV35H,#09H
LT04:
SETB20H.0
RET
3.1.2里程的显示
LCD显示子程序是里程显示中的难点,其关键在于PCF8566的应用。
其中也用到I2C总线,这一点和读、写子程序一样,但比它要复杂一些。
见图3-5所示。
图3-5LCD显示子程序
在LCD显示子程序中,先送器件地址接着送器件的控制命令,根据“里程显示电路的设计”这一小节我们知道,控制命令有四个字节,但因为我们只有一个LCD显示芯片,故省去了器件选择控制命令这一字节。
这个子程序在主程序中循环调用,具体应用见附录E。
基于红外线的电灯亮度遥控器的设计
原理简介:
一、编码格式
红外遥控输出40KHz的载波编码,改变R3大小可以改变发射距离。
遥控器采用脉冲个数编码,不同的脉冲个数代表不同的码。
电灯的亮度可分别用不同的脉冲个数来控制。
为了使接收可靠,第一位码宽为3ms,其余为1ms,遥控码帧间隔大于10ms。
二、遥控码发射
当某一个按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成40KHz方波由红外线发射出去。
输出调制波如图3所示。
一、数据帧的接收处理
当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。
在数据帧接收时,将对第一位起始码的码宽进行验证,若第一位低电平码的脉宽小于2ms,将作为错误码处理,当间隔位的高电平脉冲宽度大于3ms时,结束接收,然后根据累加器A中的脉冲个数,执行相应输出口的操作。
图4为红外线接收器输出的一帧遥控码波形。
图1红外发射电路
图2红外接收电路
图3输出编码波形图图4一帧遥控码波形
过零检测电路
过零检测电路由变压器、桥式整流和两个9013三极管组成。
原理自行分析。
。
。
电灯开关及亮度控制电路
电灯的开关受P1.7口控制,也可由可控硅的导通角控制,
单片机产生可控硅控制的移相脉冲,移相角的改变实现导通角的改变,即当移相角较大时,可控硅的导通角较小,输出电压较低,电灯较暗;当移相角较小时,可控硅的导通角较大,输出电压较高,电灯较亮。
当P1.6口为低电平时,9012三极管导通,三极管集电极电流驱动光耦合器导通,使可控硅的G极产生导通电流,触发可控硅导通,当P1.6口为高电平时,9012三极管、光电耦合器、可控硅都处于截止状态。
IC卡简易收费装置的设计
在本设计中,研究的是IC卡的收费装置,简单的说就是对IC卡进行读和写的装置的研究。
这种收费装置也可称为“读写设备、读写器或读写终端”。
IC卡读写装置的种类很多,功能上也由于不同的需要差别也很大,但就其对卡的操作功能来说,都应该具备以下几个基本功能:
(1)IC卡的识别和控制。
(2)向IC卡提供其所需的稳定的电源与时钟信号。
(3)实现与卡的数据交换,并提供相应的控制信号。
(对于加密数据系统,应提供相应的加密解密处理及密钥管理机制。
提供相应的外部控制信息及其它设备的信息交换)。
2.2IC卡读写器硬件电路设计
2.2.1功能要求
本课题设计实现的通用型接触式IC卡读写器需要实现以下具体的功能:
(1)能够对IC卡进行识别。
(2)为IC提供稳定的时钟信号。
(3)有显示装置显示对IC卡操作前后,IC卡中的数据。
(4)有键盘用于对IC卡进行具体的操作(数据的读出和写入)。
2.2.2模块框图
图2-1IC卡读写器模块框图
2.2.4IC卡的选择及读写操作
本设计中采用的是一种ATMEL公司生产的AT24C02存储式IC卡。
它的存储容量为2K,2.5~5V低电压供电,双线串行接口,双向数据传输,它的擦/写次数可以达到10万次以上,其中保存数据的时间可以达到100年以上。
它是目前国内使用最多的IC卡之一。
AT24C02中带有片内地址寄存器。
每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。
所有字节均以单一操作方式读取。
为降低总的写入时间,一次操作可写入多达8个字节的数据。
下面是其引脚图。
图2-3AT24C02的引脚图
图2-4AT24C02的设计连接图
上图2-4是本设计中AT24C02的电