毕业论文
器进行接口。系统设计的功能键采用中段方式输入,整个工作流程通过不断的扫描按键的状态,判断是否有健按下,当有任意键按下时,即产生中段,CPU执行相应的中段子程序,若没有健按下时.继续扫描键盘的状态,直到有健按下,用键盘中断处理程序完成一切和用户之间的的信息交流。
显示电路选用的OCM]5XlO是160×80点阵的中文图文液晶图形显示器模块
[15]
。该模块的内部由于含有国标一级简体字库,使得汉字的显示异常方便;同时,
该模块与单片机的硬件接口除数据总线外,仅使用了RE创BUSY两根握手信号线,简化了与单片机的硬件接口电路设计。上述特点对软件、硬件资源均十分紧张的单片机系统来说是十分重要的。
由于诊断系统中将涉及大量的故障代码,传感器信息,执行起信息等一些数据信息,需要较大的存储空间。因此,系统扩展了一片大容量的8 Mb的FLASH存储器AT45DB081[16]。
3.3 硬件抗干扰设计
系统设计中对电源电路及IC器件周围配置适当的去耦电容滤波,系统中电源地线、MCU外围电路地线、信号地线采用单点接地的方法可靠接地,以减少不等位电势的干扰。
硬件滤波,此方法对串模干扰有很好的抑制作用,常用RC低通滤波器接在一些低频信号输入电路中,可大大削弱高频干扰信号。
印刷电路板设计时,数字电路与模拟电路隔离,数字的和模拟的仅在一点相连,有效地防止了数字电路对模信号的影响。为了防止电路模块问的相互干扰,在电路板的设计中采用金属机壳有效地屏蔽外界射频信号的干扰。
4 系统软件设计探讨
本系统的软件采用模块化设计方法,整个程序包括主程序模块、键盘扫描模块、显示模块、通信模块、故障码读取模块。软件设计流程图如4-1
19
毕业论文
开始 C8051F020单片机系统初始化 设置定时器工作方式及初值 设置串口通讯模式及初值 显示主菜单 扫描键盘 有功能键按下 Y 进入相应模块 N 读取故障代码 参数测量界面 读执行器信息 诊断结果查询 电控系统
图4-1 系统软件设计流程图
4.1系统主函数模块
整个软件有且仅有一个主函数,它是软件模块的核心,从诊断仪通电开始运行,负责调用各个子模块实现各种功能,主函数是始终在运行着的,只是从一个状态跳转到另一个状态,子模块调用完成了也会返回主函数。
主函数的主要工作流程是:通电运行之后,调用显示菜单子程序显示功能菜
20
毕业论文
单,并且高亮显示菜单第一项,然后等待有健按下,若按下的是“1”键或者是“确认”键,则调用子程序自动读取并且处理ECU 中的故障码,显示故障原因; 若按下的是“2”健则清除故障码;可以使用“上一行”、“下一行”键来选择菜单项,在显示故障原因的时候若超过一页,也可以通过“上一页”、“下一页”键来翻页,按“取消”健则返回上一级目录。
4.2 键盘扫描模块
本设计中键盘扫描采用的是定时扫描的方式,每100ms扫描一次键盘,若检测到有健按下则延时8ms再次扫描,若两次都检测到同一个按键,则检查是哪一个按键,从而根据不同的按键进行相应的操作。8ms去抖小程序保证了检测的准确性
[17]
。
4.3显示模块
显示模块包含了所有跟液晶显示有关的子程序,如初始化液晶屏,显示单个字符,显示字符串,显示菜单等等。初始化液晶屏包括了设置显示开关、选定左或右半屏、设置显示起始行等功能,每个功能都是通过向液晶屏写特定指令实现的,作用是是为字符显示做准备。显示单个字符的子程序需要四个入口参数,它们是字符类型、字符编号、显示起始行、起始列,字符类型包含了汉字和特殊字符两种,所占的点阵列数分别为16列和8列,行数都为16行;字符编号是指字符在字符库中的编号或者说索引,这个字符库是我自己根据实际需要编写的,此外还编写了字符的16 ×16点阵数据库,每个字符在这两个库中的编号是一致的,因此当我们要显示某个汉字时,可以在字符库中找出其编号,然后通过编号提取出点阵数据从而显示出汉字来;显示字符串的子程序则是通过自动修改字符的显示起始行和起始列,把它们作为参数来调用显示单个字符的子程序,从而实现字符的连续显示。显示菜单子程序调用了显示字符串子程序显示固定菜单[17]。
21
毕业论文
4.4 通信模块
通信模块在本设计中起着至关重要的作用,它实现了诊断仪和ECU之间的信息交互。此模块主要包括进入系统和读取故障码、清除故障码三个子程序。进入系统的流程是诊断仪按照通信协议,向ECU发送特定的电平信号,要求进入发动机系统,ECU接收到请求之后,与诊断仪进行几次关键字的交互发送,随后向诊断仪发送系统版本信息,诊断仪接收到这些信息,就表明已经成功进入系统,可以进行下一步操作。读取故障码程序的过程是:诊断仪向ECU发送Request命令要求读取故障码,ECU接到这个请求后首先取反送回,然后以Answer命令的格式开始发送故障码,故障码可以分多帧发送,诊断仪采用接收中断的方式接收故障码,每接收到一帧就存储到单片机的RAM中的指定区域,每帧的存储地址是递增的,从而可以实现故障码的连续存储。清除故障码子程序能够向ECU发送指定的Request命令,清除ECU中存储的故障码,从而避免故障的重复检测[17] 。
4.5 故障码处理模块
此模块的主要功能是显示故障原因。对于单片机RAM中的多组故障码(一组为两个字节的十六进制数,表示一个故障) ,显示故障码子程序能够查找每一组故障码在故障码库中对应的故障原因,然后调用字符串显示函数将原因显示在液晶屏上,从而一目了然地找出故障[17] [18]。
4.6 软件抗干扰设计
数字滤波。在软件设计时,考虑了数字滤波程序的设计,有效地排除了随机干扰。
设置冗余指令和软件陷阱。通过应用软件陷阱法和数据冗余法有效的抑制了由于外部干扰、震动或瞬间故障引起的系统瘫痪和程序跑飞。
软件看门狗。为防止程序运行进入死循环,而不能被软件陷阱捕获到,在系统软件设计时,设计了“软件看门狗”程序,有效地防止了死循环造成的系统瘫痪[17]
22
毕业论文
5故障诊断仪的故障诊断过程
5.1汽车故障诊断仪的故障整体诊断流程
汽车故障诊断仪的故障诊断整体流程图如图5-1所示。汽车故障诊断仪可以 单机进行诊断,也可以通过实现TCP/IP协议栈实现了以太网内设各互连或者通 过GPRS实现无线通信用来远程诊断。只要连上了网络以后就可以利用PC机中的 故障诊断专家系统实现智能诊断。这样扩展了诊断仪的整体功能,降低设备使用 的局限性。
开始故障诊断 用户用故障诊断仪自己解决故障 结束Y 问题解决? N 有局域网? N 有GPRS? N 电话教授或拖车 Y Y 远程诊断者利用汽车故障诊断仪读取数据来提示用户解决问题 利用故障诊断专家系统进行诊断 结束 远程诊断者利用故障诊断专家系统进行诊结束
图5-1 故障诊断流程图
23