基于嵌入式图形系统μc/GUI的应用研究
<TABLE class=main_tdbg_575 style="WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR>
<TD id=fontzoom style="WORD-BREAK: break-all" vAlign=top colSpan=2 height=300><STRONG> GUI 在嵌入式系统或实时系统中的地位<BR><BR></STRONG>       越来越多的市场需求数据显示,包括 PDA、娱乐消费电子、机顶盒、DVD等影音设备、WAP 手机等高端电子产品得到广泛应用,原先仅在军工、工业控制等领域中使用的GUI图形系统,受到越来越多的关注。<BR><BR>       对于轻量级 GUI 的系统而言,对 GUI 的要求相对较低,如传统51类型单片机这类系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和 GUI 之上,如 Windows 或 X Window。目前此类系统都直接使用原有编程手段,采用比较简单的手法实现 GUI。对于太过庞大和臃肿的GUI系统而言,μc/GUI这类可运用于此类资源较紧张的轻型 GUI 的需求更加突出。
<P><STRONG>       μc/GUI简介及其配制</STRONG><BR><BR>       μc/GUI是美国Micrium公司出品的一款针对嵌入式系统的优秀图形软件。它是为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器而设计的图形用户接口,它适用单任务或是多任务系统环境。架构基于模块化设计,由不同的模块中的不同层组成。包括液晶驱动模块,内存设备模块,窗口系统模块,窗口控件模块,反锯齿模块和触摸屏及外围模块。其主要特性包括丰富图形库,多窗口、多任务机制,窗口管理及丰富窗口控件类(按钮、检验框、单/多行编辑框、列表框、进度条、菜单等),多字符集和多字体支持,多种常见图像文件支持,鼠标、触摸屏支持,灵活自由配制等特性。<BR><BR></P>
<P align=center><IMG style="WIDTH: 300px; HEIGHT: 159px" height=159 alt=μc/gui模块及开发套件 hspace=0 src="http://www.dzdqw.com/jishu/UploadFiles_9637/200610/20061010225422844.gif" width=300 border=0><BR>图1  μC/GUI模块及开发套件<BR></P>
<P>       在开发套件上,μc/GUI提供众多工具辅助开发,包括位图转换器,字体转换器,μc/GUI Viewer和非常完善的基于PC平台的模拟器,如图1所示,其中μc/GUI核心模块和LCD驱动模块是必须的,其他均是可配置可选择模块。由于μc/GUI并非针对某一平台而设计,它可以运行于所有支持ANSI C的平台上,所以在PC上调试成功的应用程序可以原封不动的移植到平台上,避免繁琐的片上调试过程。<BR><BR>       μC/GUI可以在任何的CPU上运行, 能够适应绝大多数的使用黑白或彩色LCD的应用,它提供非常好的允许处理灰度的颜色管理。还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系。在μc/GUI的最初典型配制可包括是否需要操作系统支持,是否需要内存设备支持,是否需要窗口支持,是否需要抗锯齿支持等众多选项,这对于GUI的定制和GUI的体积是非常重要的。小型系统需求RAM100bytes,堆栈500bytes,ROM10kbytes,完全满足资源非常紧张的系统之中。</P>
<P><STRONG>       mc/GUI移植重点和应用程序开发<BR><BR></STRONG>       (1) 首先定义GUIConf.h和LCDConf.h这两个文件,前者是μc/GUI功能模块和动态存储空间(用于内存设备和窗口对象)大小,默认字体设置等基本GUI预定义控制的定义。后者LCDConf.h为LCD大小,控制器类别,总线宽度,颜色选取等LCD参数控制文件。GUI/CORE/LCD_ConfDefaults.h文件内可以找到所有囊括LCD配制默认选项,包括LCD屏个数,控制器个数 ,调色板,屏幕反向设置等众多配制选项。如果配备触摸屏可以通过GUITouchConf.h进行配制,根据触摸屏及其控制芯片编制以下几个函数<BR><BR>       void TOUCH_X_ActivateX (void);// 准备Y轴数据测量<BR>       void TOUCH_X_ActivateY (void);// 准备X轴数据测量<BR>       int  TOUCH_X_MeasureX(void); //  根据AD转换结果返回X的值<BR>       int  TOUCH_X_MeasureY(void); //  根据AD转换结果返回Y的值<BR>       <BR>       以上几个函数在GUI_TOUCH_Exec()会被调用。<BR><BR>       (2) 对于LCD自带控制器类别的液晶屏,通过LCDConf.h中的总线接口和寄存器接口进行硬件接口的配制和定义。对于片上集成LCD控制器平台而言,通过对片内LCD控制器寄存器的设置来配制LCD接口信号。在一般的LCD中需要配制的LCD接口信号包括VFRAME帧同步信号,VLINE线同步脉冲信号,VCLK象素时钟信号,VM信号和数据位不等的象素点数据输出信号。<BR><BR>       (3) LCD驱动编程的实质是液晶屏上的点对应的显存编程,最底层调用函数为画点函数,用户可根据自身平台情况根据总线接口和寄存器接口或者LCD控制器寄存器进行操作。_SetPixel(),_GetPixel(),XorPixel()为最底层直接对显存操作函数。mc/GUI提供部分控制器驱动,文件为GUI/LCDDriver/LCDSLin.c,如sed1335,T6963等简单LCD控制器。核心函数为LCD_Write(). _SetPixel()调用LCD_Write()写显存。<BR></P></TD></TR>
<TR>
<TD class=Article_tdbgall align=right colSpan=2>
</TD></TR></TBODY></TABLE>
相关资讯