出租车里程显示系统的设计_第1页
出租车里程显示系统的设计_第2页
出租车里程显示系统的设计_第3页
出租车里程显示系统的设计_第4页
出租车里程显示系统的设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

付费下载

VIP免费下载

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

文档简介

参考必读下列资料与各个论文题目均有所出入,相关内容仅供参考,不可雷同。错误更改:(陈廷廷、胡大亮、吕帅、陈迟、许彪)步进电机式湿度表的设计 改为 步进电机式温度表的设计格式要求内容分为:引言、正文、结论与展望、致谢、参考文献等几个部分。各部分均要分页。各章亦要分页显示。图表格式要正确,必须用黑色笔书写,字体要端正,不可潦草。- 44 -出租车里程显示系统的设计第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 方案论证实现以上方案都可以达到车速和里程显示的目的,但采用动磁式车速里程表在装配过程中易发生针轴与轴承间间隙不一致、阻尼油阻尼不合适等问题。而采用双线圈式车速里程表速度指示在低速区的线性差和精度不高。对于第三种方案采用步进电机式车速里程表,其工作原理上的技术创新以及指针精度较。故确定采用此方案来实现高精度的车速和里程。步进电机式车速里程表车速对应指示区间为0200km/h;里程表由总里程和小计里程组成,总里程显示范围为0999999km,小计里程显示范围为0999.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的车型为例,汽车行驶一公里,则霍尔传感器发出的脉冲数共为86244992个。步进电机式车速里程表机芯的转动和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总线发送进来,它们发送的顺序为:器件地址方式设置数据指针器件选择闪烁控制。但本系统只用到一个PCF85 66器件,器件的默认子地址为00H,不需要再进行器件选择,故可省去器件选择这个控制命令字。那么控制命令字的发送顺序改为:器件地址方式设置数据指针闪烁控制。PCF8566的VDD脚接+5V,OSC、A0、A1、A2、VSS和VLCD接地。图2-4 LCD显示模块连线图车速里程表的速比表示的是:车轮转轴在汽车行驶一公里时所转过的转数。步进电机式车速里程表采用的是霍尔式转速传感器。这种车速里程表转轴每转一圈,霍尔传感器将感应发出八个脉冲。现在以速比为1:624的车型为例,汽车行驶一公里,则霍尔传感器发出的脉冲数共为86244992个,也就是说,每个脉冲代表了1/4992公里的路程。将这些脉冲信号输入给单片机的定时器/计数器T0,利用T0的计数功能,使之计到499个脉冲产生一个中断,中断后进入计数器T0中断子程序,在这个中断子程序中,实现对小计里程的累计和总里程的累加。若累加了总里程则把累加的总里程数送到E2PROM芯片AT24C02中保存,并从芯片AT24C02中调出送给LCD显示。从以上章节,我们已经知道LCD分别显示出小计里程和总里程,其中小计里程进位时,也同时累计至总计里程。小计里程显示为000.0999.9km,总里程液晶显示为000000999999km。液晶里程显示屏见图2-5所示,其中上一排6位显示总里程,下一排4位显示小计里程,且小计里程的最后一位为小数。器件子地址的传送顺序是从上排左首至右结束,接着再从下排右首开始,至左首结束,上下两排都是左首为高位。小计里程显示的复位是通过外部中断INT0来实现的,小计里程以0.1km为最低显示数字,停车关掉电门后不保存,总里程显示数值保存在E2PROM中,从而掉电不会丢失总里程数值,当打开电门,即刻显示上次总里程累计数。下次行车总里程继续累计相加,总里程累计超过显示范围999999km时,不再响应里程数的变化,而一直显示999999 km。小计里程超过显示范围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-8 E2PROM连线图里程显示的程序设计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-4 T0中断子程序下面我们给出T0中断的子程序:INTT0: PUSH ACCPUSH PSW CLR EA MOV TH0,#0FEh MOV TL0,#0Dh INC 36H;小计里程显示 MOV A,36H CJNE A,#10,LT03 MOV 36H,#00H CLR 20H.0LCALLLT06;小计里程进位送总里程 INC 37H MOV A,37H CJNE A,#10,LT03 MOV 37H,#00H INC 38H MOV A,38H CJNE A,#10,LT03 MOV 38H,#00H INC 39H MOV A,39H CJNE A,#10,LT03 MOV 39H,#00HLT03: MOV A,36H;小计里程送46-49以备送显示 MOV 46H,A MOV A,37H MOV 47H,A MOV A,38H MOV 48H,A MOV A,39H MOV 49H,A POP PSW POP ACC SETB EA RETILT06:INC35H;插入总里程MOVA,35HCJNEA,#10,LT04;45H不等于10,则跳转MOV35H,#00HINC34HMOVA,34HCJNEA,#10,LT04;44H不等于10,则跳转MOV34H,#00HINC33HMOVA,33HCJNEA,#10,LT04MOV33H,#00HINC32HMOVA,32HCJNEA,#10,LT04MOV32H,#00HINC31HMOVA,31HCJNEA,#10,LT04;41H不等于10,则跳转MOV31H,#00HINC30HMOVA,30HCJNEA,#10,LT04MOV30H,#09HMOV31H,#09HMOV32H,#09HMOV33H,#09HMOV34H,#09HMOV35H,#09HLT04:SETB20H.0RET3.1.2 里程的显示 LCD显示子程序是里程显示中的难点,其关键在于PCF8566的应用。其中也用到I2C总线,这一点和读、写子程序一样,但比它要复杂一些。见图3-5所示。图3-5 LCD显示子程序 在LCD显示子程序中,先送器件地址接着送器件的控制命令,根据“里程显示电路的设计”这一小节我们知道,控制命令有四个字节,但因为我们只有一个LCD显示芯片,故省去了器件选择控制命令这一字节。这个子程序在主程序中循环调用,具体应用见附录E。基于红外线的电灯亮度遥控器的设计原理简介:一、编码格式红外遥控输出40KHz的载波编码,改变R3大小可以改变发射距离。遥控器采用脉冲个数编码,不同的脉冲个数代表不同的码。电灯的亮度可分别用不同的脉冲个数来控制。为了使接收可靠,第一位码宽为3ms,其余为1ms,遥控码帧间隔大于10ms。二、遥控码发射当某一个按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成40KHz方波由红外线发射出去。输出调制波如图3所示。一、 数据帧的接收处理当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。在数据帧接收时,将对第一位起始码的码宽进行验证,若第一位低电平码的脉宽小于2ms,将作为错误码处理,当间隔位的高电平脉冲宽度大于3ms时,结束接收,然后根据累加器A中的脉冲个数,执行相应输出口的操作。图4为红外线接收器输出的一帧遥控码波形。图1 红外发射电路图2 红外接收电路10ms10ms 停止位1ms第一位3ms1ms3ms1ms帧间隙10ms 图3 输出编码波形图 图4 一帧遥控码波形过零检测电路过零检测电路由变压器、桥式整流和两个9013三极管组成。原理自行分析。电灯开关及亮度控制电路电灯的开关受P1.7口控制,也可由可控硅的导通角控制,单片机产生可控硅控制的移相脉冲,移相角的改变实现导通角的改变,即当移相角较大时,可控硅的导通角较小,输出电压较低,电灯较暗;当移相角较小时,可控硅的导通角较大,输出电压较高,电灯较亮。当P1.6口为低电平时,9012三极管导通,三极管集电极电流驱动光耦合器导通,使可控硅的G极产生导通电流,触发可控硅导通,当P1.6口为高电平时,9012三极管、光电耦合器、可控硅都处于截止状态。IC卡简易收费装置的设计在本设计中,研究的是IC卡的收费装置,简单的说就是对IC卡进行读和写的装置的研究。这种收费装置也可称为“读写设备、读写器或读写终端”。IC卡读写装置的种类很多,功能上也由于不同的需要差别也很大,但就其对卡的操作功能来说,都应该具备以下几个基本功能:(1)IC卡的识别和控制。(2)向IC卡提供其所需的稳定的电源与时钟信号。(3)实现与卡的数据交换,并提供相应的控制信号。(对于加密数据系统,应提供相应的加密解密处理及密钥管理机制。提供相应的外部控制信息及其它设备的信息交换)。2.2 IC卡读写器硬件电路设计2.2.1 功能要求本课题设计实现的通用型接触式IC卡读写器需要实现以下具体的功能:(1)能够对IC卡进行识别。(2)为IC提供稳定的时钟信号。(3)有显示装置显示对IC卡操作前后,IC卡中的数据。(4)有键盘用于对IC卡进行具体的操作(数据的读出和写入)。2.2.2 模块框图微控制器微控制器键盘和接口电路IC卡插座复位电路显示电路晶振电路图2-1 IC卡读写器模块框图2.2.4 IC卡的选择及读写操作本设计中采用的是一种ATMEL公司生产的AT24C02存储式IC卡。它的存储容量为2K,2.55V低电压供电,双线串行接口,双向数据传输,它的擦/写次数可以达到10万次以上,其中保存数据的时间可以达到100年以上。它是目前国内使用最多的IC卡之一。AT24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。下面是其引脚图。图2-3 AT24C02的引脚图图2-4 AT24C02的设计连接图上图2-4是本设计中AT24C02的电路连接图,其中AT24C02的1,2,3脚是三条地址线,用于确定芯片的硬件地址,它们和4号引脚都接地。第8和第4引脚分别接正负电源。第5脚SDA为串行数据的输入输出端,数据通过这条I2C总线进行串行传输,它和AT89C52的P1.1口相连接。第6脚是SCL,它是串行时钟输入线,它和AT89C52的P1.0口相连接,SDA和SCL和正电源的之间都要加上一个上拉电阻,电阻的大小为5.1K。第7脚需要接地,它是用来写保护的。AT24C02中带有片内地址寄存器,每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。下面对AT24C02的读写方式进行说明。SDA和SCL:在AT24C02中与逻辑控制有关的引出端线只有两条:SCL和SDA,所有的地址、数据及读/写控制命令等信号都从SDA端输入/输出。为了区分SDA线上的数据、地址、操作命令以及各种状态的“开始”与“结束”,卡片中设计了多个逻辑控制单元。其中启动和停止逻辑单元产生控制读/写操作的“开始”和“停止”标志信号。“开始”状态:当SCL处于高电平时,SDA从高电平转向低电平,即产生“开始”标志信号。“停止”状态:当SCL处于高电平时,SDA从低电平转向高电平,即产生一个“停止”标志信号,如下图所示。图2-5 读/写操作的启动与停止时序图由图2-5可以看出SDA和SCL各自通过一个上拉电阻拉到高电平。当SCL为高电平时对应的SDA上的数据有效;而当SCL为低电平时,允许SDA上的数据变化。数据输入/输出应答逻辑单元产生数据输入/输出操作应答信号。操作是所有的地址和数据字都以8位码串行输入/输出于卡片。卡片每收到一个8位码长的地址码或数据字后,都以置SDA线为低电平方式“确认”应答信号。其波形如下图所示。图2-6 输入/输出的确认时序图IC卡的写操作:在器件地址码之后,紧跟着的是字节地址码。地址码长度为八位。时序中的数据为写字节时,由IC卡读/写器中的单片机在SDA发送一个八位码长的数据;卡片每收到一个数据字节后,都要通过SDA回送一个“确认”信号(ACK)。写操作时序图如下所示。图2-7 写操作时序图IC卡的读操作:读操作有三种:现行地址读、随机地址读及顺序读。(1)现行地址读:如果最后一次操作的地址在N,则现行地址为N+1。(2)随机地址读:从选定的地址单元开始读,时序中器件地址和字地址概念同写操作,不同的是,IC卡读/写器中的单片机在给出数据字地址码之后,不发生任何数据字,而是在卡片发出“确认”应答之后,又发出一个“开始”状态,进入“现行地址读”操作。单片机读如1个数据字后,使SDA处于高电平,随后产生一个“停止”状态,结束。图2-8 读操作时序图(3)顺序读:可以从“现行地址读”和“随机地址读”开始。当IC卡读/写器中的单片机收到第一个数据字后,不发“停止”状态,而是回答一个“确认”信号。一旦卡片收到单片机发出的“确认”信号,则将卡片内地址计数器的地址自动加1,并将此地址单元中的数据从SDA线上串行输出。只要单片机收到数据字后回答“确认”信号,顺序读操作就继续进行,直到单片机发出“停止”信号为止。IC卡的芯片操作地址(器件地址)表2-1 AT24C02的操作地址 1 0 1 0 A2 A0 A1 R/W2.2.6 读写器的键盘电路在本设计中要求IC卡读/写终端除了完成基本的IC卡数据读写功能,还要提供其他功能。脱机型读写器要求可以脱离上位机独立工作,所以要求IC卡读/写器要有键盘和显示功能作为用户的操作界面。 操作界面是用户是对设备进行操作和控制的接口,一般包括键盘和显示。用户根据显示的提示,使用键盘输入命令,从显示得到设备输出的结果。这一部分是人机对话的部分,是人在使用机器时和机器对话的窗口。键盘实质上是一组按键开关的集合,控制CPU通过按键来识别特定的用户命令 从而转入相应的程序来执行用户命令。键盘的软硬件设计涉及下面几个方面的问题。(1)按键的确认:键的闭合与否反应在电压上就是呈现出高电平或低电平,如果高电平表示断开,那么低电平则表示闭合,通过电平的高低状态的检测便可确认键按下与否。图2-10 按键的抖动示意图常见的键盘都是机械开关式的,由于机械咬合的特性以及操作人员手部的不稳定,在按键闭合和松开的瞬间会产生抖动的现象,如上图2-10所示。抖动现象一般持续10ms左右的时间。如果不采取措施消除抖动干扰,在程序中就会出现一个按键被反复按下的错误。这个时候我们就要想办法消除键盘的抖动,常用的消除抖动的方法有硬件和软件消除两种方法。在硬件上通常采用的是双D触发器构成RS触发器,通过分析RS触发器的特性可以知道,输入端有微小的抖动对输出的影响是非常小的,这种电路也常使用在单按键电路中,在本设计中采用的键盘的按键有16个用硬件消除抖动的方法就显得太麻烦了,因此在设计中采用的是软件消除的办法,软件消除的方法很多,最常用的方法是延迟操作,其原理就是在读取第一个键值后,延迟一段时间后,再次读取键值,判断和前一次读取的键值是否相同,如果相同就认为读取了正确的键值。(2)按键接口设计和按键识别方法:按键接口设计有两种方法,独立式按键和矩阵式键盘。独立式按键是各键互相独立,每个按键各接一根输入线,在没有键按下的时候,P1口的电平是高电平,当有其中有键被按下的时候,和那个被按下的键相对应的P1口的就接地,这时其电平就会变成低电平,所以判断独立式键盘的哪个键被按下很简单,只要检测输入线的电平就可以来识别按键的状态。这种方法电路配置灵活,软件结构简单,但每个按键需占用一根输入口线,I/O资源浪费大。故此方法只适用于按键少,或其他控制功能很简单的场合。矩阵式键盘适用于按键数量较多的场合,它把键盘输入线分为行线和列线,按键位于行、列的交叉点上。按键的识别需要软件分别扫描行线和列线,根据扫描结果判断具体按下的按键。下图2-11是独立式按键的硬件设计图。图2-11 独立式按键硬件设计图由上图可看出,独立式键盘的每一个按键都要占用一根输入口线,I/O资源的浪费很厉害,因此它只适用于一些按键的数量较少的,或者是控制功能的要求很简单的设计,本设计的键盘的按键的数量有16个之多,这种独立式的按键设计方法很显然不适合本设计。所以在本设计中采用的是4乘4的16个按键的键盘,下图是其硬件电路示意图。 图2-12 矩阵式按键硬件设计图由上面两副图比较就可以看出,矩阵式结构的键盘显然比独立式要复杂一些,识别也要复杂一些,上图2-12中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过单片机读入输入线的状态就可得知是否有键按下了。确定矩阵式键盘上何键被按下有几种方法,下面介绍的扫描法就是一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,下面我们和具体的分析。(1) 判断有无键按下:首先将全部列线置低电平,然后检测行线的状态。只要有一行的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有行线均为高电平,则键盘中无键按下。 (2)判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将列线置为低电平,即在置某根列线为低电平时,其它线为高电平。在确定某根列线位置为低电平后,再逐行检测各行线的电平状态。若某行为低,则该行线与置为低电平的列线交叉处的按键就是闭合的按键。键盘扫描只是CPU的工作内容之一,CPU在忙于各项工作时,如何处理键盘的输入取决于键盘的工作方式,键盘工作方式的选择应根据应用系统中CPU工作的忙、闲情况而定。通常键盘工作方式有三种:编程扫描、定时扫描和中断扫描。(1)编程扫描:CPU反复地扫描键盘,等待用户的输入命令,而执行键入命令或处理输入数据时,CPU不再响应输入要求,直到CPU返回重新扫描键盘为止。(2)定时扫描:它的工作方式是利用单片机内部定时器产生定时中断,CPU响应定时器中断后对键盘进行扫描,在有键按下时识别出该键并执行相应功能程序。(3)中断方式:在没有键按下时,不占用CPU处理时间,只有当有键按下时产生键盘中断,由中断程序识别键并执行功能程序,这种方式对CPU的资源的使用非常的节省,因为它在没有按键按下的时候,并不需要CPU对其进行扫描,所以这种方法是使用最多的一种。本设计中键盘的各个按键和功能。 1 2 3 E 4 7 A 5 8 0 6 9 C D B F图2-13 键盘的按键图可以看到键盘有09十个数字键,A,B,C,D,E,F是五个不同的功能键,用于实现一些功能的操作。(1)09是十个数字键,用于向卡中输入具体的数值。(2)A:取消键。(3)B:确认键。进行一步操作后进行确认时按下。(4)C:存款键,按下后,可以向卡中写入一定数额的钱数,然后确认。(5)D:缴费键,按下后,再输入要花费的数额,然后确认。(6)E:查询键,用于查询卡中钱数。(7)F:退格键,操作错误时恢复。2.2.7 显示电路的设计应用系统中常用的显示器有发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光显示器。前面两种显示器使用最多,本设计中采用的是LED,下面就对其显示原理和使用方法做简单的说明。LED显示器由发光二极管显示字段组成,在本设计中采用的是7段数码管作为显示装置7段数码管分为8段:A,B,C,D,E,F,G,DP其中DP是小数点,数码管常用的有10根管脚,其中有两个管脚作为公共端,相互之间是连通的。如图2-15所示,1号脚和6号脚是公共端,因为这是个共阴极的数码管,所以它们与地相连。下图2-14是LED的管脚图,2-15是其内部电路图。图2-14 LED的管脚图图2-15 LED的内部电路图LED显示方式分静态显示和动态显示。静态显示时显示器中的各位相互独立,而且各位显示字符一经确定,相应锁存器的输出将维持不变,直到单片机将另一个要显示的字符送到为止。这种显示方式接口编程容易,管理简单,数据稳定占用的CPU的时间少,显示的时候每一个显示器都要占用一个I/O口。静态显示的优点在于,静态显示数据显示稳定,占用很少的CPU时间,但是每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多,有几个数码管就需要几个I/O锁存器,这样对资源的浪费比较严重,在显示的位数比较多时,就不适合。在显示位较多时,一般都采用动态显示方式。LED动态显示时,动态显示只需要一个显示驱动电路,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O口线控制,实现各位的分时选通。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的字形码,这样同一时刻只有一位显示出字符。在下一时刻,只让下一位的位选线处于选通状态,同时,在段选线上输出相应位将要显示字符的字符码。只要每位显示间隔足够短,如此循环就可以使各位显示出将要显示的字符,达到显示目的。动态显示会存在闪烁现象,但是如果LED不同位显示的时间间隔选择的好的话,由于人眼的暂留作用,人眼是无法分辨的,感觉就像是一组稳定的数据。上面所叙是LED显示的基本原理,根据这些基本原理,选择不同的软硬件方法都可以实现LED显示。在本设计中选用的就是LED的动态显示,其中段选线占用一个8位I/O口,由74LS164扩展得到,如下图2-16所示。在设计中单片机AT89C52的P0.0口和P0.1口用于和74L164相连接,它门分别与74L164的A,B和CLK相连接,剩下的P0口的6个I/O口作为位选。74L164的作用是用于驱动数码管。 图2-16 驱动显示的连接图由图可以看出,由于各位的段选线并联,段码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通的话,6位LED将显示相同的字符。所以若要各位LED能够显示出我们想要的字符,就必须采用扫描显示方式,即在同一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的段码。这样同一时刻,6位LED中只有选通的那一位显示出字符,而其他三位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,在段选线上输出相应位要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔时间足够短,则可造成多位同时亮的假象,达到同时显示的目的。设定LED不同位显示的时间间隔也同样很重要,因为发光二极管从导通到发光有一定的延时导通时间,如果时间间隔太短的话,由于发光太弱,人眼根本就看不清楚。但是发光的时间也不能太长,因为LED显示有一定的临界闪烁频率,而且时间越长,占用的CPU时间也越多。本设计中设定的时间间隔为1ms。LCD显示:LCD是一种极低功耗显示器,目前,高分辨率的LCD点阵式显示器有显示灵活,显示图型字符美观等优点,在很多系统中应用非常广泛。但是LCD的显示控制比较复杂,所以在设计中没有选用,在这里就不具体的介绍了。第3章 软件设计3.1 系统主程序流程图为实现对IC卡的卡识别及读/写操作、数码动态显示及按键识别处理。本设计系统软件包括主程序、IC卡识别程,IC卡读/写操作子程序、各功能按键子程序、动态显示及按键检测子程序等。其中IC卡识别子程序用于自动识别插入卡的类型。确定相应的读/写操作时序。并确认该卡的有效性。系统的主程序框图开始初始化显示程序有卡插入?循环扫描键盘显示完成一次操作后返回 对IC卡读/写图3-1 系统主程序流程图 开机后,系统处于待机的状态,不断的查询P3.2脚的电平,当有卡插入读写器卡座的时候,P3.2脚变为高电平,这时,单片机检测到P3.2脚高电平信号时,说明有卡擦入,在判断插入的卡为有效卡后,就开始对IC卡进行操作。完成一次操作后返回。3.2 各部分程序设计3.2.1 LED显示器程序设计本设计用到的是动态显示,发送数据的方式是移位发送的。系统给R3单元附数字8,代表要发送8位数字,然后移位发送,发送完毕后,由COM口进行片选,最后显示出来,程序流程图如图3-2所示。R38移位发送R3=0? 片选 返 回图3-2 显示器程序流程图3.2.2 键盘程序设计键盘一共有09十个数字键,还有6个功能键分别是确认键,取消键,查询键,缴费键,存款键,退格键。确认子程序:确定缴费和存款操作(用B判断)并写入显示缓冲区和IC卡中。取消子程序:清除输入数据缓冲区,并返回INT0。查询子程序:查询IC卡中的数据,然后将IC卡中数据赋给显示缓冲区,并返回INT0。退格子程序:缓冲区数据向后移一位(采用寄存器RX实现)。下图3-3是键盘程序的流程图。确认子程序取消子程序查询子程序 缴费子程序 存款子程序 退格子程序确认键取消键 查询键缴费键 存款键退格键有按键读卡并显示图3-3 键盘程序流程图3.3 系统总体程序设计在单片机开始工作之后,它不停的检测P3.2口,P3.2口为高电平的时候说明没有卡插入,当卡插入后,P3.2口被置为低电平,这时首先检查插入的卡是否是有效的卡,如果是无效的卡程序返回上一级状态,插入的卡为有效卡时,首先读取卡中的信息,并在显示器上显示出来,用户这时就可以通过键盘和显示器对卡进行操作。 在有按键按下后系统将扫描具体是哪个按键,然后调用出此按键的子程序,对卡进行操作,想要对卡进行哪种操作,就按下与其相对应的功能键,当对IC卡进行缴费或存款的操作时,在输入想要缴费的数值或存款的数值后需要按下确认键进行确认此次操作,显示器显示出操作的结果,就完成了一次操作。然后程序将会到上一级,等待下一次对卡将要进行的操作,如果没有键按下,系统将继续扫描,显示器这时显示的是一开始就卡中读取的信息。下面是系统程序的流程图。开始初始化有插卡?卡有效?显示卡号并提示PIN读卡上信息并传送和显示有卡?有按键?取消子程序查询子程序退格子程序缴费子程序 存款子程序有按键?取消键查询键退格键缴费键存款键确认键确认子程序图3-4系统总体程序流程图步进电机式温度表的设计本方案设计出的步进电机式温度表其温度传感电路、显示系统均与方案一相同,

温馨提示

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

评论

0/150

提交评论