您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页基于μCGUI的虚拟仪表盘的设计

基于μCGUI的虚拟仪表盘的设计

来源:华佗养生网
第4期 杨存祥等.基于txCGUI的虚拟仪表盘的设计 5l1 基于laCG U I的虚拟仪表盘的设计 杨存祥 张春蕾 庞永超 (郑卅l轻工业学院电气信息工程学院河南省信息化电器重点实验室,郑州450002) 摘 要 介绍了基于ARM7芯片LPC2478的虚拟仪表盘系统硬件构成,并较详细列出了LPC2478与显 示屏的接线方式和LCD控制器的初始化配置。结合IxCGUI中的自动设备对象和分片存储设备,解决了 在重绘图像时如何避免画面闪烁的问题。该系统采用c语言实现GUI的开发与控制,使代码具有较好 的移植性和可靠性。 关键词 虚拟仪表盘LPC2478 txCGUI 自动存储设备 中图分类号TH868 文献标识码 A 文章编号 1000—3932(2012)O4—0511—04 随着科技的发展,电子产品在人们的生活中 1 系统硬件设计 扮演着越来越重要的角色,人机交互的接口也向 1.1 硬件部分构成 着多样性、人性化方向发展,其中虚拟仪表盘就是 ARM在嵌入式系统中的应用越来越广泛,恩 人机交互优越性的良好体现。以往,模拟指针式 智浦半导体推出的一款提供集成LCD支持和双 仪表被广泛应用在汽车速度、油量的显示及电力 路ARM高速总线(AHB)的32位ARM7微处理 系统电压、电流的指示等领域。这种方式具有结 器LPC2478,芯片的成本和功耗都比较低,它适用 构简单和价格低廉的特点,但系统整体性能不够 于开发手机、车载娱乐、GPS、销售终端系统及生 好,功能单一,也不能实现人机交互。近年来,随 物医疗器械等需要友好的人机交互界面的小型嵌 着嵌入式技术的迅速发展,首先飞机上传统的指 入式应用系统。基于IxCGUI¨ 的虚拟仪表盘所 针和刻度盘被一块TFT液晶屏幕(薄膜晶体管) 运行的硬件平台如图1所示,整个系统包括电源 取代,它能灵活地显示多组仪表盘、调试、故障诊 处理、时钟、程序/数据存储器、与其他设备的通信 断、GPS信息及保养周期等功能,这种技术能实现 端口和TFT彩色液晶的控制与显示。笔者采用 友好的人机交互,显示屏具有良好的复用性。采 的是众福5.7”FG050720DSSwDG01数字液晶屏, 用虚拟仪表盘技术提高了信息显示的准确性,并 对TFT彩色液晶的控制与仪表盘的显示部分作 且还极大地丰富了信息量,无疑是最好的选择。 详细分析。 时钟 Il 键盘 .rI.1|r ESD 彩色 防 ARM嵌入式微处理器 = {时序逻辑控制器 液晶 护 显示 模块 数据RAM lI图像FLASH l ED 电源保护}====== 电源处理及抗干扰处理 恒流源 背光 图1 系统硬件框图 1.2 LPC2478与TFT液晶屏幕的连接方式 接方式如图2所示。该LCD控制器还具有两个 LCD控制器直接为多种彩色和单色液晶屏的 的DMA FIFO缓存器,当液晶屏为单屏,可将 接口提供了所有必需的控制信号,可将像素编码 这两个缓存器合并为32双字节容量来使用。采 数据转换成所需格式,并产生相应的时序以驱动 各种单屏或双屏的单色或彩色LCD显示屏,其连 收稿日期:2012-02—18(修改稿) 一5l2 化工自动化及仪表 第39卷 用了DMA FIFO之后,SDRAM中的Frame Buffer (1<<13)i/ 数据在LCDDCLK的上升沿输出 / (1<<12)I/ HSYNC低电平有效 / (1<<11)I/ VSYNC低电平有效 / (0<<5);/¥选择HCLK¥/ / 颜色反转 / LCD—中的图像数据以DMA方式传输到LCD控制器数 据缓存器FIFO,不占用系统总线时间。LCD控制 器包含两个单独的AHB接口,LCD控制器用 AHB从接口访问LCD控制器内的控制寄存器和 数据寄存器,用AHB主接口来访问DMA中存在 于内存或系统其他地方的显示数据 。 CTRL=(1<<8)I(1<<5)I/ 选择TFTlcd 的类型 / l厂———] 栅极驱动器I I........ 赢  一-  ~N } (6<<1)I/ 选择16位色 / (1);/ 使能LCD控制信号 / —LCDINTMSK=0;/}禁止LCD中断 / 2.2创建虚拟仪表盘 2.2.1 原理分析 图2液晶屏与LPC2478的连接框图 2系统软件设计 2.1 液晶屏的初始化函数 蠢 众福5.7”FG05O720DSSwDG01数字屏与 LPC2478按照图2所示的方式相连后,还需要对 LCD控制器正确配置,显示屏才能正常显示,笔者 根据实际项目应用,比较了众福屏的输入时序信 号和LCD控制器输出时序信号,对LPC2478的 LCD控制器里的主要寄存器进行初始化设置。初 始化函数Led—Init()主要部分代码如下 : void led—Init(void) { / LCD电源使能控制位 / PCONP I=(1<<20); /¥设置LCD缓存的基地址¥/ LCDUPBASE=(unsigned int)LCD—data; LCD—CTRL=0;/ 禁止LCD控制}/ LCD—CFG=Ox3;/ 设置像素时钟}/ LCD—TIMH=(3<<24)l/¥设置水平后沿}/ (80<<16)l/ 设置水平前沿 / (2<<8)I/¥设置水平同步宽 / (39<<2);/ 设置每行有多少个像素 / LCD_TIMV=(40<<24)I/}设置垂直后沿 / (20<<16)I/ 设置垂直前沿 / (2<<10)l/ 设置垂直同步宽 / (639<<0); LCD—POL=(1<<26)I/¥旁路像素时钟驱动 / (639<<16)I/ 设置每行时钟 / (0<<14)l/ LCDENAB输出在TFT mode高 电平有效 / 在背景上绘制一个带有可转动指针的刻度 盘,运行时的动态画面可分为静止部分和变化部 分,在一段时间内显示屏只有一小部分要更新。 当绘图函数第一次被调用时,所有的对象都被绘 制出,而以后的函数调用只更新需要移动或改变 的物体,这样可有效避免闪烁。 用一个仪表盘实例来说明不闪烁图的绘制过 程 。假定图3a是首次绘制的图,背景图和指针 都绘制出来,图3b是指针旋转一定的角度,只需 要绘制两幅图的变化部分,即两幅图指针的变化 区域。在图3c中,标号1的指针所占的矩形区域 为标号2,标号3的指针所占矩形区域为标号4, 两个矩形区域合并就是图3d所指的灰色矩形区 域,也即是图3b较之于图3a的变化区域,把图 3b对应的变化区域复制到图3a的相应位置就变 成了图3b,从而就实现了在仪表盘中指针旋转的 效果。 a.初始图 b.指针移动历 c.画面比较d.画面变化的矩形区域 图3 不闪烁图的绘制过程 2.2.2软件代码的编写 当显示屏必须更新来反映其对象的移动或改 第4期 杨存祥等.基于I ̄CGUI的虚拟仪表盘的设计 513 变时,存储设备非常有用。使用函数GUI—MEAS- DEV—Create()创建一个测量设备,它能自动识别 显示屏的哪部分包含固定的对象,哪部分包含移 动或改变的对象(必须更新)。当绘图函数第一 次被调用时,所有的对象都被绘制到测量设备里, 然后调用函数GUI—MEMDEV—CopyToLCD()写到 显示屏上。以后的函数调用,测量设备通过比较 前、后两幅画面找到画面的变化部分,只更新需要 移动或改变的物体。实际的绘图操作使用分片存 储设备机制,只在需要更新的画面内使用。软件 实现的流程如图4所示。 (创建一个测量组件) 1.测最静态表盘底图和动态 ◇N 1.测量本副画面指针应在 l 指针的区域如图3a,绘制到要 的矩形区域(图3c标号为4的 显示的缓存。 区域)。 2.只测量指针所在矩形区域 2.合并这次和上一次指针矩 (图3c标号为2的区域)并记 形区域(图3d的灰色矩形区 录此区域。 域绘制到要显示的缓存)。 ‘ ‘ l 把要显示的缓存数据传到显示屏上显示出来 图4软件实现的结构流程 Draw()绘图函数是一个哑绘制,它是把图像 绘制到一个缓存里面,也就是说绘制点的时候,没 有真正地调用驱动进行绘点,而是借此来计算所 要画的图形的范围,每画一个点都会检测并更新 所画图形的范围,没有实际绘图,所以不用担心效 率问题。其实现函数如下 ]: void Draw(GUI—BITMAP GUI—UNI—PTR pBitmap) { PARAM pParam=(PARAM )&(pBitmap一> Param); / 如果所有的对象都要绘制,DrawFixed设为1; 当只有被移动或改变的物体才需要绘制的时候, 设为0;若是第1次调用所有的对象都要绘制 / if(pParam一>AutoDevInfo.DrawFixed) { //绘制静态图片 GUI—DrawBitmap(pBitmap,pBitmap一>Disp—X, pBitmap一>Disp—Y); } / 绘制移动的指针 / GUI—SetColor(GUI—RED); GUI—AA—FillPolygon(pParam一>aPoints, pBitmap一>TotalPoints. MAG¥(pBitmap一>NeedleCenterX),//中心位置 MAG¥(pBitmap一>NeedleCenterY));//中心位置Y GUI—MEMDEV—DrawAuto()是绘图的主函 数,其开发思路如图4所示,可得函数的实现为: int GUIMEMDEV——DrawAuto(GUI—BITMAP GUI—UNI —PTR pBitmap) { GUI—RECT rTemp; / 创建一个测量设备,在其上的绘制只是一个 哑绘制,目的是得到要绘制的图形在屏幕中的 矩形范围 / GUI—HMEM hMem=GUI—MEASDEV—Create(); if(!hMem){return 1;} / 选择测量设备作为绘图的目标 / GUI—MEASDEV—Select(hMem); / 测量应绘制的区域 / if((pBitmap一>AutoDev).FirstCal1) {/ 第一次调用时,把图3a中的表盘底图和指 针依次绘制到缓存里面 / / 测量整个画面区域 / / DrawFixed=1要绘制静止部分画面 / (pBitmap一>Param)。AutoDevlnfo.DrawFixed= 1; Draw(pBitmap);/¥绘制全部画面{/ GUI—MEASDEV—GetRect(hMem, &(pBitmap一>AutoDev.rView)); / 只测量变化部分的区域 / GUI—MEASDEV—ClearRect(hMem);//清除设备 (pBitmap一>Param).AutoDevlnfo.DrawFixed= 0; Draw(pBitmap)./¥只绘制动态指针画面}/ / 测量指针区域并用作下一次表盘显示时使 用 / GUIMEASDEV———.GetRect(hMem, &(pBitmap一>AutoDev.rPrev)); }else{/ 只测量变化部分的区域 / Draw(pBitmap);/ 只绘制动态指针画面 / / 得到当前画面指针矩形区域,也即图3c标号 4对应的矩形区域 / GUI—.MEASDEV——GetRect(hMem, &(pBitmap一>AutoDev.rView)); rTemp=(pBitmap一>AutoDev.rView); / 把当前指针矩形区域(图3c标号4对应的矩 形区域)与上一幅画面指针矩形区域(图3c标 号2对应的矩形区域)合并 / GUI—MergeRect(&(pBitmap一>AutoDev. rView), \ 5l4 &(pBitmap一>AutoDev.rView), &(pBitmap一>AutoDev.rPrev)); 化工自动化及仪表 第39卷 指定的仪表盘发送指针旋转角度信息。 其函数实现如下所示: / id为仪表id号(0~6),Data为仪表角度数据¥/ void LR—pBitmap一>AutoDev.rPrev=rTemp: LCDSendDataToAuto(UCHAR id,USHORT GUIMEASDEV—Delete(hMem);/}删除测量设 Data) 备 / { / 下面实现真正的画图 / (pBitmap一>Param).AutoDevInfo.DrawFixed= l; / 使仪表指针转动的代码实现 / } / 使用分片存储设备机制,将数据拷贝到LCD 上 / GUIMEMDEV—4 结束语 笔者主要介绍了对虚拟仪表盘测试的硬件结 CopyToLCD(hMD); 构、LPC2478与众福液晶屏的接线方式和 LPC2478的LCD控制器配置参数。详细分析了 虚拟仪表盘静态画面和动态画面的特点并用C 语言实现了动态指针流畅、非闪烁的运行。通过 对汽车行业和电力行业实地调查了解,虚拟仪表 (pBitmap一>Param).AutoDevlnfo.DrawFixed= 0; pBitmap一>AutoDev.FirstCall=0: return 0; } 盘得到了广泛好评,仪表盘不但能传递车速及转 速等这些简单信息,更加成为了一个信息枢纽,实 现了真正的人机交流。基于此应用,笔者相信在 3 试验结果 对LPC2478的LCD控制器正确配置后,依据 仪表盘设计的原理及软件实现的分析,得到如图 5所示主页面图,总共创建了7个仪表盘,可通过 仪表盘的唯一标示id号来识别不同的仪表,并向 不久的将来,电子行业的机械式仪表也必将被虚 拟仪表所代替。 参 考 文 献 [1]Labrosse J J.Microc/OS一1I—The Real Time Kernel [M].2nd.USA:CMP Book,2002. 叶斌,杨大春,等.数字TFT—LCD驱动电路实 [2] 任光,验研究[J].液晶与显示,2006,21(1):87~89. 江海河.tzC/GUI在嵌入式测控系统中的移植与 [3] 史萌萌,应用[J].嵌入式系统应用,2OO7,33(11):23~2,4. 刘修峰,任姣,等.基于ARM的智能磷酸根 [4] 陆晓春,分析仪的设计[J].化工自动化及仪表,2010,37 (11):66~69. 张栓记.基于ARM的嵌入式信息检索系统 [5] 夏玉杰,设计和实现[J].化工自动化及仪表,2010,37(1): 图5 部分主界面 76~78. Design of Virtuallnstrument PaneI Based on IJCG U I YANG Cun—xiang,ZHANG Chun—lei,PANG Yong・chao (Henan Provincial Key Laboratory of Information Appliance,School of Electrical and Information Engineering,Zhengzhou University of Light Industry,Zhengzhou 450002,China) Abstract Hardware configuration of ARM7 LPC2478 chip.based virtua1 instrument panel was introduced.in— cluding the connection between LPC2478 chip and LCD,as well as LCD controller initial configuration;having auto-device object and banding memory device in IxCGUI integrated,the screen flicker in redrawing images on LC D was solved.The C language used to implement GUI development and control can benefit the code in porta‘ bility and reliability. Key words virtual instrument panel,LPC2478,I ̄CGUI,auto-storage device 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务