单片机电子制作--电子式里程表_第1页
单片机电子制作--电子式里程表_第2页
单片机电子制作--电子式里程表_第3页
单片机电子制作--电子式里程表_第4页
单片机电子制作--电子式里程表_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

电子式里程表摘 要里程表广泛应用于各类机车,传统的机械式里程表虽然稳定可靠,但功能单一、易受磨损。随着电子技术的迅猛发展,电子式里程表得以广泛应用,现在很多轿车仪表已经使用电子车速里程表,本设计介绍一种基于单片机的智能电子里程表。该电子式里程表是一种数字式仪表,主要由车速表和里程表两部分组成,其传感器采用无接触测量的光电传感器。它不仅可显示车辆行驶的总里程,也可显示一段时间的阶段里程,还可显示车速,以及实现超速报警等功能,并具有较强的再开发能力。它的实现方式是,通过安装在汽车转轴上的测量盘,用光电式转速传感器检测转速的脉冲信息,在脉冲状态下,将转速的变化转换成光通量的变化,再通过光电转换元件将光通量的变化转换成电量的变化,接着通过频率测量电路将脉冲信号输入到单片机中,然后依据电量与转速的函数关系实现转速测量,再通过计算,从而得出里程、车速的信息,并由 LED 显示器显示出来。并且该电子式里程表累积的里程数字存储在非易失性的EEPROM 存储器内,在无电状态下数据也能保存。关键词:AT89S51单片机;里程表;光电传感器;LED显示器;存储器AbstractVehicle odometer is applied in each kind of motorcycle extensively, although the traditional machine type odometer stable and credible, but the function of it is single and be easily worn away. Along with the technical fast fiercely develop in electronics, the electronic vehicle can be applied extensively. Recently, a lot of car appearances have already used the electronic vehicle odometer, this graduation thesis introduce a kind of intelligence electronic vehicle odometer, which is based on a Single-Chip Microcomputer system. The electronics type vehicle odometer is a kind of numerical type appearance, which mainly constitute with two parts, that is vehicle speed meter and odometer, it adopts the light sensor that the sensor has no contact measure. It not only can show the total mileage that vehicle drive, but also can show the stage mileage of a period of time. Moreover, Its can show the car speed, and the realization exceed the speed limit to report and so on. It also has the ability of strongerly develop again. The way of this vehicle odometer carry out is as follows: through the installed measure plate in the automobile shaft, use the light sensor to measure the rotational speed information. Under the pulse appearance, it make the variety rotational speed change to the variety of the light flux, after that the variety of the light flux convert to electricity quantity. Then through the light electricity convert component, we can make the pulse signal input to the Single-Chip Microcomputer by the frequency measure circuit. Then in terms of the function relationship of electricity quantity and rotational speed, we can realize the measure of rotational speed, after calculate by the Single-Chip Microcompute, we can obtain the information of mileage and vehicle speed. Moreover, This mileage and vehicle speed information can be displayed by the LED monitor. And the mileage numeral of the electronics vehicle odometer accumulation is saving in EEPROM,which is not easily lost, the data also can keep under the no electric appearance.Keyword:AT89S51 Single-Chip Microcomputer;Odometer ;Light sensor;LED ;Memory目 录引言 11 总体设计22 系统设计可行性分析22.1 总体设计分析22.2 硬件模块32.3 软件模块63 硬件单元电路设计73.1 传感器的设计73.2 单片机与光电传感器的接口设计113.3 单片机与外部存储器的接口设计133.4 单片机与超速报警电路的接口设计133.5 单片机与键盘和7段显示器的接口设计 134 软件设计144.1 脉冲测量部分164.2 键盘输入部分174.3 数据处理部分184.4 存储器部分214.5 超速报警部分244.6 显示部分255 系统调试275.1 硬件单元电路调试275.2 软件程序调试295.3 整体调试326 系统使用说明327 系统功能的扩展338 结论33谢辞 35参考文献36附录37引言我国汽车工业走过了五十年的历程,与国际发达国家汽车工业相比,电子技术水平相对比较落后,提高国产汽车的电子技术水平,增加汽车电子装备的数量,促进汽车电子化是夺取未来汽车市场的关键,提高我国的汽车电子技术已势在必行。随着中国的复关,国外汽车零部件厂商也大举进入中国参与竞争。电子式仪表及新型传感器是各类车型汽车的首选配套产品,通用性好,市场前景广阔。目前国外汽车车速里程表已广泛采用电子式机芯结构,而国内汽车仪表一直是机械式车速里程表的天下,少数采用动圈式电子仪表, 通过大量市场调研,我们清楚地看到进入 20 世纪以来汽车工业迅速发展,而电子产品则是汽车提高技术含量的晴雨表。国外电子产品占整车成本的 30%,然而我国汽车行业起步较晚,技术十分落后,电子产品仅占整车成本的 5%。例如国外汽车早已装配电子式仪表,而我国汽车仍在应用传统的机械仪表,可靠性很差。目前汽车仪表控制电子化是一种发展趋势,由先进的传感器与显示装置构成的电子仪表已开始全面取代传统的机电式仪表,成为现代汽车的明显标志。 一般汽车的常规仪表有车速里程表、转速表、机油压力表、水温表、燃油表、充电表等。仪表板中最常用的是车速里程表,目前很多轿车仪表已经使用电子车速表,它通过变速器上的速度传感器获取信号,通过脉冲频率的变化使指针偏转或者显示数字。 随着汽车电子半导体技术的发展,多功能、高精度、高灵敏度、读数直观的电子数字显示及图像显示的仪表已不断应用于汽车。汽车仪表的功能已不仅仅是单纯的显示,而是通过对汽车各部件参数的监测和计算机处理相配套,从而达到控制汽车各种运行工况的目的。因而电子式里程表的广泛应用将会很大的提高中国的汽车电子技术水平。本作品正是顺应了汽车电子发展的趋势,利用安装在汽车转轴上的测量盘,由光电传感器输出采样脉冲,采取单片机控制,用一个六位 LED 数码管和一个四位 LED 数码管作为显示设备,从而得出里程、车速的信息。在里程信息的存储功能上,采用了新型轿车中广泛使用的串行 EEPROM 芯片 24C16。当电源正常供电时给电容器充电,电源掉电时,利用电容器电流将单片机中的数据写入 EEPROM 中。本作品廉价且功能较强,使用方便,实用价值较高,极容易得到推广。本作品经过实验,完全能达到设计要求,显示的车速、里程和原车机械里程表的显示值误差小于 1%,报警值非常准确。由于采用的芯片都是广泛使用的通用芯片,成本较低,制作元器件和印刷电路板成本不过七八十元,如果批量生产,成本更低。而且该电子式里程表体积小,功耗低,功能多,稳定可靠,性价比高,在很多领域都能得到广泛的应用,具有较高的经济价值。1 总体设计该电子式里程表以AT89S51单片机为核心,由系统输入、单片机部分和系统输出组成。其主要模块有报警装置、键盘输入、光电传感器、显示、单片机以及EEPROM存储器。其系统组成框图如图1.1所示。图1.1 系统组成框图单片机控制模块是该作品的重要组成部分。为了提高单片机的使用效率,以及可以实现在线编程,而采用了 AT89C51 单片机的升级产品 AT89S51 单片机。为保证数据的安全可靠保存并减少作品的成本,以及使系统的结构简单,在里程信息的存储功能上,没有采用常用的并行 EEPROM 存储器,而采用了新型轿车中广泛使用的串行 EEPROM芯片 24C16。当电源正常供电时给电容器充电,电源掉电时,利用电容器电流将单片机中的数据写入 EEPROM 中。超速报警部分本作品采用了简单的软件设计,由程序产生,铃声是为了达到提示的目的,因此,选用了一个简单的蜂鸣器,通过软件定时产生的嘀嘀声作为提示音,并且接一个红色的发光二极管,使报警效果更加理想。在车速里程显示方面,本作品采用了常用的 6 位共阳极 LED 显示器,通过按键的转换以及对单片机的软件编程,可在一个 6 位共阳极 LED 显示器中实现系统总里程和单班里程的显示,而车速则通过另一个 4 位的共阳极 LED 显示器实时显示。而本系统的车速脉冲采样部分,采用了非接触式的高灵敏度光电传感器,它有利于提高脉冲测量的精度,并提高了系统的可靠性,应用时将测量盘固定在车辆的转轴上,再通过光电传感器来测量。2 系统设计可行性分析2.1 总体设计分析根据电子式里程表的具体设计要求:(1)显示车辆行驶的总里程,用 6 位 LED 显示;(2)显示一段时间的阶段里程,用 6 位 LED 显示;(3)显示车速,用 4 位 LED 显示;(4)实现超速报警;本作品设计的电子式里程表拥有以下单元功能模块:(1)光电传感器的脉冲信号检测与转换;(2)超速报警功能;(3)里程信息存储功能;(4)车速和里程的 LED 显示功能;根据电子式里程表的一些基本要求,从而结合实际情况对具体的单元功能模块作软件或硬件上的不同分工,具体如下:在车辆转轴上安装的光电传感器的脉冲检测单元必须使用具体硬件电路来实现。键输入和键处理、脉冲记数处理等功能模块使用软件编程方式要比硬件电路简单得多,实现也很容易。超速报警、里程信息存储、车速和里程的 LED 显示都采用硬件电路和软件编程相结合的方式。其中超速报警采用一个蜂鸣器和一个红色发光二极管的报警方式,通过单片机的软件中断请求,实现蜂鸣器的嘀嘀声及发光二极管的闪烁显示。里程信息的存储采用单片机对存储器的读写方式,实现了数据信息的保存。车速和里程的 LED 显示通过单片机 P0 口和 P2 口,编程恰当地选择各个 7 段 LED 显示器的点亮时间和间隔时间,实现 LED 的动态实现。综上所述,本作品由以上所述的硬件电路和软件编程来完成。 下面就硬件以及软件实现的单元电路分别进行具体分析。2.2 硬件模块2.2.1光电传感器模块经过比较,本系统采用了透射式光电测速脉冲整形电路。每当安装在汽车转轴上的旋转测量盘上的长方孔与光电传感器上的透光孔重合,则光敏三极管受光而通过电流,使三极管饱和导通,故用于脉冲整形的施密特触发器CD4093 输出高电平,当圆盘转至透光孔被遮时,CD4093输出低电平。随着圆盘不停地转动, CD4093便输出脉冲序列。测出输出脉冲个数,结合圆盘每一周的孔数,使可算出转轴旋转的转速,进而可算出车辆的行驶速度。2.2.2单片机控制模块本系统使用了单片机 AT89S51,它是 AT89C51 的升级产品,能实现在线编程。单片机 AT89S51 是由 ATMEL 公司生产的 51 单片机。简单介绍如下:AT89S51 单片机是一个低电压,高性能 CMOS 8 位单片机,该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。其片内含有 4k bytes 的可反复擦写的只读程序存储器(PEROM)和 128 bytes 的随机存取数据存储器(RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,内置功能强大的微型计算机的 AT89S51 为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89S51 是一个低功耗高性能单片机,40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外部中断口,2 个 16 位可编程定时计数器,2 个全双工串行通信口,AT89S51 可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和 Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。其主要特性如下: 与MCS-51 兼容 4K字节可编程FLASH存储器 1000次擦写周期 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 支持在系统编程 ISP128*8 位内部 RAM 32 个可编程 I/O 口两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 具有双工 UART 串行通道 此单片机主要用于本系统的控制,包括响应中断、延时、定时、记数、判断、扫描键盘、超速报警、LED 数码管显示等等。2.2.3键盘模块单片机系统所用的键盘有编码键盘和编码键盘两种。编码键盘是只要按下它的某一个键,就能产生这个键的代码,与此同时还产生一个脉冲信号,以通知 CPU 接收键码。编码键盘使用方便,也不用编写太复杂的程序。但硬件电路复杂,比非编码简易键盘成本要高。非编码键盘也称简易键盘,它的按键是排列成行、列矩阵形式的。按键的作用只是简单地实现接点的接通或断开,因此必须有一套相应的程序与之配合,才能产生相应的键码,它基本上不需要附加什么硬件电路。但需要通过软件来解决按的识别、防抖动以及如何产生键码的问题。本系统的键盘输入部分,采用了 2 个功能键,用这 2 个键既可以选择 6 位 LED 显示器显示是单班里程还是总里程。为了节约成本,本作品选用简易键盘即两个按键开关来实现车速与里程的转换显示。2.2.4显示模块单片机所用的显示有 LED 和 LCD 两种,从设计的难度和成本造价来说 LCD 都要高于 LED。液晶显示器 LCD 的最大优点是电源电压低和功耗低,但液晶为非发光型物质,它是利用外界光源的被动式显示器件,环境越明亮显示越清晰,不能用于暗处。白天靠日光显示,夜间必须使用照明光源。而且它的工作温度范围不宽,低温条件下灵敏度较低,有时甚至不能正常工作。寿命与使用条件有关,强光下使用寿命会减小。此外,它的响应速度较低(在 10200ms 范围) ,这就限制了它在快速系统中的应用。LED 数码管是目前最常用的数字显示器,一个LED数码管可用来显示一位09十进制数和一个小数点,在小型专用微机系统和单板机等场合,它是主要的显示器件,在通用微机系统中,也常用来作为状态等显示。对于共阳极显示器,要点亮的显示段引脚需接低电平“0” 。本作品要显示的是总里程、单班里程以及车速,为数字显示。基于液晶显示器的成本以及在实际应用中的需要,因此,本作品选用了由LED组成的共阳极7段发光显示器,它有简单、经济、易于与单片机接口等优点。2.2.5存储模块此部分是整个系统的关键部分之一,它的工作情况直接决定了系统数据安全保存的可靠性。EEPROM是电可擦除可编程只读存储器。在平常情况下,EEPROM 与EPROM一样是只读的,需要写入时,在指定的引脚加上一个高电压即可写入或擦除,而且其擦除的速度极快!通常EEPROM芯片又分为串行EEPROM和并行EEPROM两种,串行EEPROM在读写时数据的输入输出是通过2线、 3线、4线或SPI总线等接口方式进行的,而并行EEPROM 的数据输入输出则是通过并行总线进行的。在汽车上串行EEPROM用得最多,防盗汽车音响解码,液晶里程表,安全气囊电脑等等单元模块都大量采用这种芯片。并行EEPROM用的相对少些。经过翻阅大量的文献资料,发现使用串行 EEPROM 芯片作为本系统的外部存储器,是比较常用的一种方法,而且在做电路板时布线简单,单片机编程时也稳定可靠,当失电时数据能得以安全的保存,因而采用了串行 EEPROM 芯片 24C16。本系统所用的24C16是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含2K8位存储空间,具有工作电压宽(2.55.5V) 、擦写次数多(大于10000次) 、写入速度快(小于10ms)等特点。24C16的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89S51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89S51试验开发板上和单片机的P1.4连接。第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P1.3连接。SDA和SCL都需要和正电源间各接一个10K的电阻上拉。第7脚需要接地。24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。2.3 软件模块通过上面分析,设计中决定选用S51系列单片机作为控制器,那么它的软件编写就要按照单片机语言:C语言或汇编语言来编写,这里我选用执行效率高的汇编语言编写。开发工具为keil c51,它的功能强大,支持 c语言和汇编语言的编写与调试,其软件模拟I/O口将会给软件调试带来极大的方便。2.3.1脉冲测量部分本单元需要两个I/O口,我选用了单片机的P1.5和P1.6。由于脉冲测量过程中,开始检测时脉冲宽度已小于机器周期T,因而会导致脉冲的丢失。为了避免脉冲的丢失,可用门电路实现记数开始与脉冲上升沿的同步控制。所以在控制时,首先由P1.6发一个清0负脉冲,其输出封锁与门G1 和G2 。接着由P1.5 发一个启动正脉冲,从而将门G2打开。之后,被测脉冲上升沿通过 G2送T1计数;同时Q2输出的高电平使INT0=1 ,定时器 0的门控GATE有效,启动T/C0开始定时。直到定时结束时,从P1.6发出一个负脉冲,将U2清零,从而封锁G2 ,使T/C1停止计数,至此一次频率采样过程结束。计数器1采用计数值满后自然清零再计数的方法。将T/C0设为高优先级,允许计数过程中定时中断。2.3.2键盘输入部分本单元采用了单片机的P1.1和P1.2口,通过外接两个按键开关,从而控制一个6位LED显示器的总里程和单班里程的显示。由于机械开关在状态转换时有信号的抖动,故在接入开关的同时,必须考虑防抖动的问题。防抖动的方法之一是软件延时去抖动。既在开关状态改变时,执行一个延时程序,待电平稳定后再读入开关状态信息。而采用的键盘分析程序应包括:是否有键按下以及识别哪个键按下。一旦找到某键,是否按下此键,即可将程序转到该键的功能程序段。2.3.3存储器部分本系统采用的是串行EEPROM芯片24C16,24C16的13脚分别为器件编址端A0、A1、A2(用于与系统中的同类器件编码) ,4 脚为电源地,5脚为I2C总线的数据线SDA,6脚为 I2C总线的时钟SCL ,7脚为测试输入端,在系统中接地,8脚为电源。当时钟线SCL为高电平时,数据线SDA 由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时, SDA线发生低电平到高电平的跳变为“结束”信号。程序中多处调用了DELAY子程序(仅两条NOP指令),这是为了满足I2C总线上数据传送速率的要求,只有当SDA数据线上的数据稳定下来之后才能进行读写 (即SCL线发出正脉冲) 。另外,在读最后一个数据字节时,置应答信号为“1”,表示读操作即将完成。2.3.4超速报警部分本单元采用一个蜂鸣器和一个红色发光二极管与单片机的P1.0口相接的报警实现方式,光电传感器检测汽车转轴的脉冲信号,并经过频率测量电路,输入到单片机的T1口,通过单片机的T1口记数,由单片机进行数据处理,转换成车速值。这实时的车速值与单片机设定的最大车速值相比较,当车速值大于最大车速值时,通过单片机的软件中断请求,以1秒钟为周期,实现蜂鸣器的嘀嘀声及发光二极管的闪烁显示。当车速值回落到最大车速值以下时,则通过单片机控制,关闭超速报警功能。2.3.5显示部分本单元采用一个6位共阳极LED显示器中实现系统总里程和单班里程的显示,而车速则通过另一个4位的共阳极LED显示器实时显示。其中LED显示器的段选码都由单片机的P0口连接控制,4位LED显示器的位选码由单片机的P2.6和P2.7口通过译码器74LS139控制,译码器74LS139对单片机的P2.6和P2.7口分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。74LS139是一个2-4译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。但74LS139电流驱动能力较小,为此,我使用了未级驱动PNP三极管C9015作为地址驱动。而6位LED显示器的位选码,则由单片机的P2.0至P2.5口控制。经过翻阅大量的技术资料,对具体要求实现的功能进行完整的系统分析,我认为我的电子式里程表的系统设计基本符合实际情况,可以完成设计任务所要求实现的基本功能。3 硬件单元电路设计3.1 传感器的设计汽车开动后,监测传感器对汽车转轴的转动进行采样,将脉冲采样信号输入到单片机管脚,单片机的定时计数器 T1 工作于计数器方式,累计脉冲个数,根据一段时间内的脉冲个数和车轮的大小,就可以由单片机计算出运行的速度和公里数,并驱动显示器进行显示。3.1.1 传感器的选择转速是指每分钟内旋转轴转动的圈数。机械式转速仪和电模拟式测速仪已经无法满足自动化程序日益提高的需要,它们只能测量精度不高的转速,而且输出不能直接供计算机使用,因此,非接触式的光电数字转速仪表就越来越广泛地得到应用。光电传感器是采用光电元件作为检测元件的传感器。它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源、光学通路和光电元件三部分组成。光电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样,因此在检测和控制领域内得到广泛应用。 由于采用光电传感器,可以实现非接触测量。光电式转速测量仪表比较容易作为高频脉冲频率传感器。例如,可在每转中发出几万脉冲,因此分辨率高,可测极低的转速,测量范围几乎可从零转开始。其次这种测量方法一般对转轴的附加载荷都很小,不会影响被测对象的正常旋转,光电式转速传感器工作在脉冲状态下,它是将转轴的转速变换成相应频率的脉冲,然后测出脉冲频率就可以测得转速值。这种测速方法具有传感器结构简单、可靠、测量精度高等优点。光电转速传感器的性能可归纳如下:(1)传感器采用无接触测量,不增加被测物旋转力矩,测量小里矩的旋转物能获得很高的精度。(2)光电传感器是利用光波作为媒介来实现转速测量的,抗电磁干扰能力强,如果采用调制光源或调制型发光器件,传感器还可具有抗外界杂光干扰能力。(3)传感器利用光电效应方便地将转速换成电量信号。故此类传感器测量范围宽、非接触检测距离远,随着激光技术的发展,使光电检测技术获得了新发展,能达到超远距离的测量。(4)光电传感器易受环境雾尘,粉尘、油尘、水雾及杂光的影响。 经过比较,由于光电传感器的结构简单、可靠、测量精度高等优点,因而本设计中选用了光电传感器。3.1.2 光电传感器的选择光电传感器的类型按照光电传感器中光电元件输出电信号的形式可以将光电传感器分为模拟式和脉冲式两大类。 (1)模拟式光电传感器 这种传感器中光电元件接受的光通量随被测量连续变化,因此,输出的光电流也是连续变化的,并与被测量呈确定的函数关系。 (2)脉冲式光电传感器 在这种传感器中,光电元件接受的光信号是断续变化的,因此光电元件处于开关工作状态,它输出的光电流通常是只有两种稳定状态的脉冲形式的信号,多用于光电计数和光电式转速测量等场合。通过两种形式的光电传感器比较,我选用了脉冲式光电传感器,因其多用于光电计数和光电式转速测量等场合。脉冲式光电转速传感器从光路系统看,有透射式和反射式两种。(1)透射式光电传感器这种仪表的测量盘装在被测转轴上,在它旁边装有不动的读数盘。测量盘沿外缘圆周刻有等距径向透明光缝,在读数盘上刻有同样间距的透光缝隙,当测量盘随被测轴一起转动时,每转过一个缝隙,由光源射来的光线就将照射到光敏元件上一次,这个光脉冲将引起光敏元件的输出电脉冲,在孔数一定时,该列电脉冲数就和转速成正比。电脉冲经测量电路整形放大后再送入频率计计数和显示,经核算或标定后,就可以得到一个便于测量计数的信号,此时被测转速为n= f/N式中 f测得的脉冲频率;N每转脉冲数,它等于圆周上之缝数。若在调制盘上开 60 个小孔,则可在 1 秒的记数值上直接读出转速大小。它可以测量 1r/min 的车速。如果开 600 个孔,则它的测量精度为 0.1r/min。(2)反射式光电传感器在转轴上不便于安装测量转盘时,还可以采用在测量转轴上加反射镜的方法。在可能时,为了提高分辨率,可以在转轴圆周方向等距贴数块反射镜。只有光线入射时,转轴每转一周就有数次光反射作用。再用简单光学系统将反射光投到光敏元件上,就可以输出相应的电脉冲。其它部分与透射式一样,通过测脉冲频率就可以求出转速。反射式转速表使用方便,它不给转轴带来附加载荷,可以在距被测物数十毫米外非接触地测量其转速,但要求转轴不能太细,便于贴反射镜,它适于测量的转速范围为 304.8 r/min。510通过比较,可知透射式光电传感器比反射式光电传感器的测量精度高,因而本设计中我采用了透射式光电传感器,并且采用了 60 条缝隙的测量盘。如图 3.1 所示,为透射式光电转速传感器的结构原理图。图 3.1 透射式光电转速传感器的结构原理测量盘上具有相同间距的缝隙,当测量盘转动时,转过一条缝隙,光线便产生一次明暗变化,使光敏元件感光一次,用这种结构可以大大增加转盘上的缝隙数,因此使每转的脉冲数相应地增加。3.1.3 光电传感器的脉冲整形电路施密特触发器在脉冲的产生和整形电路中应用很广。施密特触发器是一种能够把输入波形整形成为适合于数字电路需要的矩形脉冲的电路。而且由于具有滞回特性,所以抗干扰能力也很强。它可用于波形变换、脉冲整形以及脉冲幅度鉴别。下图 3.2为其应用:图 3.2 施密特触发器的应用根据以上施密特触发器的应用特性,因而用施密特触发器作为本系统的主要脉冲整形元件。图 3.3 是本系统所采用的透射式光电测速脉冲整形电路图。每当旋转圆盘上的长方孔与光电开关上的透光孔重合,则光敏三极管受光而通过电流,使三极管饱和导通,故施密特触发器 CD4093 输出高电平,当圆盘转至透光孔被遮时, CD4093 输出低电平。随着圆盘不停地转动,CD4093 便输出脉冲序列。测出输出脉冲个数,结合圆盘每一周的孔数,使可算出旋转的转速及转角。图中的 CD4093 用于脉冲整形。图 3.3 透射式光电测速脉冲整形电路图3.2 单片机与光电传感器的接口设计单片机测量频率有两种方法:测频法和测周期法。测量频率就是在单位定时时间里对被测信号脉冲进行计数;测量周期是在被测信号周期时间里对其一基准时钟脉冲进行计数。测周期法常用于脉冲频率较低的场合,所以在本系统中我采用了测频法。测量频率最简单的方法是将被测信号整形为脉冲,然后连接到单片机的定时器/记数器(T/C)的外部脉冲输入端,本系统中将被测信号脉冲 AT89S51 的 T1 端。可将AT89S51 的一个 T/C0 用作定时器,另一个 T/C1 用作计数器。在 T/C0 定时时间里,由 T/C1 对频率脉冲进行计数。T/C1 的计数值是单位定时时间里的脉冲个数。但应注意如下问题:( 1) 由 于 AT895S51 对 输 入 T/C 的 外 部 脉 冲 计 数 , 是 通 过 在 每 个 机 器 周 期 的 第10 个 时 钟 周 期 对 输 入 端 T1 采 样 , 故 需 要 两 个 机 器 周 期 ( 等 于 24 个 时 钟 周 期 ) 识 别一 个 脉 冲 的 负 跳 变 , 每 识 别 到 一 个 脉 冲 的 负 跳 变 将 计 数 器 加 1。 因 此 被 测 脉 冲 的 最 高频 率 必 须 小 于 。 此 外 , 还 要 求 被 测 频 率 脉 冲 的 宽 度 应 大 于 一 个 机 器 周 期/24fFoscmaxT。 本 系 统 所 采 用 的 时 钟 频 率 为 12 , 则 被 测 脉 冲 的 最 高 频 率 不 应 超 过 oscfH12 24 500 ; 其 宽 度 必 须 大 于 。maxH/Zk sfTosc/2(2)在定时记数时会出现如图 3.4 所示的丢失脉冲的情况。第一个脉冲的丢失,是由于开始检测时脉冲宽度已小于机器周期 T;第二个脉冲丢失是由于脉冲的负跳变在定时之处出现。定时时间里出现脉冲丢失,将引起测量精度降低。脉冲频率越低,这种误差越大。图 3.4 频率测量法的脉冲丢失为解决图 3.4 中第一个脉冲的丢失,可用门电路实现记数开始与脉冲上升沿的同步控制。图 3.5 是用 AT80S51 的 T/C0 作定时器, T/C1 作计数器,对频率测量的接口电路。图 3.5 带同步控制的频率测量接口控制时,首先由 P1.6 发一个清 0 负脉冲,使 U1、U2 两个 D 触发器复位,其输出封锁与门 G1 和 G2。接着由 P1.5 发一个启动正脉冲 ,其有效上升沿使 Q1=1,门 G1 被开放,使被测脉冲得以通过门 G1,使 Q2 置为 1,从而将门 G2 打开。之后,被测脉冲上升沿通过 G2 送 T1 计数;同时 Q2 输出的高电平使 INT0=1,定时器 0 的门控 GATE有效,启动 T/C0 开始定时。直到定时结束时,从 P1.6 发出一个负脉冲,将 U2 清零,从而封锁 G2,使 T/C1 停止计数,至此一次频率采样过程结束。在本系统中 ,为汽xf车转轴上安装的测量盘缝隙对应的频率,测量 T/C 定时时间为 1S,这样长时间的定时,先由 T/C0 定时 100ms,之后软件循环 10 次来完成(10100ms=1s) 。T/C 作频率脉冲的计数器,若单片机工作在计数方式 1,最大计数值为 65536。若 100ms 计数 65536 次,则脉冲的频率为 655.36kHz,这已经超过了 AT89S51 的计数器的最高频率 500 kHz,能够发挥出 T/C 的最大计数能力。T/C0 定时 100ms 的计数初值设为 3CB0H,并设定时器/计数器方式字 TMOD=59h。计数器 1 采用计数值满后自然清零再计数的方法。将T/C0 设为高优先级,允许计数过程中定时中断,即定时时间到就中止计数。3.3 单片机与外部存储器的接口设计本系统采用的是串行EEPROM芯片24C16,24C16的13脚分别为器件编址端A0、A1、A2(用于与系统中的同类器件编码) ,4 脚为电源地,5脚为I2C总线的数据线SDA,在系统中与单片机的P1.3口相接,6脚为I2C总线的时钟SCL,在系统中与单片机的P1.4口相接, 7脚为测试输入端,在系统中接地,8脚为电源。当时钟线SCL为高电平时,数据线SDA 由高电平跳变为低电平定义为“开始 ”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。在5脚SDA,6脚SCL 上分别接两个10K 的上拉电阻,并外接了一个瓷介电容,当电源正常供电时给电容器充电,电源掉电时,利用电容器电流将单片机中的数据写入EEPROM中。3.4 单片机与超速报警电路的接口设计本部分采用一个蜂鸣器和一个红色发光二极管与单片机的P1.0口相接的报警实现方式, 。若实时的车速值与单片机设定的最大车速值相比较,当车速值大于最大车速值时,通过单片机的软件中断请求,以1秒钟为周期,从而实现P1.0口高低电平的通断。当P1.0口为高电平时,输出正5V的电压,使红色发光二极管得以导通。而且电流由另一条通路使NPN三极管导通,射极输出电流驱动蜂鸣器工作。当P1.0为低电平时,则不能使红色发光二极管和NPN三极管导通,因而不能工作。正因为P1.0口高低电平的通断作用,实现蜂鸣器的嘀嘀声及发光二极管的闪烁显示,从而实现了系统超速报警的功能。其电路图如下图3.6所示:图3.6 超速报警电路图3.5 单片机与键盘和 7 段显示器的接口设计本系统的键盘输入部分,采用 2 个功能键,用这 2 个键,既可以选择显示是单班里程还是总里程。本系统采用的是常见的按钮开关。开关的接入方法是先将按钮开关的状态转变为逻辑电平,然后可直接接到单片机的某一条 I/O 线。但由于机械开关在状态转换时有信号的抖动,故在接入开关的同时,必须考虑防抖动的问题。其图 3.7如下所示:图 3.7 键盘输入电路图而七段LED显示器一般都是同时使用几个LED显示器,它有两种连用方法:一是每一位都用各自的8位输出口控制,在显示某一字符时,相应的段恒定发光或不发光,这种显示方法属于静态显示,它占用较多的I/O口线。二是动态显示,即将多个7段LED的段选端复接在一起,只用一个8位输出控制段选,段选同时加到各个7段LED显示器上,通过控制各个显示器公共阳极/阴极轮流接电/接地的方法,逐一轮流地启动各个LED。这种方法中,只要恰当地选择点亮时间和时间间隔,就会给人以为是各位LED同时显示的假象。这里使用了一个6位和一个4位动态显示的共阳极数码管显示器。其中LED显示器的段选码都由单片机的P0口连接控制,4位LED显示器的位选码由单片机的P2.6和P2.7口通过译码器74LS139控制,译码器74LS139对单片机的P2.6和P2.7口分时选通,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。74LS139是一个2-4译码器,它将单片机输出的地址信号译码后动态驱动相应的LED。但74LS139的电流驱动能力较小,为此,使用了未级驱动PNP三极管C9015作为地址驱动。而6位LED显示器的位选码,则由单片机的P2.0至P2.5口控制。再通过软件编程,从而控制各自的7节LED是否被点亮(由于本模块电路较大,就没有在这里列出,但可以参考本作品的完整电路原理图)。4 软件设计系统的主程序流程如图4.1所示。图4.1 系统主程序流程图 本系统的控制、运算和管理功能都要通过软件设计来完成,本系统采用模块式设计技术来进行软件设计,整个软件在功能上可分为初始化模块,键输入和键处理模块,脉冲计数处理模块,显示模块,段码表子程序块,存储模块。AT89S51单片机硬件中断人口地址为0013H,并且在这里按键输入、显示子程序和脉冲计数均用到了T/C(计时/计数器)中断功能。系统的初始化,除了分配一些功能寄存器、定义一些常量、设置AT89S51单片机的输人输出口的工作模式外,还要将24C16设置为串行传输模式,清除P0、P2、P1 3个口的寄存器以及接收号码计数器等一些功能寄存器及开中断等。下面,就各单元功能模块分别进行说明。4.1 脉冲测量部分由于脉冲测量过程中,开始检测时脉冲宽度已小于机器周期 T,因而会导致脉冲的丢失。为了避免脉冲的丢失,可用门电路实现记数开始与脉冲上升沿的同步控制。所以在控制时,首先由 P1.6 发一个清 0 负脉冲,其输出封锁与门 G1 和 G2。接着由 P1.5发一个启动正脉冲,从而将门 G2 打开。之后,被测脉冲上升沿通过 G2 送 T1 计数;同时 Q2 输出的高电平使 INT0=1,定时器 0 的门控 GATE 有效,启动 T/C0 开始定时。直到定时结束时,从 P1.6 发出一个负脉冲,将 U2 清零,从而封锁 G2,使 T/C1 停止计数,至此一次频率采样过程结束。计数器 1 采用计数值满后自然清零再计数的方法。将 T/C0 设为高优先级,允许计数过程中定时中断。电路图在图 3.5。下面是初始化和同步控制程序及中断服务程序。位地址 06H 作定时 1s 时间到标志位,R7 作软件计数器,计数 10 个 100ms。ORG 0000H;;AJMP MAIN;ORG 000BH; 定时器 T0 中断AJMP TIMER0;ORG 001BH; 定时器 T1 中断AJMP CONTER1;MAIN: CLR 06H; 清定时时间到标志位CLR P1.6; 产生清 0 用负脉冲NOPSETB P1.5MOV TMOD,#59H; MOV TH0,#3CH; T/C0 外部启动定时,T/C1 计数MOV TL0,#0B0H; MOV TH1,#00H; T/C1 方式 1 由 00H 开始计数 MOV TL1,#00H;MOV R7,#0AH; 计数 10 个 100msSETB TR0; T/C0 启动SETB TR1; T/C1 启动SETB PT0; 定时器 0 为高中断优先级SETB ET0; 开 T/C0 中断SETB ET1; 开 T/C1 中断SETB EA; CPU 开中断NOP;CLR P1.5;HE: JNB 06H,HE; 产生时 1s 时间到CLR P1.6; 产生负脉冲,封锁 G2 NOP; SETB P1.6;CLR TR0; 关闭定时器CLR TR1; 关闭定时器LCALL DATAP; 调数据处理子程序LCALL DIS; 调显示子程序SJMP MAINTIMER0: MOV TH0,#3CH; T/C0 中断服务程序MOV TL0,# 0B0H;DJNZ R7,RE;MOV R7,#0AH;SETB 06H; 1s 定时时间到RE:RETI; T/C0 中断返回CONTER1:RETI; T/C1 中断返回4.2 键盘输入部分这个部分是比较简单的一个部分,在硬件设计部分本人对简易键盘做了比较详细的介绍,这里就不再重复。键盘输入部分采用 2 个功能键,用这 2 个键既可以选择显示是单班里程还是总里程。由于机械开关在状态转换时有信号的抖动,故在接入开关的同时,必须考虑防抖动的问题。防抖动的方法之一是软件延时去抖动。既在开关状态改变时,执行一个延时程序,待电平稳定后再读入开关状态信息。键的去抖动方法由软件延时来解决。键盘分析 程序应包括:是否有键按下以及识别哪个键按下。一旦找到某键,是否按下此键,即可将程序转到该键的功能程序段。本系统所采用的键盘输入程序如下:KEY: MOV R0,#0FHKEY1: MOV P1,R0MOV A,P1 ;输入键盘信息ANL A,R0CLR CSUBB A,R0JZ KEY1 ;有键按下?ACALL D10MS ;有,去抖动MOV A,P1 ;读键信息JNB ACC.0,K0 ;为 0 键按下,转 K0 程

温馨提示

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

评论

0/150

提交评论