基于AT89C51单片机的汽车数字仪表设计(6)

2019-06-05 14:19

4.7uFR610KS1AN R710KC715pFU9321VCCDS18B20┊ ┊ ┊ ┊ P3.3C815pF1R84.7k 长 春 大 学 汽车数字仪表装置的设计 Y212M891011121314151617181920P1.7/SCKP0.6RESTP0.7P3.0/RXDEA/VPPP3.1/TXDALE/PROGP3.2/INT0PSENP3.3/INT1P2.7P3.4//T0P2.6P3.5/T1P2.5P3.6/WRP2.4P3.7/RDP2.3XTA L2P2.2XTA L1P2.1GNDP2.0333231302928272625242322211111122AT89C51VCCU11LM3171VinVout3C12100uFR1110KGNDJ112V21C9100uFC10100pF┊ ┊ ┊ ┊ C13100pF电源2R910KR1010KC11100pFD1LEDTitleSizeBN图 3-12 电源电路硬件电路 2345Date:File:9-C┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 34 页 第 25 页

┊ ┊ ┊ ┊ ┊ ┊ ┊

本章节在上一章介绍硬件基础上设计了汽车数字仪表系统的软件。这一章主要介

┊ 绍了程序的整体构架以及主程序、时间调度程序的流程图、车速计算程序流程图等。

长 春 大 学 汽车数字仪表装置的设计

第4章 软件设计

4.1 开发语言简介

在开发一个单片机应用系统时,系统程序的编写效率在很大程度上决定了目标系

┊ 统的研制成效。早期在研制单片机应用系统时,大多以汇编语言作为软件工具。但由

┊ 于汇编语言不是一种结构化语言,汇编语言程序较难编写和调试,程序本身的编写效┊ 率较低。随着单片机硬件性能的提高,其工作速度越来越快。因此在编写单片机应用┊ 系统程序时,更着重于程序本身的编写效率。为了适应这种要求,现在的单片机开发┊ 系统,除了配备有汇编语言软件之外,很多还配备了高级语言软件C51语言。 装 4.2 汽车数字仪表系统主控程序结构 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 34 页 第 26 页

主程序包括两部分,一部分为初始化段,另一部分为循环主体段。在主程序循环体中,并不是直接执行程序,而是去调用一个个任务模块。

每个任务都是一个子函数,这些任务的调度机制为轮循机制。即:子函数功能的执行与否取决于其条件标志是否满足。比如:当某个子函数被主程序调用时,会先判断其执行条件是否成立(标志位是否有效),如果有效就执行实际功能语句,否则不执行任何动作直接返回。为了避免各个任务为了抢占系统时钟资源,造成时间冲突,采取以下一些措施:

(1)根据任务的轻重缓急分别予以不同的时间调度,比如LCD显示屏刷新处理只需要500ms调用一次即可;实用性较高的任务如里程更新刷新则每循环一次都要调用一次。

(2)对于实时性要求更高的任务,采用这种主程序轮循方式往往还是显示的不够及时。那么就干脆放在中断函数中去执行。不过,为了不影响后台程序执行,中断程序必须简练,能不再中断中做的事情就不要在中断程序中做。对于实时性不是很强的功能,可以先在中断中设置标志,然后让后台程序根据标志再去执行具体功能。

系统主程序流程图如下,见图4-1:

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊

图4-1 系统主程序流程图

长 春 大 学 汽车数字仪表装置的设计

开始初始化数据采集子程序数据处理子程序里程计算显示及储存子程序4.3 车速计算程序流程图

在车速处理子程序中,除了在计算目标步数时调用了线性差值算法程序外,还调

┊ 用了滤波(包括递推平均滤波和一阶滤波)算法程序,用来对脉宽和目标步数进行滤┊ 波。 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 34 页 第 27 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 34 页 第 28 页

本系统对DSl8B20进行的操作主要包括两个子过程:(1)读取DSl8820的序列号。主机首先发一复位脉冲。等收到返同的存在脉冲后。发出搜索器件的序列号命令,读取DSl8B20的序列号;(2)启动DSl8B20作温度转换并读取温度值:主机在收到返同的存在脉冲后,发出跳过器件的序列号命令。跟着发出温度转换命令。再次复位并收到返回的存在脉冲后,发送DSl8B20的序列号,读出数据。

收到新的速度脉冲标志=0根据脉宽计算车速并限幅N根据车速求车速步进电机新的步数对车速步进电机目标步数进行滤波RET收到新的车速脉冲?Y计算脉宽并限幅脉宽=本次捕获值-上次捕获值长 春 大 学 汽车数字仪表装置的设计

车速处理(每10ms调用本函数一次)

图4-2 车速计算程序流程图

4.4 温度计算程序流程图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊

长 春 大 学 汽车数字仪表装置的设计

开始初始化启动 DS18B20读温度计算温度LCD 显示图4-3 温度计算程序流程图

4.5 里程中断计算

里程表的速比表示的是:输人与输出速度之比,里程表转轴(软轴)在汽车行驶l

┊ 公里时所转过的转数,这种里程表转轴每转l圈,霍尔传感器将感应发出8个脉冲,┊ 现在以速比为l:624的车型为例:汽车行驶l公里,则霍尔传感器发出的脉冲数共为┊ 8×624=4992个,或者说,每个脉冲代表了1/4992公里的里程。霍尔传感器将这些┊ 脉冲信号当作外部中断源输入给单片机.使每个脉冲产生1个中断,并通过中断服务订 程序对每个脉冲进行计数。当计满4992时,表明汽车行驶了1公里,然后再给累计┊ 单元加l,并存人EEPROM单元,最后通过刷新LCD液晶显示器,即可实现里程计┊ 数功能,本设计选用边沿触发方式。即采用负跳变引起中断。 ┊

软件实现:控制模块在关闭脉冲中断之后,当脉冲数达到1公里所需数目后修改

┊ 里程记数单元并关中断、返回。 ┊ 4.6 显示流程图 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 34 页 第 29 页

程序中每10ms执行一次显示处理子程序,在该程序中先查询“显示更新使能标志”。如果该标志为‘0’,则说明不需要更行显示,直接退出子程序;如果该标志为‘1’时,则先对显缓区进行刷新,再将刷新后的显缓区内容复制到LCD模块的专用RAM区中去。这个“显示更新使能标志”是由其他子程序根据实际情况进行设置的。


基于AT89C51单片机的汽车数字仪表设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2002工作计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: