汽车仪表显示系统.docx
《汽车仪表显示系统.docx》由会员分享,可在线阅读,更多相关《汽车仪表显示系统.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1绪论1.1 汽车仪表的发展概况在汽车工业的一百多年的发展中,汽车仪表作为其中的重要组成部分,也经历着其自身 的发展。汽车仪表一般按照其信号的传输方式也从最初的模拟信号到电信号再到如今的 数字信号进行着转变。现代汽车仪表具有精度高、可靠性强、响应速度快等一系列特点, 并且能够准确的将数字、文字、图像等信息进行快速的显示传递给人们。如今,国外的发达国家大部分采用的是电子仪表,并向更高一步发展。而汽车仪表 作为汽车中主要的行驶信息的来源,能够直观的给人们反映汽车各部分的基本信息,其 性能、外观以及视觉体验越来越受到重视。我国的汽车仪表工业相较于工业发达国家还 有一定的距离,其中技术存在一定的差距,
2、虽然在过去的发展中,通过购买引进了先进 设备和技术,产品水准达到了国外70年代末,80年代处的水平。但对于整体而言,情 况仍不容乐观。随着计算机和传感器等电子技术的发展,汽车上的电子控制装置的增多也让汽车电 子化的进程得以加快。与此同时,汽车电子控制装置之间的连接方式也变得越来越复杂。 以车速信号为例,通过传感器输出的车速信号,需要提供给包括发动机控制、巡航控制、 电子仪表、动力转向等在内的十余个电子装置使用。但是由于这些电子装置的功能不同, 因此也被分布在汽车车体的各个部位,如果采用点到点来进行布线,便会导致结构的复 杂程度,增加运维的难度,使其可靠性大大降低。所以,解决汽车各电子装置与电子
3、仪 表的数据交换是有必要的,汽车仪表网络化的发展也是必然趋势。随着汽车产品更新换代的速度变快,汽车仪表的类型也随之变多,针对不同的车型 而专门去设计与之匹配的仪表显然会大大增加汽车的成本,而汽车仪表作为汽车信息中 枢,所提供给驾驶员的基本信息大体相似,我们可以将各功能信息进行模块化处理来进 行设计,在保证满足需求的同时大大降低设计成本。1.2 课题的目的及意义汽车仪表系统是驾驶员与汽车进行信息交流的接口与界面,它为驾驶员提供其所需 要的信息。为了能够让驾驶员更快更有效的了解掌握其中各机构与装置的状态,从而 更方便有效的控制汽车,使其正常的工作,汽车仪表作为现代汽车的信息中枢,不仅要 求显示直观
4、、清晰、稳定、响应速度快、显示精度高,而且要求体积小、重量轻、便于 装配和维护,正变得越来越重要,并伴随着汽车电子技术的发展而快速发展。在各种信息中,车速、里程及车门状态等基本功能更需要直观的显示出来提供给驾 驶员,使其能迅速准确地判断汽车的状态,保证行驶的安全。本课题主要基于STM32的 汽车仪表图形化显示。长。选用的EEPROM芯片型号为24co2。该芯片的总容量为256个字节,该芯 片通过IIC总线与外部连接。HC总线通过开始信号在传送数据过程中共有 三种类型信号,分别为开始信号、结束信号和应答信号。在数据保存中, 可以将32位数据拆成2个16位保存,降低优化保存数据所带来的寿命问题。
5、这些信号中,起始信号是必须的,结束信号和应答信号可以不要。2. FLASH存储器相较于EEPROM而言,能够快速的进行擦除读写,且价格低于 EEPROM存储器。FLASH包括两个类型,即NOR FLASH和NAND FLASH。NOR FLASH 以单个字读取,实现片上执行,在NOR FLASH中既可以保存程序,也能直接执 行程序,不必再把代码读到系统RAM中。NOR FLSAH通常用来存放固件系统 启动代码、PC的BIOS的不需要改写的小程序中。NAND FLSAH是以提供极高的 单元密度,从而实现单个存储芯片的大容量。它主以读取页为单位,所以存 放在NAND FLSAH中的应用程序布恩那个
6、直接运行,需先读取到系统的RAM存 储区域中,然后再执行。NAND FLASH常用于存储海量数据。根据需要存储的 信息量,设计中选取NOR FLASH存储器进行存储。按照不同容量,存储器组 织成32个1K字节/页(小容量)、128个1K字节/页(中容量)、256个2K字节/页 (大容量)的主存储器块和一个信息块,其中选用的为16Kx 64位存储器,其 模块组织如下:STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等3部分组 成。在信息块中,它的启动程序代码,是用来存储ST自带的启动程序,用于下载 代码,而闪存存储器接口寄存器,主要用于控制闪存读写等,是整个闪存模块的 控制机构。对
7、主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管 理;编程与擦除的高电压由内部产生。在执行闪存写操作时,任何对闪存的读操 作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操 作时,不能进行代码或数据的读取操作。3. 6LCD模块LCD作为汽车仪表的显示窗口,LCD模块主要显示车门状态和里程信息。 常用的显示屏有液晶显示器(LCD)和有机电致发光显示器(OLED)。OLED相较 于LCD而言,能够自发光,因此对比度大,亮度好,同时造价较高,并且寿命短, 在本设计中性价比较低.其中TFT-LCD相交于TN-LCD、STN-LCD而言,它在液晶 显示屏的每个像素上
8、都设置有一个薄膜晶体管(TFT),可以有效地克服非选通时 的串扰,使显示液晶屏的静态特性与扫描线数无关,从而大大提到图像质量。综 上比较,TFT-LCD目前在亮度、对比度、寿命、功耗等综合性能上有显著优势, 因此作为本设计的显示设备。在显示品质方面,以分辨率划分,有220X 176、320X240、640X480、800X600,设计中选用2. 4寸320X240显示屏。原理图 如下:由于显示图片时数据量比较大,相较于8位的方式,LCD模块采用16位的并方 式与外部相连,这样其速度能够快上一倍。其中,LCD模块与STM32的10 口有 对应关系:LCD_BL 对应 PB0;LCD_CS 对应
9、PG12, LCD_RS 对应 PGO; LCD_WR 对应 PD5; LCD_RD 对应 PD4; LCD_D15: 0直接连接 FSMCDJ)到 FSMCDJ5。4系统软件设计3.1 软件模块划分由于设计采用的模块化思想,在实现功能时也将个功能通过模块化来划分, 其中主要包括主程序模块以及功能模块。主程序模块主要用来调度各功能模块, 而功能模块包括通信模块、显示模块以及存储模块。软件采用C语言来编写,这 样能够具有良好的移植性、通用性以及可靠性。通信模块主要选用CAN通信来实现。通过CAN总线发送及接受报文,实现数 据传输。显示模块主要选用LCD来实现。主要显示汉字、图片两个部分。在显示
10、汉字时,因为显示的内容比较少,如果选择调用基本库,会占用较多的内存,并 且调用起来会很复杂,因此需要根据显示内容建立字库。4. 2CAN通信模块系统实现仪表通信功能主要通过CAN总线发送与接收任务实现。通过CAN 总线发送缓冲区读取报文并发送和接收缓冲区读取报文,根据J1939协议将数据 解析为相应的测量值,保存到各个被检测对象对应的状态变量中或发送信号给对 应的邮箱。SAE J1939通信协议SAE J1939通信协议栈使汽车电子产品的开发变得简捷、快速。所有在SAE J1939规范中定义的通讯装置都可用该软件来实现,从而使汽车电子产品开发者 能够集中精力进行自己应用软件的开发。这种基于OS
11、I层模型的协议软件具有 标准组件的结构,这种结构最适于移植到特殊的目标系统。通过配置文件,SAE J1939通信协议栈能够被精确地移植,完全适合特定应用的需要,因此要求这种 通信协议栈完全由C源代码编写。所提供的源代码、文档、例子程序使用户能 够很快地应用SAE J1939软件进行工作。所有的源代码、例子程序都能够在参 考平台上直接运行。1939协议栈1)数据链路层:CAN控制芯片实现了几乎全部的数据链路层内容,但J1939 对该层进行了一些修改,如对ID号重新进行了定义,J1939只支持扩展帧模式 9 O2)传输层:根据J1939协议实现接收和发送报文的算法,有两种传输模式, 分别是广播通讯
12、(TP-BAM)和连接管理(TP-CM),都被J1939协议栈支持。信号处理CAN数据提取完毕之后,通过协议的规定将数据解析出来。其中数据包括: 数据类型、数据长度、数据范围和表示符。解析过程通过提取数据包的PGN(偏 移号)根据J1939协议的规定进行。其中车门状态量信号选取J1939协议中的后 两位2进制数表示,“00”为关闭,“01”打开。当数据帧发送的PGN码为65421 时,则根据分组号来判断显示状态。流程图如下:4 CAN软件实现本设计中,通过中断方式进行CAN总线的数据收发,CAN总线的接口初始 化和测试主要是由CAN_ Configuration (void)函数来实现的。相关
13、代码如下: 4. 3LCD显示程序设计 4. 3. 1TFTLCD 的驱动一般的LCD的驱动流程都是一样的,主要分为硬复位、初始化以及读/写GRAM 指令来完成。其流程图如下:由于选用的LCD的硬复位是与MCU连接的,这样直接通过MCU的复位引脚对LCD 进行复位即可,同时、还能够节省一个10 口。如果在没有连接,则需要将RST 接到MCU的10上,在初始化之前,先拉低电平,延迟100ms之后再释放RST,完 成对了 LCD的硬复位。LCD的初始化序列一般是厂家直接提供的,不同的厂家初 始化的序列是不一样的。在LCD初始化时,只需要输入相应的ID就可以。在LCD 初始化之前,还要对GPI0和F
14、SMC初始化。4. 3. 2底层函数与结构LCD中的七个底层函数,分别为写寄存器值函数、读/写数据函数、写寄存器 内容函数、读寄存器内容函数、开始写GRAM函数和写GRAM函数。其中写寄存器 函数中通过对寄存器编号的选用,来选择FSMC的时序控制方式,此时的RS值为 0o写数据函数通过对DATA的数据进行写入,实现数据的传输,此时的CS、WR 以及10都是直接由FSMC来进行控制,不需要进行选择,而RS的值此时为1。 写寄存器内容函数可以由写寄存器函数和写数据函数一起来代替,不过在使用写 寄存器函数时需要先通过对寄存器编号的操作再进行寄存器值的写入。读寄存器 内容函数主要通过返回值将内容进行传
15、递。写GRAM函数主要通过对写颜色值来 确定16位颜色数据的显示。其中LCD还有部分结构用来对LCD的信息进行设置。如LCD宽度(width)、 高度(height)、驱动型号(id)、横竖屏(dir)。通过这些结构体来对显示信息进 行划分,主要在函数LCD_DISPLY中来实现功能选择。4. 3. 3描点显示功能第一步是在屏幕上实现一个点的显示。首先是通过LCD_SETCURSOR 函数来实现点的确认,即在画点功能,也就是通过对屏幕进行坐标的划分,确定 一个点的位置。然后再对屏幕的大小进行设置,确保所选的目标点不会超出屏幕 的大小范围。函数中具体是通过先发送X和Y的高8位,再发送坐标的低8位
16、。设置坐标以后,再对点的颜色进行确认,即写入GRAM指令。函数中主要通过 LCD_DRAWPOINT来实现,选用设置一个全局变量,对点的颜色值进行选取。4. 3. 3字符串显示字符串的显示是通过先对一个字节的显示,然后进行循环对下一个字节的显 示来实现的。主要函数为LCD_SHOWSTRING。确定了字符串的起始地址后,在显 示下一个字符的时候,需要对下一个字符的起始坐标进行处理。显字符主要分为三个步骤。首先要对点阵进行选取,字符的显示是通过点阵集来 实现的。显示字符是需要确定一个字符对应点阵集的字节数。字符显示的内容需 要与通过ASCH字库对应的模来进行选取,因为ASCH是从空格开始取模的,
17、在 确定对应关系上应该减去空格,从而保持对应关系。然后需要设置显示的参数信 息,包括显示字体大小、显示方式。字体的大小主要可选12*12、16*16和24*24 三种,设计中选用的是12*12的字体大小。在字节上,需要用两个字节来表示, 第一个字节的高8位是有效的,第二个字节的高四位有效,而低四位无效。在显 示方式上可以选叠加方式和不叠加方式两种最后选择显示的区域,即通过X、Y 坐标确定显示的区域。4. 3. 3图片显不在选择图片时,需要考虑图片的格式问题。常见的图片格式有很多种,分别 为:bmp、png jpd、gif等。设计中选用时需要考虑到的有图片的内存大小、 分辨率、格式支持等方面。设
18、计中用到的是jpd格式的图片,主要考虑的是显示 的大小符合硬件支持,并且不需要对图片进行压缩处理,这样能够更为广泛的选 择显示时图片所需要考虑到的扫描方式问题。使用图片时一,需要考虑图片文件的数据结构,即图片中所包含的显示内容和 类型。其中内容包括图像的宽度、高度和颜色信息等。在显示图片时,首先需要对图片进行解码。解码使用的是image21cd软件, 可以直接将图片解码然后生成. c文件。在文件生成后需要将其放入程序的源码 文件image中,通过MD5将解码文件加入程序所在的工程中就可以了。对图片显示之前需要对图像数据进行定义,即设定图片的扫描方式、灰度值、 宽度、高度、以及颜色分量的排列顺序
19、。扫描方式是通过定义中scan来选择, 共8位。BIT1和BITO中00表示水平扫描,数据水平,字节垂直;00表示水 平扫描,01表示垂直扫描,10表示数据水平,字节垂直,H表示数据垂直, 字节水平;BIT2和BIT3表示保留;BIT4中选0表示WORD类型高低位字节顺序 与PC相同,选1表示WORD类型高低位字节顺序与PC相反;BIT5中选0表示字 节内像素数据从高位到低位排列,选表示字节内像素数据从低位到高位排列;BIT6中选0表示自顶至底扫描,选1表示自底至顶扫描;BIT7中选0表示自左 向右扫描,选1表示自右向左扫描。灰度值在定义中通过gray来设置。其中选1表示单色;2表示四灰;4表
20、示 十六灰;8表示256色;12表示4096色;16表示16位彩色;24表示24位彩色; 32表示32位彩色。颜色分量排列顺序通过定义中rgb来选择,每两位表示一种颜色分量。其中 00表示空白;01表示红色;10表示绿色;11表示蓝色。显示函数void image_show根据上述定义对图片进行设置。要注意的是显示 色素点时需要对图片的数据存储进行字节的转换,因为图片的数据是一个字节进 行存储的,即8位数据,而显示时的数据是16数据。4. 6存储模块内置闪存模块可以在通用地址空间直接寻址,任何32位数据的读操作都能 访问闪存模块的内容并得到相应的数据。读接口在闪存端包含一个读控制器,还 包含一
21、个AHB接口与CPU衔接。这个接口的主要工作是产生读闪存的控制信号并 预取CPU要求的指令块,预取指令块仅用于在Code总线上的取指操作,数据 常量是通过D-Code总线访问的。这两条总线的访问目标是相同的闪存模块,访 问D-Code将比预取指令优先级高。这里要特别留意一个闪存等待时间,因为CPU运行速度比FLASH快得多, STM32F103的FLASH最快访问速度W24Mhz,如果CPU频率超过这个速度,那么 必须加入等待时间,使用STM32为72Mhz的主频,那么FLASH等待周期就必须设 置为2,该设置通过FLASH_ACR寄存器设置。FLASH编程流程图如下:在FLASH编程的时候,
22、还需要判断缩写地址是否被擦除了。其中STM32的闪存擦 除方式有两种:页擦除和整片擦除。其中页擦除流程图如下:在访问FLASH时; 需要用到一下几个函数:锁定解锁函数:void FLASH_Unlock(void)o在对FLASH进行写操作前必须先解锁, 解锁操作也就是必须在FLASH_KEYR寄存器写入特定的序列KEY1和KEY2,;同样的 道理,在对FLASH写操作完成之后,我们要锁定FLASH,使用的库函数是:void FLASII_Lock(void)o2 .写操作函数固件库提供了三个FLASH写函数:FLASH Status FLASH ProgramWord(uint32_t Ad
23、dress, uint32_t Data);FLASHStatus FLASH_ProgramHalfWord(uint32_t Address, uintl6_t Data);FLASH_Status FLASH_Program0ptionByteData(uint32_t Address, uint8_t Data);其中FLASH_ProgramWord为32位字写入函数,其他分别为16位半字写入和用户选 择字节写入函数。32位字节写入实际上是写入的两次16位数据,写完第一次后地 址+2。3 .擦除函数固件库提供三个FLASH擦除函数:FLASH Status FLASH ErasePa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 仪表 显示 系统
限制150内