收藏 分销(赏)

51单片机速度里程表.doc

上传人:二*** 文档编号:4517353 上传时间:2024-09-26 格式:DOC 页数:51 大小:1.14MB 下载积分:5 金币
下载 相关 举报
51单片机速度里程表.doc_第1页
第1页 / 共51页
本文档共51页,全文阅读请下载到手机保存,查看更方便
资源描述
防 灾 科 技 学 院 毕 业 设 计 题  目 基于单片机的智能速度里程表的设计 学生姓名 吴建胜 学  号 105031305 系 别 防灾仪器系 专 业 电气工程及其自动化 班  级 开题时间 2013年11月29 日 答辩时间 2014年6月8日 指导教师 杨敬松 职 称 副教授 基于单片机的智能速度里程表的设计 作 者 吴建胜 指导教师 杨敬松 摘要 行车里程表广泛应用于各类机车,虽然以前的机械里程表稳定可靠,然而功能单一,且易受磨损。随着微电子技术的快速发展,数字行车里程表得到了广泛应用,现在不少轿车的仪表已经逐渐使用数字车速里程表。本文介绍一种基于单片机的智能里程表,该里程表是一种数字式仪表,不但可以显示机车的车速和行驶的总里程,而且可以显示阶段里程,还能显示温度和时间,同时具有超速报警功能。本设计采用A3144e霍尔传感器,通过单片机处理数据计算出机车的车速和里程,再由LCD显示器显示出来。 关键词:里程表;单片机;霍尔传感器;测速 Abstract: Odometer is widely applied in all kinds of motorcycle. The mechanical odometer is simple and reliable, but function of a single and vulnerable to wear. As the evolution of electronic technology, electronic speedometer widely used in the private car. This paper introduces a micro-controller based smart speedometer. The table is a digital meter, the total mileage of the vehicle speed and driving can not only real-time display can also display the speed alarm function. Using the Hall sensor A3144E, by micro-controller record and deal with this level the amount of change we can know the speed and mileage, these data will display by LCD. Keywords: speedometer; SCM; Hall sensor; tachometer 目 录 引言 1 1系统概述 1 1.1 系统原理介绍 1 1.2系统和按键的功能 3 1.3相关参数和应用范围 3 2硬件设计 4 2.1单片机及时钟复位电路 4 2.2测速传感器 6 2.3温度传感器DS18B20 ................................................................................................8 2.4存储器AT24C02 .........................................................................................................9 2.5键盘单元....................................................................................................................10 2.6显示单元....................................................................................................................11 2.7报警电路....................................................................................................................12 2.8时钟芯片DS1302......................................................................................................12 3软件设计 13 3.1键盘扫描程序 14 3.2数据处理程序 15 3.3报警程序 16 3.4显示程序 16 3.5存储模块程序 17 3.6温度模块程序 18 3.7时钟程序 18 4仿真过程介绍 19 4.1软件编写和电路设计 19 4.2系统调试 20 结束语 22 致谢 23 参考文献 24 附录 25 引言 随着现代交通工具的普及,人们使用不同手段外出的机会逐渐增多,像单车,摩托,轿车,公共交通等。然而这些各不相同的交通工具由于应用场合和自身结构设计的不同产生了各种各样的车速里程表,即使同一种类的交通工具也因测速方法和生产厂家的不同产生了不同型号的车速里程表。种类繁多的行车里程表,不仅减小了里程表的适用范围,降低了器件的通用性,更给这些交通工具的维护更换带来不小困难,而且由于量产规模的减小增加了单个里程表的价格。同时市场上销售的很多里程表功能单一,无法满足不同用户对单里程、总里程、超速报警等各种功能的需求。 在这种背景下,这次毕设希望通过设计出一种精度高、可靠性高、价格合适、功能丰富且应用范围广的里程表,以此改善这种局面。 在本毕设中,利用安装在汽车转轴上的磁铁,在汽车行驶中,磁铁随着车轮做圆周运动,从而使霍尔元件产生脉冲,这些脉冲可由单片机外中断INT0记录,再通过相关公式计算得到车速及里程信息,用一个LCD1602显示,从而得到车速和里程等信息。在里程信息的存储功能上,采用了广泛使用的串行EEPROM芯片AT24C02,每隔0.1KM将芯片内的里程信息更新一次,掉电情况下也不会丢失数据。 本作品可以安装于不同类型不同型号的交通工具上,通过按键调整周长值,就可以准确测量。通过按下相应按键,就可以实现显示单里程、总里程、温度时间、报警时速、车轮周长等功能。 通过测试,本作品完全实现了设计要求,LCD1602显示出来的各值同理论值相比误差在1%以内。由于结构简单,并采用低价芯片,因此成本较低。如果合理开发使用该里程表,是有一定价值的。 1. 系统概述 1.1系统原理介绍 系统主要有七部分组成:霍尔A3144E传感器、STC89C52RC单片机、独立键盘、LCD1602显示器、EEPROM芯片AT24C02、DS18B20温度传感器、DS1302时钟芯片。系统图如图1.1 独立按键 单 片 机 AT89C52RC LCD显示器 霍尔传感器 温度传感器 EEPROM 报警 时钟芯片 图1.1 系统结构图 霍尔A3144E 本毕设测量时速及里程的原理如(图1.2)。 P3.2 AT89C52RC 小磁铁 车轮 图1.2 测速原理图 如图1.2所示,装在轮上的圆形磁铁在随车轮而做圆周运动,霍尔传感器便处于一个强弱变化的磁场中,当磁铁远离霍尔元件时,A3144第三脚输出5V电平,当磁铁南极靠近A3144时,输出0V电平,由此产生脉冲。 由上述分析可知,在车轮转动一圈中,霍尔电路只能导通一次,即输出一个脉冲。如果知道车轮的周长,利用单片机记录若干时间内脉冲变化的次数,然后就可以算出汽车的车速和所行使的里程了,计算如下: 设汽车单位时间车轮转动圈数为num 汽车单位时间行驶路程为mile(m) 汽车车速为speed(km/h)  汽车车轮周长为cricle(m)  mile=num*cricle; (式1.1) speed=num*cricle*3600/1000; (式1.2) 用外中断INT0做为计数器,定时器T0定时一秒钟,当一秒钟到了以后,在相应程序中计算出车速送到LCD显示并将行驶0.1km的里程送到存储器中存储。 1.2系统和按键的功能 本设计可以实现如下功能: 1 实时显示车速。每两秒钟更新一次车速。 2显示自安装使用以来车辆行驶的总里程。为车辆的定期保养维护和零部件更换提供依据。 3显示自系统上电到任意时刻的单个路程的里程。用户可以了解单次行驶的里程。 4可以显示驾驶环境的温度。 5不同车速的报警。可以通过相关按钮调整报警速度值,范围是:0~250km/h。 6过相关按键改变车轮周长。调节范围是:0~250厘米 7显示时间,并且可以用按键调整时间值。 这些不同的显示值和各值的调整是通过七独立按键来实现的,现将其叙述如下: Key1: 复位按钮。 Key2:短按Key1键,单次里程清零;长按Key1键(约8秒),总里程清零。 Key3:按一次Key2键,显示速度和单次里程;按两下Key2键,显示时间和温度; 按三次Key2键,显示车轮周长和报警速度值;按四下Key2键,返回初始 状态,显示速度和总里程,再按以此循环。 Key4:显示时间和温度时,按一下Key3键,时间秒值可以调整,按两次Key3 键,时间分值可以调整,以此类推。当显示车轮周长和报警速度值,按一下 Key3键,可以调整车轮周长,按两下Key3键,可以调整报警速度值,再按 以此循环。 Key5:当时间、车轮周长和报警速度值可以调整时,按一次Key4键,相应值加一。 Key6: 当时间、车轮周长和报警速度值可以调整时,按一次Key5键,相应值减一。 Key7: 按一次背光亮,按两次循环显示,按三次背光灭,按四次停止循环显示,再按以此循环。 1.3相关参数和应用范围 各参数和测量范围如下: 总里程:0~999999km; 单里程:0~999km; 温度:-55~125摄氏度 车速:3.50~999.99km/h 本产品对于不同对象需使用不同的安装方法,实际应用时,还需要进一步的开发。考虑到本产品造价低,测速环境要求稍高,在健身设备、自行车、摩托车等震动小且系统结构简单的设备上安装较有前景。 2 硬件设计 2.1单片机及时钟复位电路 2.1.1STC89C52RC单片机介绍 在这次设计使用的单片机芯片是STC公司的STC89C52RC 40I-PDIP40 1022C1G222.90C型单片机,其中字符表示的意义如下: STC—前缀,表示STC公司的产品; 8—表示芯片是8051内核芯片; 9—表示内部含Flash EEPROM存储器; C—表示器件是COMS产品; 5—固定不变值; 2—表示能存储8KB的程序。 RC—STC单片机内部RAM为512B; 40—表示支持最高为40MHz的晶振; I—表示工业级产品,温度范围:-40~+85℃; PDIP—产品封装类型,双列直插,间距2.54mm; 1412—表示芯片生产日期是14年第12周; C1G22.9C—此标号为芯片制造或处理工艺。 其芯片引脚和实际图像如图2.1: 图2.1芯片引脚图 STC89C52RC引脚(见图2.2)主要分为三类: 1.电源和晶振引脚,如VCC、GND、XTAL1、XTAL2 2. 功能控制引脚,如RST、PSEN、ALE/PROG、EA/Vpp 3. I/O口,如P0、P1、P2、P3,四组八位I/O口 XTAL1(19脚)、XTAL2(18脚)外接晶振引脚。 RST(9脚)复位引脚。 PSEN(29脚)默认即可,不需要接器件或电源。 EA/Vpp(31脚)一般接2K上拉电阻即可。 P0,P1,P2,P3为I/O口,功能各有其别。 STC89C52RC功能强大,价格低廉,可靠耐用,拥有很强的保密功能。这为其应用于各行业设记带来方便。 图2.2 单片机引脚编号 2.1.2时钟复位电路 复位电路由两个电阻一个电容和一个点动按钮构成,当按下该按钮时,STC89C52RC第九脚RST变为高电平,只要高电平持续两个时钟周期以上,即可使单片机复位。构建复位电路时要合理选择电容电阻的大小。时钟电路由一个12MHz的晶振和两个33PF的电容组成,晶振要尽可能靠近18、19引脚,并且连接线要尽可能短,详细接法(见图2.3及2.4)。 图2.3复位电路 图2.4晶振电路 2.2测速传感器 2.2.1传感器的选择 1. 红外对管。红外对管需要分别安装在车轮两侧,当车轮转动时,辐条会阻挡红外对管的光路,接收管输出低电平,单片机根据此信号可计算里程、速度等。红外对管的优点是测量精度高,缺点是安装比较复杂和容易受外来光线、灰尘等的影响。 2. 开关型霍尔传感器。霍尔3144是利用霍尔效应把强弱交替的磁信号转换为电平脉冲信号的器件。把霍尔3144安装在靠近车轮的固定支架上,磁铁安装在随车轮转动的地方,当磁铁靠近3144时,霍尔第三脚输出0V电平,单片机通过相关公式算出里程、速度等各值。霍尔3144的优点是稳定可靠和安装简易,缺点不详。 3. 干簧管。干簧管相比霍尔元件来说是比较原始的,它利用磁铁的吸力使其闭合或断开。因此存在机械接触,检测频率不能过高,且容易损坏。干簧管的优点是安装简易,缺点是比较脆弱和不够稳定。 综合比较三种器件的性能和价格,本次设计选择价格适中、测量稳定且安装简易的霍尔传感器。 2.2.2霍尔3144原理 霍尔3144属于开关型传感器,1脚接5V电平即电源VCC端,2脚接0V电平即电源GND端,3脚接STC89C52RC单片机的P3^2口,此外第三脚还需接一个5K左右的上拉电阻。辨别霍尔管脚的方法是:把霍尔元件印有文字的一面面对自己,从左到右为1、2、3脚。霍尔3144工作电压为(4.5—18V),范围很宽,方便不同场合应用。输出的是TTL电平,不需要放大可以直接驱动单片机,而且可以检测高达1MHz频率。 霍尔3144传感器的内部结构和工作原理如(图2.5),由模块A电源稳压器,模块B电势触发装置,模块C差分放大器,模块D施密特触发器,模块E输出装置。 当磁铁南极靠近霍尔3144时,施加的磁场强度达到工作点,模块D施密特触发器输出高电平,三极管导通,模块E输出低电平,此时为开状态。反之霍尔3144为高电平5V。施密特触发器整形之后就变成方波脉冲输出。 图2.5霍尔3144E原理图 在本设计protues仿真中,用时钟激励源代替霍尔传感器,演示在不同车速情况下,里程表的车速测量、里程显示及报警情况。将激励源接到P3^2口,定时器T0记录一秒钟脉冲次数,从而计算车速及里程信息。(见图2.6) 图2.6模拟霍尔脉冲 2.3温度传感器DS18B20 DS18B20是数字式温度传感器,该器件有GND、DQ、VDD三个引脚。GND是信号地引脚,接0V电平,即电源GND引脚。DQ为数据输入和输出引脚,接STC89C52RC单片机P3^6口,外加5.1K左右上拉电阻 。VDD为电源5V引脚。DS18B20温度传感器只有一个数据接口,使用起来方便快捷,连接的线路也很简单,测量温度范围宽,从零下50度到125度的范围,测量误差很小,小于0.5℃,而且该器件体积很小,不会影响整个电路的体积。故用它来测温是很好的选择。 DS18B20引脚图及引脚功能介绍(如图2.7) 图2 .7 DS18B20引脚编号 序号 名称 引脚功能描述 1 GND 地信号 2 DQ 数据输入/输出引脚。 3 VDD 可选择的VDD引脚。接电源5V电平,电源VCC引脚 在本设计protues仿真中,与单片机的连接(如图2.8) 图2.8温度传感器接法 2.4存储器AT24C02 AT24C02是断电不丢失数据的串行EEPROM芯片,该芯片的存储容量为2KB(256*8Bit)。可以反复擦写十万次以上,芯片里的数据可保存100年。 AT24C02的引脚(如图2.9)功能简绍如下: A0~A2为可编程地址输入端,可在同一系统中接8块该芯片,芯片地址由A0~A2的值决定,即从000~111。 VSS为电源地引脚,接0V电平GND。 SDA串行数据输入/输出端。里程表系统中接STC89C52RC单片机P3^1口。 SCL串行时钟输入端。里程表系统中接STC89C52RC单片机P3^0口。 WP写保护端口。作用是保护硬件数据。该引脚接高电平表示只能对该芯片进行读操作而不能改变芯片里的数据,接低电平表示可以对该芯片进行读和写的操作。本系统需要对该芯片进行读和写的操作,因此在里程表系统中接0V电平GND。 VCC电源正端。接5V电平VCC引脚。 在里程表系统中,SDA和SCL两个引脚需要接一个5K左右的上拉电阻,以保证不会出现数据的错误读写。A0~A2和WP引脚直接接GND引脚,即该芯片在本系统中的地址为000,而且可以对该芯片进行读和写操作。 图2.9 AT24C02引脚图 在本设计protues仿真中,与单片机的连接(如图2.10) 图2.10存储器接法 2.5键盘单元 因为本系统中要调节的信息不多,故只设计了七个独立键盘。(见图2.11)单片机上电后各IO口为高电平,当键按下后,与按键相连的IO口电平被拉低。各键的功能如1.2中所述 图2.11按键电路 2.6显示单元 在本系统中所用的显示器为LCD1602,而非数码管。因为如果用几个数码管显示速度和里程等信息,并用其它方式得内容和单位,例如数码管显示35.26,并且指示速度的发光二极管亮,它表示当前的速度为35.26千米/小时;但是用LCD1602显示该信息的话,在一屏上可以同时显示出数字、内容和单位等,例如显示:Speed =35.26km/h,它表示当前的时速为35.26km。此外数码管所需供电电流比LCD1602大,这对使用电池提供电能的系统来说是很不利的,而由LCD1602显示器组成的显示单元具有显示内容多,人机界面友好、更省电,具有控制简单,使用单片机接口少等优点,因此本设计采用LCD1602液晶显示屏,能够实时的显示里程速度等信息。 其中LCD显示器的段选码都由单片机的P1口连接控制,与单片机的连接(如图 2.12)。 图2.12显示器接法 2.7报警电路 报警电路有有源蜂鸣器和LED灯构成,其中报警时速可通过按键调节,当时速大于报警值时,蜂鸣器长鸣,LED灯亮起。此外P2^7引脚需接一个2K上拉电阻,才能使单片机输出高电平时导通NPN三极管,电路(如图2.13)。 图2.13报警电路 2.8时钟芯片DS1302 DS1302是一种实时时钟芯片,引脚结构如图(2.14),与单片机连接(如图2.15)。VCC1引脚是备用电源正引脚,VCC2是主电源正引脚,当备用电源大于主电源0.2V时使用VCC1供电。X1和X2引脚外接32.678KHz晶振。 图2.14时钟芯片引脚图 图2.15 时钟芯片电路 3软件设计 系统的主程序流程(如图3.1) 本系统设计好硬件电路后,就需要设计系统程序了。程序按不同的功能可以分为六部分,分别是:显示程序、时钟程序、存储程序、温度程序、按键程序、数据处理程序。首先在主程序部分对报警接口进行初始化,使其上电后不会报警,再打开外中断、定时器溢出中断等并给定时器赋初始值,之后进入循环,分别循环扫描显示程序、按键程序、温度程序、时钟程序、里程计算程序、速度计算程序等等。系统程序的难点在于LCD1602读写字节程序,由于对延时时长要求很高,很容易出现不显示或不能正确显示。其次是速度计算程序,虽然计算公式符合理论,但总是不能正确显示出速度值,只有加中间变量和一定延时时间才能解决该问题。最后是总里程和单里程计算出的值要相一致,并且都要求很小的误差,该处程序容易忽略丢失小数位造成的误差。 Y 开始 初始化 数据处理 是否到两秒 是否超速 显示相关内容 二极管和蜂鸣器报警 N N Y 键盘扫描显示不同内容 图3.1系统流程图 3.1键盘扫描程序 键盘采用循环扫描的方式,放在主程序无限循环中,当有检测到有按键按下的时,就执行相关程序。在程序中设不同的标志位,使其显示不同的内容,相关按键可定义一个中间变量,用于记录按键按下的次数,之后再执行按下不同次数的程序,使按键尽可能少。该处程序用到了许多的if嵌套,对逻辑能力稍有要求。由于该处程序较繁杂,仿真时不能很好地体现出程序的功能。流程如(图3.2)所示。 开始 键1按下 显示车速 键2按下 显示总里程 显示单里程 键3按下 报警 显示温度 键4按下 报警取消 Y Y Y Y N N N N 图3.2按键流程图 按键一为复位按键,按下可使单片机复位。按键二为里程清零按钮,可对总里程和单次里程清零。按键三为显示选择按钮,可选择显示速度/总里程,速度/单里程,时间/温度,车轮周长/报警速度。按键四为数据修改选择按钮,可以选定需要修改的数值。按键五为数值修改时的加按钮。按键六为数值修改时的减按钮。按键七为LCD背光和循环显示切换按钮。这些按钮通过程序进行控制,相关程序见附录D。 3.2数据处理程序 利用单片机的外中断INT0记录霍尔脉冲量Number1~Number3,速度计算为每两秒计算一次速度值,公式为:Speed=L*Number1*1.8,每计算一次速度值就对Number1清零。单里程计算公式为:Cur_dis=Number2*L,单里程每计满100米就对Number2清零。总里程计算和单里程相差不大,只不过每计满100米就写入AT24C02,对EEPROM的数据进行更新。流程图如(图3.3)。 显示相关数据 LCD1602显示器 P3.2 处理数据,计算各值 STC89C52RC 霍尔脉冲 温度传感器 存储器 AT24C02 写入数据 读出数据 时钟芯片 图3.3数据处理流程 3.3报警程序 报警程序比较简单,在超速时,只要在软件中使与二极管相连的单片机IO口置零就可以了。当对与蜂鸣器相连的单片机IO口置高电平时,蜂鸣器发声。在软件设计用if语句实现了报警功能。 3.4显示程序 显示子程序的设计也比较重要了,之前的一些子程序的设计都是针对一些数据做处理,而这些经计算后得出的数据却需要通过显示子程序显示出来。本设计采用的是LCD1602液晶显示屏,能分2行显示32个字符,共16个引脚,带背光。LCD1602液晶模块内部的控制器共有11条控制指令,其读写操作、屏幕和光标的操作都是通过对这些指令来高低电平变化的控制来实现的。液晶显示模块执行指令的时间较长,不能很快更随指令的变化,因此在执行指令前需要延时一定的时间,以确保指令能被执行,或者对其进行忙状态检测,忙状态下的其他指令时不能执行的。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,首行第一个字符的地址是00H,第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。流程图如图3.3所示: 开始 调用写入字节函数 调用命令函数 调用写入数据函数 显示信息 结束 图3.3显示器流程 3.5存储模块程序 AT24C02存储器用来保存总里程数据、车轮周长和报警速度值,因此要处理好该芯片的字节读写问题。由于AT24C02的可擦写次数是有限的,所以不能太过频繁地对其进行擦写操作,要不然很可能会大大缩短里程表的使用寿命。本系统每100米更新一次总里程数据,虽然这样做可能会丢失部分里程值,但相比于每转一圈就擦写一次能大大提高里程表的使用寿命。存储程序含有开始读写操作和停止读写操作部分,因此能很好地控制什么时候进行读写操作。对于总里程、车轮周长和报警速度值只需要开机时读出来即可,而不需要反复地进行读操作,这样做也能提高里程表的使用寿命。 AT24C02一次只能传输8位数据,第九位为数据认可位,即应答位,并采用I2C通信模式,而对于总的传送多少数据是没有任何限制的。实际上对于该芯片的操作还是很容易实现的,只要时序正确,正常情况下都能正确传输数据。AT24C02的开始信号,应答信号和结束信号都是通过STC89C52RC单片机模拟I2C通信产生的。 AT24C02芯片的读写子程序见附录D。 3.6温度模块程序 本模块包含如下子程序: (1)读\写一个字节程序; (2)温度转换程序; (3)显示温度值程序; DS18B20是一种很常见的温度传感器,对于该器件的操作难点主要在于温度值的转换,要分别提取出温度值的百位、十位、个位和小数位。此外还有区分温度是正值还是负值。由于DS18B20存在一定的误差,所以还要适当地修正误差。 相关程序见附录D。 3.7时钟程序 DS1302是一种实时时钟芯片,可以计算时分秒、日月年和星期,这种芯片使用起来简单方便。该芯片单片机的控制程序分为读出时间值和按钮修改时间值,其中读出时间值较为简单,下面就修改时间的程序介绍一下。 修改DS1302芯片的时间值需要用到三个按键,第一个为选定修改选项按键,第二个为调整加键,第三个为调整减键。当显示屏显示时间温度时,按下不同次数的选定按钮可以使年月日星期时分秒的值处于可调整状态。该处程序主要用到了switch-case语句。Switch用于记录第一个按钮按下的次数,case为从第一次到第八次的情况。当按一下选定按钮时,为case1,此时可以调整秒值,按两次选定按钮时,为case2,此时分值可以调整,以此类推。按八下选定为case8,此时推出可调整状态,LCD1602显示屏停止闪烁。流程图如(图3.4),相关程序见附录D。 开始 变量初始化 使DS1302不具备写保护 复位端产生一个高电平 写1302地址 延时一段时间 向该地址写数据 地址增加 数据是否写完 复位端产生一个高电平 写1302地址 延时一段时间 将该地址的数据读出 地址增加 数据是否读完 Y Y N N 显示数据 图3.4时钟流程图 4仿真过程介绍 4.1软件编写和电路设计 本系统程序是用C语言编写的,编写及编译软件是keil C51,并用该软件生成的hex可执行文件,添加到仿真软件中进行仿真。keil软件的使用方法可分为如下三步: (1)项目工程的建立。具体操作是:新建一个工程,命名后选择一个符合自己选定的单片机型号,最后点确定即可。 (2) 源文件的建立并添加到项目中。具体操作是:新建一个源文件,命名并保存。然后在项目中点右键并将新建立的C源文件添加到项目中去。 (3)程序编写和编译。程序写完后点击编译所有文件选项,如有错误,需修改程序,直到无错误提示为止。最后在项目输出选项页面中,选择生成hex文件。重新编译便可生成hex可执行文件。 本系统仿真是用protues软件实现的。因为系统的功能丰富,故设计时不是完成全部的软硬件设计后再进行调试的。而是逐步添加的,这样做有效降低了调试时的困难,有利于找出错误。可以分为如下五个阶段: (1) 车速表。只显示车速,并通过调节脉冲发生器测试车速是否准确。 (2) 车速和单里程。可以显示车速,同时也能显示单次行驶的里程。 (3) 车速和总里程。在电路中加入掉电存储芯片,用来存储行驶的总里程。 (4) 加入报警功能。 (5) 加入温度显示模块。 (6) 加入时钟模块。 4.2系统调试 在系统调试阶段,发现如下几个问题: (1)车速表调试过程中,发现无论如何修改相关程序,LCD显示器都不能正确显示。起初以为是显示程序的问题,经过仔细分析仿真结果,发现显示器经常处于忙状态,这说明显示器相关指令延时时间不够。修改相关延时时间后,问题得到改善。 (2)加入总里程功能后,在调试时,发现系统掉电后无法保存总里程数据。反复调试后发现是存储器读写太快的原因造成的,程序如下: dist[0]=ReadByteByAddress(0);//读取存储器中里程的各位 dist[1]=ReadByteByAddress(1); dist[2]=ReadByteByAddress(2); dist[3]=ReadByteByAddress(3); 加入5ms的延时时间后,存储器就可以正常读写了,程序如下: dist[0]=ReadByteByAddress(0);//读取存储器中里程的各位 delay(5); dist[1]=ReadByteByAddress(1); delay(5); dist[2]=ReadByteByAddress(2); delay(5); dist[3]=ReadByteByAddress(3); delay(5); (3)报警功能调试时,发现蜂鸣器不能发声,仔细检查报警程序并确定没有问题后,开始检查硬件,发现蜂鸣器的工作电压、电阻及频率三个参数值没有正确设置。更改参数后,该问题得到解决。 (4)速度值调试时,起初LCD1602显示的速度值很小,显然是错误值。经过再三检查,发现计算速度的公式并没有错误,而是由于缺少中间变量,即现用中间变量计算出速度值,然后再赋给显示速度所用的值,在程序中用speed表示。此外计算出速度后需延时一定时间,否则高速时显示值跳变很厉害。 (5)测试按键是否能正确调整时间值时,发现当时间值处于可调整状态时,DS1302芯片没有停止走时,经查阅该芯片相关资料后发现这是由于在主程序中没有加入停止走时的相关指令的缘故,加入该指令后问题得到解决。 结束语 毕设的题目为基于单片机的智能里程表,按系统所能实现的功能来讲,称其为基于单片机的数字里程表更合适。本系统实现了用LCD1602显示速度、超速提示、总里程、单里程、时间、温度、车轮周长和报警速度值。这些不同值的显示通过相关按钮的切换来实现。除了显示功能,还有超速报警功能。另外可通过按钮修改车轮周长值,报警值和时间日期值等。虽然功能丰富,但谈不上智能。本系统的缺陷在于不能根据车辆所在位置自主设定报警值,也不能提示驾驶者不同路段的限速值和前方是否有违规拍摄等等。无奈作者水平有限且时间仓促,这些缺陷在本设计中是不能够解决的了。若以后还有机会接触里程表的相关设计,必要克服上述缺点,从而实现智能功能。 致谢 在毕设中,我学到了很多以往没有学习过的软硬件知识。毕业之前,通过毕设对几年前学习过的知识进行了梳理和复习,并且通过自主学习和请教师友也学到了很多课本上没有的知识。 其中最大的收获是编程逻辑能力得到了不小的提高。以前连一个简单的程序都很难独自完成,经过毕业设计的考验后,现在却能写出具有一定功能的程序,而且也喜欢上编程了。这次毕设也使我认识到电子电路知识的重要性。刚开始仿真时,由于忽略了上拉电阻,程序修改多次LCD显示器也不能正确显示。在设计报警电路时,因为没注意有源和无源蜂鸣器的区别,多次修改电路也不能实现报警功能。这让我我认识到,在以后的学习或工作中,不仅要知道各种电子元器件如何接,更要明白为什么这样接,同时也要注意细节。做到刨根问底,从头学习电路知识。 总而言之,通过这次毕设,我不仅学到了很多新的知识,更是认识到了自己的不足之处,也平静了浮躁之心,明确了将来的方向,尤其是培养了做事仔细认真,吃苦耐劳的精神和与之对应的工程意识。 最后,借此次机会感谢学校给了我一次独立完成一个工程设计的机会,使得在大学期间所学的专业知识有了一次应用和总结。同时非常感谢杨敬松老师的细心指导,她那认真负责的工作态度、严谨治学的风格,使我深受启发。杨老师不但在理论上给了我很多的指导,同时也给予了精神上的帮助,使我能够克服重重困难。在设计过程中遇到的种种错误和不足之处,杨老师都耐心地为我一一解答并且提出不少指导性的意见。杨老师也为我提供了很多有价值的资料,使我受益菲浅。最后还要感谢其他的师友,他们也给予了我各种帮助。 参考文献 [1]谭浩强.C程序设计[M].北京:清华大学出版社,2005.07. [2]华成英,童诗白.模拟电子技术基础[M].北京:高等教育出版社,1980.09. [3]蔡振江,刘志红.单片机原理及应用[M].北京:电子工业出版社,2011.08. [4]宋雪臣,单振清,郭永欣. 传感器与检测技术[M].北京:人民邮电出版社,2011.11. [5]徐寒,徐健健.智能速度里程表设计[J].电子测量技术,2005,16,(2):7-9. [6]佚名.智能速度里程表设计[J]. /20060311097.html,2006.03. [7]董春兰. 智能车速里程表的设计[J].,2006.07. [8]佚名.基于AT89C51单片机的转速测量系统设计[J]. ,2010.05. [9]赵建领,薛园园. 零基础学单片机C语言程序设计[M].北京:机械工业出版社,2009.04. [10]宋宥文.霍尔传感器测速原理[J]. /483045.html,2012.01. [11]佚名.自行车测速仪[J] [12]张秀关.单片机与计算机串口通信实践[M].北京:电子工业出版社,2013.01. 附录A系统原理图 附录B PCB图 附录C实物图 附录D源程序 #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define BUSY 0x80 //常量定义 #define DATAPORT P1 //LCD数据接口 #define yh 0x80 //LCD第一行的初始位置 #define e
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服