基于CAN总线的汽车仪表系统分析与设计说明书.doc
《基于CAN总线的汽车仪表系统分析与设计说明书.doc》由会员分享,可在线阅读,更多相关《基于CAN总线的汽车仪表系统分析与设计说明书.doc(37页珍藏版)》请在装配图网上搜索。
目 录摘 要IIIAbstractIV1 绪 论11.1论文研究背景和意义11.2汽车仪表在国内外的研究现状及发展趋势11.3本论文研究的主要工作内容22 CAN总线技术32.1 CAN 总线技术简介32.2 CAN总线技术规范32.3 本章小结53 汽车仪表系统的硬件设计63.1 新型汽车仪表系统总体结构设计63.2 汽车仪表系统主要的硬件模块选型73.3频率信号的处理和模拟信号的处理83.4液晶LCD显示驱动电路113.5步进电机驱动模块113.6 E2PROM存储133.7 CAN智能节点硬件电路的设计143.8 供电电源的设计153.9 系统的最小电路164 汽车仪表系统软件设计174.1 软件设计的总体思想174.2 仪表系统各个子模块系统的设计195 总结25参考文献26附 录27致 谢3233基于CAN总线的汽车仪表系统分析与设计摘 要本文设计了一款基于CAN总线的汽车仪表系统,该系统能够克服传统仪表系统的不易布线、体积大、成本高等问题。本文设计的汽车仪表系统主要工作有对CAN总线技术的原理、特点、技术规范等进行分析;对汽车仪表系统进行硬件设计,主要包括总体结构设计、主要硬件模块选型、传感器信号处理、LCD显示驱动电路、CAN智能节点硬件电路的设计、电源模块、存储模块、步进电机驱动模块的设计;在硬件设计的基础上进行软件设计,采用模块化的方法对各个模块进行程序编写和绘制流程图等工作。关键词:汽车仪表;CAN总线;单片机;步进电机Analysis and Design of Automobile Instrument System Based on CAN BusAbstractThis article has designed a car instrument system based on CAN bus, this system can overcome the problem that the traditional instrument system is not easy to wiring, bulky, high cost. The main work of the automotive instrument system designed in this paper is to analyze the principle, characteristics and technical specifications of the CAN bus technology; The hardware design of the automotive instrument system, including the overall structural design, the main hardware module selection, sensor signal processing, LCD display Driver circuit, CAN intelligent node hardware circuit design, power supply module, memory module, stepper motor driver module design;Software design based on hardware design, using modular methods for program preparation and drawing flowcharts for each module.Key words: Automotive Instrumentation ;CAN bus ;MCU ;Stepper motor1 绪 论1.1论文研究背景和意义在当代生活中,汽车不仅是一种便捷的交通工具,而且还推动经济以及科学技术等领域的快速发展。随着时代的快速发展,人们对汽车不断提出新的需求。人们希望汽车更加舒适、节能、环保。为了满足人们的需求,汽车逐步实现机械与电子一体化。总言而之,汽车已经从传统的机械产品转变成现代的机械与电子相结合的高新技术产品1。汽车仪表作为驾驶员与汽车进行信息交互的界面,在现代汽车中扮演的角色越来越重要。与此同时,仪表在汽车的安全性和经济性方面也扮演着重要的角色。传统的仪表系统有布线复杂、传输速率慢、精确度低、体积大等劣势。而基于CAN总线的汽车仪表系统具有通讯速率高、传输距离远、错误检测能力高等特性。同时,运用CAN总线能够设计出结构简单、体积小、稳定性强、低消耗、灵敏度高的新型仪表系统。1.2汽车仪表在国内外的研究现状及发展趋势在现代汽车中汽车仪表不仅能显示里程、车速、转速、油量等信息,而且能够显示一些多元化的汽车实时路况信息、报警提示等非常重要的信息。因此汽车仪表是汽车中一个很重要的组成部件。同时,也对汽车行业的变革与发展起着不可替代的作用2。汽车仪表最早出现于本世纪初,在最早的时候主要实现的功能表有里程表、车速表、发动机水温表等等。这类传统汽车仪表通过指针和刻度给驾驶员传递数值信息,并且这类仪表都是机械式和电气机械式结构。然而,这类仪表存在显示信息少、精确度低、界面单一等缺点。这就促使汽车行业开发功能多样性、精确度高、外观人性化的汽车仪表。由此电子式仪表就问世了。电子式仪表主要经历了电子管时代、晶体管时代、集成电路时代、微控制器MCU时代、网络信息技术化时代。从整个过程看,汽车仪表正朝着网络信息化的方向快速发展3。迄今为止,一些发达国家,例如德国、美国、日本在汽车仪表技术方面的研究处于领先地位。这些国家引领汽车仪表技术朝着网络化、数字化、智能化的方向发展。目前,由这些国家设计和生产出来的汽车仪表已具有显示大量复杂的数据信息的功能并且已推广和应用到世界各地。在此发展过程中,CAN总线技术得到广泛应用,例如宝马、奔驰、福特都已应用CAN总线技术。CAN总线技术的应用使得汽车仪表系统朝着简单化、轻便化、小型化的方向发展。与此同时,汽车仪表技术还融合了国外的光电技术。除此之外,国外不少国家把液晶显示应用到汽车仪表中,这样可以让汽车仪表显示界面更多样性、更直观性。综上所述,国外汽车仪表技术发展成熟,也促使汽车仪表不断的往智能化、网络化、数字化的方向快速发展4。我国的汽车仪表技术起步与发达国家相比较晚,所以国内的仪表技术水平略低于一些发达国家。同时,这些年中国的制造业和科技水平快速发展,但是相比较于发达国家还是有所差距,这也是中国汽车仪表技术发展受限的一个重要原因。但是目前随着外商独资企业和中外合资企业的发展,这些企业引进国外的工艺技术和一系列汽车电子设备,使得我国的汽车仪表朝着功能更多样、精确度更高等方面发展。但是在顶尖技术行列,我国与国外还是有一定的差距。所以仍需不断努力提高汽车仪表技术及其相关技术的发展水平。虽然我国的仪表技术水平相对落后,但是发展前景相当乐观,因为国家对仪表技术的发展给予相当大的重视,并且在汽车行业的每个发展阶段都制定了发展战略和发展目标。由于我国的CAN总线技术处于刚起步状态,正处于测验阶段,所以还未得普及只是小规模应用。因此我国应不断跟随国际仪表技术发展,不断引入国外高新技术,促使我国汽车仪表技术不断向前发展。1.3本论文研究的主要工作内容本文简单介绍了国内外汽车仪表系统的发展状况,对CAN总线系统的原理进行分析。对汽车主要仪表信息如发动机转速,机油压力,水温,车速等进行总线的传输与驱动。设计汽车仪表系统的结构图,并进行相关元件的选取。对系统的每一个模块进行分析设计。对单片机最小系统,CAN智能节点,传感器信号处理电路,显示电路进行设计,绘制软件流程图,最终完成了对总线型仪表系统的设计。2 CAN总线技术2.1 CAN 总线技术简介2.1.1 CAN总线的概念随着时代的不断进步人们对汽车的追求日益提高,对于汽车的性能的需求也日益增多,因此车内的电子设备也日益增多,并且各个电子设备间的线数目也不断增加。汽车内设备的连接和通讯也变得日益复杂,因此为了解决这些通讯的复杂性,保证电子设备的高速运转,CAN总线技术应运而生。早在上个世纪,CAN总线就被国际认可为标准总线,且其具有较强抗干扰性和检测错误的功能,CAN总线的传输介质一般有双绞线和光导纤维。即使在恶劣的环境下也能工作,数据的传输率高达1Mbps,通讯距离可达10km。控制器局部网是为汽车应用而开发的多主机局部网络,主要用于汽车的检测和控制。CAN总线的出现对于机械设备的线路布局有了极大的帮助。简单的连接方式和可靠的稳定性、安全性使其广泛应用于各个领域,尤其是汽车行业。2.1.2 CAN总线的特点相比于其他总线CAN总线传输速率快、安全可靠、具有较强的实时性。它的特点有:(1)工作灵活,任何一个节点都可能成为主节点向其他节点发送命令。(2)CAN总线具有可靠的错误检测和出错处理功能。(3)CAN总线技术具有无破坏性的基于优先级的逐位仲裁技术,自动识别优先级高低来选择发送命令。(4)CAN总线技术可以使用报文滤波来实现点对点、一点对多点、全局广播等几种数据传播方式。(5)CAN总线所发出的数据在整个网络中具有一致性,可以同时被所有节点收到,也可以不让任何一个节点收到。(6)当在传送过程中发生错误时,CAN总线节点会自动关闭,不会影响其他总线节点的运转。(7)远程数据请求。(8)当有节点脱离总线时,该节点的脱离不影响总线的正常工作。2.2 CAN总线技术规范2.2.1 CAN总线的分层结构CAN总线模型包括物理层、数据链路层与应用层三层协议。CAN的规范定义了模型的最下面两层物理层和数据链路层。应用层的协议可以由用户定义。如图2.1则是CAN总线层次参考模型结构框图。图2.1 CAN总线层次参考模型结构框图数据链路层可以划分为逻辑链路控制子层和媒体访问控制子层。其中媒体访问控制子层作为CAN协议标准的核心层,拥有验收滤波、过载通知、恢复管理、错误检测等功能。而物理层主要是规定通信介质的物理特性,并且物理层可以为电气装备之间的数据信息传输提供既可靠又稳定的工作环境。2.2.2 CAN总线的报文格式在CAN总线上传送的数据信息称为报文。任何与总线相连的单元在CAN总线空余的时候都可以向总线发送新的报文。在CAN总线上传送的报文一般有以下几个帧类型。:(1)数据帧:发送器向接收器传输数据信息。即发送节点向其他节点发送数据信息。(2)远程帧:接收器向具有相同标识符信息的发送器请求发送数据。(3)错误帧:当检测有错误的消息帧时,向网络中其他节点发送错误帧。(4)过载帧:延迟之后消息帧的发送。下面将展开具体介绍几种帧类型1、数据帧数据帧由帧起始、仲裁场、控制场、数据场、CRC(循环冗余码)场、应答场、帧结尾组成。如图2.2为数据帧结构图:图2.2 数据帧结构图2、远程帧远程帧包括标准远程帧和扩展远程帧。远程帧与数据帧相比,没有数据域,以及RTR位是隐形。3、错误帧错误帧由两个不同的字段组成,即由不同站提供的错误标记的叠加以及错误定义。错误标志分为主动错误标志和被动错误标志。其中主动错误标志由6个连续的“显性”位组成,而被动错误标志由6个连续的“隐性”位组成。除了被其他节点的“显性”位重写的情况。4、过载帧过载帧用于在第一个和随后的数据帧或远程帧之间提供额外的延迟。过载标志由六个“显性”位组成。过载标识符由八个“隐性”位组成。2.3 本章小结本章内容重点讲了CAN总线的特点,以及CAN总线技术的相关介绍。阐述了CAN总线的基本概念,重点介绍了它的技术规范和协议,以及它的报文传送和检验错误的能力。3 汽车仪表系统的硬件设计为了达到驾驶员安全经济行驶汽车的目的,驾驶员必须准确及时掌握汽车在前进过程中的一系列数据信息。而汽车仪表作为驾驶员与汽车进行信息互换的窗口,变得及其重要。目前,科学技术迅猛发展,人们生活水平不断提高,所以对汽车仪表的功能、反应速度、精确度等提出了更高的要求。传统的机械式仪表显然已经不符合人们的需求。因此,一种基于CAN总线的新型汽车仪表系统应运而生。该种仪表系统能够解决传统仪表的布线繁琐、传输效率低、可靠性低等缺点。该仪表系统引入CAN总线利用CAN总线优越的通信技术并选取微控制器芯片作为仪表的核心部件,进行新型汽车仪表系统中的结构设计。此结构设计出来的新型汽车仪表系统具有线路简约、占用空间小、精准度高、速率快以及损耗小等优点。并且能够更直观、清晰、稳定的显示汽车的一系列数据信息。3.1 新型汽车仪表系统总体结构设计本文所设计的系统主要采集汽车的发动机转速、车速、水温、机油压力、里程数。其中脉冲信号包括车速和转速,模拟信号包括水温和机油压力。脉冲信号首先经过传感器信号处理和光电隔离后再传送给单片机。其中光电隔离的作用是提高总线抗干扰的能力。模拟信号首先经过传感器信号前置处理电路后再传送到单片机的A/D转换器。单片机通过算法计算测量结果,最终由步进电机驱动显示测量结果。行驶里程数由单片机计算再送到显示模块。总里程数通过存储模块获得。采集的数据由CAN总线接口发送至CAN总线上,并且接收其它节点发送的数据信息。如图3.1为系统硬件总体结构图:图3.1 系统硬件总结构图3.2 汽车仪表系统主要的硬件模块选型根据本文所要设计的汽车仪表系统所要实现的功能,选择MCU微控制器、CAN收发器、存储器、步进电机、电源等主要元器件进行硬件部分的设计并绘制相关电路图。3.2.1微控制器MCU的选型微控制器作为汽车仪表系统的核心部件,它的选型及其重要。根据本文设计的汽车仪表系统我们选用的微控制器的型号是P87C591。通常情况下,如果选用独立的CAN控制器的话,就必须要设计CAN控制器与微控制器之间的连接。那样的话系统硬件电路无疑会更复杂。而选用集成CAN控制器微控制器不仅可以简化硬件电路,而且可以增强系统的可靠性和节省成本。P87C591是一款带CAN控制器的新型微控制器,是一款源自80C51系列的新型单片机。 P87C591是一款8位微控制器,在实际应用中,有很多专用的硬件功能。P87C591微控制器拥有16K内部程序存储器和512字节的数据RAM。同时还拥有三个16位定时/计数器T0,T1和附加T2。P87C591中有六个输入10位ADC和两个8位脉宽调制输出。它主要采用字节模式,具有I2C总线串行I / O口的性能; P87C591包含了四个中断优先级以及十五个中断源,并为我们编写高效的程序软件提供专用的硬件支持。全静态的内核提供了一个扩展的节能模式。振荡器停止后能够及时恢复,且传输的数据也不会丢失。P87C591微控制器采用先进的CMOS技术设计,广泛应用于汽车和一般工业。如图3.2为它的管脚功能图:图3.2 P87C591管脚功能图P87C591拥有80C51系列的强大功能,并且由于P87C591中集成了CAN控制器,所以具有CAN控制器的所有功能,除此之外,它的中断能力增强,验收滤波器更多。相较于其他的微控制器,它还拥有支持系统维护诊断和优化系统等功能。3.2.2 CAN收发器的选型本次毕业设计P87C591型汽车仪表是建立在CAN基础上的一个系统网络节点。由CAN总线收发器和CAN总线控制器共同组成一个CAN总线节点来完成CAN总线逻辑链路中控制子层和物理层分别所对应的功能,CAN收发器可以完成CAN总线控制器和CAN通讯总线间逻辑电平传输信号的转换。当CAN总线节点发送数据信号的时候,数据信号经过CAN总线控制器就可以转换为差分电平传送给CAN总线接收发器,并且由于该电平的类型为差分信号,所以其抗干扰性很强。反之,当CAN节点接收微控制器P87C591发出的数据信号时,CAN总线通讯系统把接收到的数据信号转变成差分电平发送给CAN收发器,随后CAN总线收发器再把接收到的差分电平传送到仪表外部节点,从而完成了数据信号在CAN总线节点之间的传送和接收。CAN总线作为很多电器设备数据通讯的总线,必须具有较高的抗干扰能力和快速传输等基本能力,同时还应能检测出传输过程中产生的各种错误。而且如果数据信息传送距离很远时,CAN也需要保持很高的数据传送速率。根据本次论文的信号源和数据,以及收发器所具备的能力,本次选用PCA82C250 CAN收发器。PCA82C250型收发器主要应用在高速通信中,提供给CAN总线控制器差动接收能力。PCA82C250拥有很多优点,比如抗干扰和保护总线的能力,以及具备降低射频干扰的斜率控制等。P82C250与地之间需要加入一个斜率电阻,根据8脚与地的连接方式的不同,可以分为三种工作方式。第一种是波特率比较低或者总线比较短的时候,应该选择斜率控制的方式,这种方式是将斜率电阻连接在8脚和地之间,斜率电阻的取值范围在16K到140K之间。第二种是待机的方式,这种方式是8脚接高电平,这种方式要关闭发送器,而CAN接收器要在低电流下工作。第三种是高速工作方式,8脚直接与地连接,这种情况下总线必须使用屏蔽电缆,因为高速工作方式会产生射频干扰。在本文的仪表系统设计中,我们选用的是第一种工作方式。如图3.3则是它的功能图:3.3频率信号的处理和模拟信号的处理在本文所设计的仪表中,转速和车速是频率信号。水温和机油压力是模拟信号。在所需的测量算法确定好后,传感器信号处理对于测量结果的精确性及其重要。3.3.1频率信号处理电路在这一环节首先要选择传感器,传感器对于得到准确的数据起着至关重要的作用。首先,传感器要满足测量精度,其次,要求传感器具有较高的抗干扰性和可靠性。图3.3 收发器功能图它的管脚的功能如表3.1:表3.1收发器管脚功能表管脚符号功能描述1TXD发送数据输入2GND地3VCC电源电压4RXD接收数据输出5Vref参考电压输出6CANL低电平CAN电压输入/输出7CANH高电平CAN电压输入/输出8Rs斜率电阻输入在本文中只选择车速信号做举例,并设计传感器的信号处理电路。车速传感器主要有光电式、磁电式、霍尔式三种类型。磁电式传感器一般用于发动机转速的检测,因为它在速度接近于零时无法使用所以不考虑选择它作为车速传感器。光电式车速传感器易产生行驶性能问题和产生故障代码。与其它两种车速传感器相比,霍尔式传感器拥有良好的低速性能和抗干扰能力。所以本文的汽车仪表系统选择霍尔式车速传感器5。由于车速传感器所输出的信号不是标准方波,而且输入的脉冲信号频率相对而言比较低,它的输入频率大概在1K以内,因此会产生很多的干扰。传感器信号处理电路的主要就是用来去除干扰信号,并且将传感器的信号整形成标准的方波信号再传给单片机。电路中的三极管工作在开关状态。图中光电隔离电路用于隔离干扰,由光电耦合器和两个电阻R1、R3部分构成。R1为限流电阻、R3为上拉电阻。图中稳压二极管D1的用途是限幅脉冲输入信号6。如图3.4即为车速传感器的信号处理电路:图3.4 车速传感器的信号处理电路3.3.2模拟信号处理电路机油压力传感器的原理是,通过检测机油压力的变化而引起传感器的压力变化,那么将会引起机油压力传感器的输出电阻。而水温传感器使用的则是热敏电阻传感器,当水温越高时电阻越大,相反当水温越低时电阻则越小。水温和机油压力的两种传感器所输出的信号性质一致,所以传感器的信号处理电路基本相同,参数略有不同。本文选择机油压力做举例。 如图3.5则是机油压力传感器信号处理电路图:图3.5 水温和机油压力传感器信号处理电路图图中通过电桥将电阻的变化转化成为电压的变化,其中电桥电路由电阻R4、R5、R3、L1组成。L1是压力传感器。R1是调零电阻。中间的部分是一个差动放大电路。3.4液晶LCD显示驱动电路为了提高用户体验,让驾驶员感受直观,舒适的界面,本论文中采用LCD显示器代替机械式指针仪表。LCD的5伏特驱动电压可以通过两种方式得到,一种是由内部驱动器提供,另一种是由外部输入电压提供。一个十进制数字由两个segment信号组成,驱动器里一共包括34段的segment输入信号,所以最多可显示17个数字。如图3.6则是LCD的驱动原理图:图3.6 LCD的驱动原理图本文系统选择8位段式液晶模块SMS0803,工作电压是5伏特工作电流是1.5毫安。它的工作温度在零下10摄氏度到50摄氏度之间,显示方式是反射式正显示,接口方式是三线式串行接口。它的接口信号说明:1 VDD是电源正极,2 LOAD是片选信号输入,3 CLK是串行移位脉冲输入,4 DI是串行数据输入,5 NC是空脚,6 VSS是电源地。如图3.7为SMS0803与P87C591的连接图:3.5步进电机驱动模块3.5.1步进电机驱动器的选型步进电机有三种驱动方式,第一种是带步进电机驱动的微控制器驱动,这种方式能够简化电路。第二种是用独立的步进电机驱动器驱动。第三种是通过I/O端口进行控制。本文设计的仪表系统选择独立的步进电机驱动器M-SX12.017驱动,该驱动器可以接收从微控制器发送的脉冲信号,并将脉冲信号转换成电平序列。电机再带动指针显示测量值7。M-SX12.017驱动器的引脚排列如图3.8:图3.7 SMS0803与P87C591的连接图图3.8 M-SX12.017驱动器引脚排列3.5.2步进电机的选型根据本文设计的汽车仪表系统,我们选用微型步进电机M-S X15.168。这种型号的步进电机可以产生较大扭矩,并且损耗低、精确度高。广泛的应用在汽车仪表内和其他显示设备中。为了达到防火等安全目的,步进马达选用特种耐磨塑料和高级铁磁材料。由于马达长期运转影响寿命和性能,所以马达需采用有耐磨效果的特殊齿形。M-S X15.168步进电机由两个290欧左右的独立绕组组成,外面有四个接线柱8。如图3.9则是步进电机驱动模块的接线图:图3.9步进电机驱动模块的接线图3.6 E2PROM存储E2PROM存储模块用来存储汽车的里程数。要求里程数能够长期保存并且在掉电后数据不能丢失。本系统选用数据存储芯片24LC65, 它具有存储容量大,存储时间长以及擦、写时间较短等优势。同时,24LC65拥有可编程块加密技术和输入缓冲器快速写入功能。在应用中,24LC65作为外围器件。它的工作电压范围2.5V6V。引脚排列如图3.10:图3.10 24LC65引脚图A0、A1、A2是器件地址输入引脚,SCL是串行时钟线引脚,SDA是串行数据线引脚,当需要扩大存储容量时,可直接用多个24系列的SDA引脚相连。在实际应用中,通常在SDA引脚上接一个上拉电阻9。启动停止时序图如图3.11,启动总线操作方法是当引脚SCL为高时则引脚SDA需由高变低。停止总线操作方法则刚好相反,当引脚SCL为高时,引脚SDA由低变高。图3.11 24LC65起始停止时序图24LC65与P87C591的连接方法如图3.12:图3.12 24LC65与P87C591的连接图3.7 CAN智能节点硬件电路的设计CAN总线的节点一定要具有优良的抗干扰能力。为了实现各个节点间的电气隔离,我们选用高速光耦6N137。将高速光耦放在总线控制器与收发器之间,然而值得注意的是在光耦电路中采用了两个电源VCC和VDD,这两个电源必须要要完全隔离。可以有两种方式来实现两电源的隔离,一种是用小功率电源隔离模块实现,另一种则是用含有5V隔离输出的开关电源来实现10。除此之外,为了进一步提高节点的抗干扰能力和安全性。CANH和CANL与地之间分别串联一个30P的小电容,这两个小电容并联可以起到抗干扰和防辐射的作用。在CAN总线的接入端与地之间反接一个二极管,这样一来当有通过CAN总线的高负电压时,反向二极管就会产生短路,从而起到过压保护作用。在CAN总线的两端应连接两个120欧的电阻以便匹配总线阻抗11。如图3.13是节点的硬件连接图:图3.13 节点的硬件连接图3.8 供电电源的设计稳定的电源对于汽车仪表系统来说非常重要,在现代的微型汽车中,蓄电池是汽车仪表系统电源的最主要的电力来源。蓄电池正常能够提供12V的电压,然而在本文的设计中所选取的微控制器、CAN的收发器等元件所需要的供电电压为5V。因此为了达到5V电压的需求,我们需要设计一个稳定的电源电压输出电路。在汽车仪表工作过程中,电源需供给稳定的电压,才能确保仪表系统工作稳定、及时、精确。如图3.14则是供电电源模块的电路图:在本文的电源模块设计中我们选择了一款常用的三端稳压器7805,7805的最大工作电压为36v,输出电压为4.8v到5.2v的正电压,恰好可以满足单片机所需的工作电压。为了达到减少振动和噪声,我们在电路中接了去耦电容。反接二极管的目的是防止短路,起到保护电源电路的作用12。图3.14 供电电源模块3.9 系统的最小电路在单片机中,为了确保单片机正常工作的系统最小电路必须包括电源电路、时钟电路、复位电路。电源电路为汽车仪表系统提供电源、时钟电路提供时钟信号。复位电路使得在单片机在每次工作时重新初始化。因为我们选择的微控制器带有片内定时器,所以只需要在它的复位引脚接一个2.2f电容再接地就可以实现复位。为了实现指令周期,用外部的12M晶振、两片30PF电容,XTAL2引脚接一个电容C5再接地。如图3.15则是最小电路图:图3.15 系统的最小电路4 汽车仪表系统软件设计4.1 软件设计的总体思想4.1.1软件设计语言的确定以前传统的单机片系统软件开发所用的语言是汇编语言,但是这种语言编程很麻烦且调试和维护都很不方便,浪费大量的时间。这种汇编语言仅仅适合开发小型的应用系统,当面对较为复杂的大型应用系统软件时显得十分不方便。为了提高软件效率,缩短编程的时间我们必须选择一种可以直接面向微处理器的高级汇编语言,这种语言经过编译后直接连接到目标软件,识别定位应用系统的目标代码。目前我们使用的是C语言编写系统软件。用C语言编写的程序结构简单,表达式简练,使用灵活,并且编译效率高。它既有高级语言的基本特点,又具备汇编语言面向硬件和系统以及可以直接访问硬件的功能。所以使用C语言作为汇编语言,能够极大的提高系统的开发效率13。4.1.2 软件开发环境的选取根据本文所设计的汽车仪表系统选择的微控制器是P87C591,因此我们选择由Keil Software生产的51系列兼容单片机软件开发系统Keil C。Keil C可以生成非常高效的目标代码,大多数语句生成的汇编代码非常紧凑,易于理解。 开发大型软件时,高级语言的优势更加明显。4.1.3汽车仪表系统的总体软件设计目前,为了便于编写、测试、维护等,运用系统的总体软件结构经常采用模块化来进行设计开发。模块化是指使用主程序框图和子程序框图把系统软件中主要结构及主要流程表达出来。模块化的优点是不仅能分工明确减少开发时间,而且子模块能够共享给其他的项目14。在本论文的汽车仪表系统中将系统软件分为五个模块,分别是:主程序模块、CAN通信模块、数据采集及处理模块、步进电机驱动模块、LCD液晶显示模块。如图4.1为仪表软件的整体设计结构框图:4.1.4仪表系统主程序模块的设计主程序的作用主要是保护各个子模块,并保证每个子程序的正常运转,这样整个仪表系统才能正常运行。主程序在运行中起到总领的作用,调节控制各个子模块,处理每个模块传递来的信息,调节模块与模块之间的信息传递,同时子程序也可以利用主程序调试。整个程序互相作用,从而保证整个系统的准确正常的工作。本次毕业设计的仪表系统的主程序流程图如图4.2:图4.1 仪表软件的整体设计结构框图开始初始化程序中断使能查询控制输入状态调度CAN接收子程序控制各个电机旋转及LCD显示调度CAN发送子程序结束图4.2 主程序流程图根据流程图可以看出,主程序最开始需要对各个模块进行初始化设置,然后开始中断使能,随后查询控制输入的状态,一旦异常需要调节初始化设置。然后调度CAN接收子程序,将CAN总线上的有用数据传送到内核中。随后控制各个电机旋转及LCD显示,把所需信息通过电机显示出来或者显示在显示屏中,最后再调度CAN发送子程序,把所有的控制信号发送到相应的执行单元。4.2 仪表系统各个子模块系统的设计4.2.1 数据采集及处理模块这个模块的主要作用是汽车在行驶的过程中,记录汽车在各种状况下行驶的实时数据信息和行驶过程中汽车内部的各项数据参数并保存。这些数据信号,有的是模拟信号,有的是脉冲信号。采集频率对于该模块的设计尤为重要,因为采集频率太慢的话会使指针滞后,频率太快的话又会打乱步进电机的运转节奏,导致指针抖动。所以为了既反应真实性和使指针平滑转动,应该选择适中的采集频率。为了获得更准确的数据,我们要采取多次测量取平均值的方法。对A/D值采样四次并取平均值15。在得到平均测量值时,要在表中查的参考电阻值与测量值进行比较,假如测量值大于最大的参考值的话,那么就要将指针置最大。假如测量值小于最小的参考值的话,那么指针就要置最小。假如测量值刚好在参考值的范围内的话,就要计算指针的角度,这里的计算值是根据分段线性化获得。数据采集及处理模块的流程如图4.3:进入采集模块设置T0车速进行采集转速进行采集对A/D值采样四次并进行累加数据处理图4.3 数据采集流程图4.2.2 液晶显示模块程序设计LCD液晶显示模块的主要作用是显示汽车行驶里程。液晶显示器相较于以前的指针显示器的优点就是更加直观、简单、舒适。并且液晶显示器具有彩色、低能耗、寿命长等一系列优势。在显示器里显示主要有两项,分别是里程累计和里程小计。里程累计主要是汽车所行驶的总里程,精度为1千米,当它达到显示器显示最大值999999千米时,它的值将不会再变化。而里程小计则是每次汽车使用时当次所行驶的路程,所以每次使用时会将上次的里程小计清零,它的工作单位到999.9千米,精度为0.1千米。在行驶时里程值由当时的速度和时间相乘而得到,每次里程行驶100米时,里程小计递进一个单位,每当行驶1000米时,里程累计递进一个单位,同时里程储存器也会同时更新,以保证数据的完整以防丢失。工作的流程图如图4.4:开始LCD显示复位车速对时间积分得到里程值里程值100 N里程累计显示+1里程小计显示+1 刷写E2PROM里程小计1000 Y Y N结束 图4.4液晶显示模块流程图4.2.3 CAN总线通讯模块程序设计在本论文中所选用的P87C591微控制器内部集成了CAN总线控制器模块。在市场上有很多微控制器集成了CAN控制器,这些CAN控制器的内部结构有所不同,但是基本的原理大致相同。1 CAN初始化在CAN总线通信模块的设计过程中CAN初始化设计是非常重要的一环,因为CAN总线控制器只有在完成初始化设计后才能进行数据的发送和接收。操作流程图如图4.5所示:软件初始化TXDC脚P1.0置高进入复位模式总线位定时设定初始化报文 缓冲器和验收滤波器屏蔽控制寄存器设置结束复位模式软件初始化完成图4.5 CAN初始化流程图2 CAN发送程序发送数据是根据CAN2.0标准协议以编码的形式发送的。在发送时要把节点数据根据格式要求组成消息帧,然后选择一个闲置的发送缓存区,并把数据发送到缓存区。最后由发送缓冲区的寄存器写命令开启发送请求标志位。发送完毕的状态为置0表示节点正在进行数据发送,置1表示数据发送成功。发送流程图如图4.6:3 CAN接收程序CAN总线节点的报文接受程序采用中断控制,其子程序工作流程如下图所示。为了提高数据的准确性和及时性,选择中断程序直接接收读取数据。当产生数据信息时,CAN控制器自动将数据信息从通信总线那传送到接收缓存器中,接收缓存器在接收到数据信息时它的状态标志位就会被置1,所接收到的数据信息也将由接收子程序直接从接收数据的缓存区内直接读取出来。CAN接收中断将会在数据信息被接收缓冲器接收并保存时产生响应,最后数据信息在读取后被释放,再进行数据的处理。具体流程如图4.7:数据发送开始发送缓冲器是否为空等待缓冲器清空 开始向缓冲器写人采集的数据设置发送标志位发送结束图4.6 发送流程图4.2.4 步进电机驱动模块程序设计仪表步进电机的目标是电机指针能够及时的根据数据信号的变化而做出相应的变化,并且防止指针突然的停顿或者过冲的现象,以保证仪表指针的精确度。同时电机指针转动一定要平缓,不能在运转过程中出现卡顿,指针的运转轨迹也一定要要平顺,这样才能使其具有一定的观赏性。为了满足上述条件,在设计的过程中,我们对步进电机采取24细分驱动,指针的运转精度为十二分之一度。同时,为了能使电机在运转过程中实现先加速然后匀速最后减速到停止,必须在电机驱动中加入加速,减速控制器。流程图如图4.8:在流程图中的中段函数的作用是将采集到信号通过过滤波处理并转化成为对应的用来驱动表头的数据。中断服务程序 关闭中断CAN接收中断是否产生继续其他任务 否 否从接收缓冲器中读取报文并保存是否读取完毕 否是 是释放接收缓冲区中断返回图4.7 接收流程图 中断入口中断入口指针驱动数据更新信号数据更新电机加减速控制策略调用信号处理函数电机驱动1/12微步指针驱动数据更新累计12个微步?中断返回a数据更新流程图指针位置+/-1中断返回 b电机驱动流程图图4.8 步进电机驱动模块流程图5 总结随着电子技术和通信技术的快速发展,汽车仪表系统利用CAN总线技术使得仪表更加网络化和智能化。通过对CAN总线、单片机等的学习与研究,设计出了一款基于总线的汽车仪表系统。该系统具有传输速率快、稳定性强等优势,更能符合用户的需求。本文主要完成的工作如下:(1)查阅CAN总线技术有关资料,了解总线技术基本概念、特点、技术规范。分层结构等知识。通过查阅相关文献书籍掌握汽车仪表系统研究现状和发展趋势,从而确定本文设计目标。(2)对汽车仪表系统进行硬件设计。硬件设计包括总体结构设计、主要硬件模块选型、传感器信号处理、LCD模块、步进电机模块、存储模块的设计以及智能节点、供电电源、最小电路的设计。(3)对汽车仪表系统进行软件设计。软件设计主要包括总体软件设计、主程序模块、通信模块、步进电机驱动模块、液晶显示模块、数据采集及处理模块的设计。通过本文的研究得出的主要结论有如下几点:(1)本文利用CAN总线容错性强、通信速率高等优势,使得汽车仪表系统数据通信实时可靠,并且能够节约和简化整车的布线系统。(2)微处理器作为仪表系统的核心使得仪表测量精度和测量及时性提高。(3)选用步进电机作为显示器件在很大程度上能够提高显示精度,并能使指针平缓转动,以提高指针的使用寿命。参考文献1于琦.现代汽车仪表技术及发展趋向研究J.汽车与驾驶维修(维修版),2018,26(03):55-56.2姜岚.汽车电子技术的应用及发展趋势探究J.电子测试,2014,28(17):110-111.3王晓.基于CAN总线的汽车组合仪表的设计D.聊城大学,2015. 4周贤来.现代汽车电子技术的应用J.技术与市场,2018,25(03):107-108.5王怡.基于单片机P87C591的数据采集板的设计J.通讯世界,2015,46(20):283-284.6陈林.基于CAN总线的汽车仪表数据采集系统J.中国新通信,2014,16(09):51-52.7徐志山.基于CAN总线的开关控制电路设计与实现J.西安文理学院学报(自然科学版),2018,21(02):44-49. 8邢然,郑国昆,任晓伟,丁保民.步进电机加减速曲线设计方法研究J.工程建设与设计,2018,45(06):48-49.9曹晖,袁世英.24LC65与8051单片机的接口J.新余高专学报,2000,56(02):18-21.10邱英杰.CAN总线汽车仪表系统的抗干扰分析与设计J.科技信息,2011,32(27):10-11. 11饶连周,林惠川,谢金涛,方汝炤.基于STM32F103VC和CAN总线的汽车仪表系统的设计J.三明学院学报,2012,29(02):56-60.12李静.基于CAN总线的新型汽车仪表系统的设计与实现D.南京邮电大学,2017.13张卫民,邱道尹,蔡中府.基于CAN总线技术的汽车组合仪表系统的研究J.数字技术与应用,2013,24(01)100-101.14刘学晶.基于CAN总线的车用仪表系统的设计与研究D.上海工程技术大学,2016.15邱鑫.基于CAN总线的汽车LCD智能仪表研究与开发D.重庆交通大学,2014.附 录A/D 的初始化程序为:void ATD_init(void) ATDCTL2=0X80; ATDCTL3=0X20; ATDCTL4=0X03; ATDDIEN1=0XF0; ATDCTL5=0XB0; 液晶显示模块程序设计:void lcdshow(unsigned int ad) unsigned char i,j; unsigned int a,b,c,d,e; a = ad; b = a/1000; c = a/100 - b*10; d = a/10 - b*100 - c*10; e = a- b*1000 - c*100 - d*10; LCD_LOAD = 0; LCD_CLK = 0; LCD_DI = 0; LCD_LOAD = 1; num3=num2a; num4=num1b; num5=num1c; num7=num1d; num8=num1e; for(i=0;i=13;i+) M = numi; for(j=0;j1; delay_ms(3); LCD_LOAD = 0; CAN初始化程序如下:void init_can_controller uchar temp; CANSTA=0x00; CANSTA=0x03; CANADR=BTR0; CANADR=BTR1; CANDAT=0x2B; CANADR=ACFEN CANDAT=0x00; CANADR = ACR10; CANDAT=0x40; CANADR=ACFEN; CANDAT=0x00; CANADR=AMR10; CANDAT=0x FF; CANDAT=0x FF; CANDAT=0x FF; CANDAT=0x FF; CANADR = ACFMOD; CANDAT=0x55; CANADR=ACFPRIO; CANDAT=0x FF; CANADT=0x01; CANMOD=0x00; CAN发送程序如下:void TX_Service uchar Length; uchar i; bit FF; if (TBS= =1) FF=Transmit Message.MSG_ info&0x80; Length=Transmit Message.MSG_ info&0x0F; if (Length0x08) Length=0x08; CANADR=TXB; CANDAT=Transmit Message.MSG_ info; CANDAT=Transmit Message.ID0; CANDAT=Transmit Message.ID1; if (FF) CANDAT=Transmit Message.ID2; CANDAT=Transmit Message.ID3; for (i=0;i0x08) Length=0x08; Receive Message.ID0=CANDAT; Receive Message.ID1=CANDAT; if (FF) Receive Message.ID2=CANDAT; Receive Message.ID3=CANDAT; for (i=0; i=timer_r ) counter_r=0 ;mov_r =1; if(pointer_drv_r =timer_c ) counter _c=0 mov _c =1; if ( pointer_drv_c pointer_pos_c ) pointer_pos_c-; else dir_c=1; pointer_pos_c+; if (pointer_drv_t!= p- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CAN 总线 汽车 仪表 系统分析 设计 说明书
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文