一种嵌入式GUI的研究与应用

发布者:JoyfulJourney最新更新时间:2011-12-22 来源: 电子产品世界关键字:GUI 手机看文章 扫描二维码
随时随地手机看文章

引 言

    随着半导体技术和信息技术的飞速发展,各式各样的嵌入式系统产品已经渗入到人们生活的每一个角落。小到手机、MP3、MP4、数码相机、机顶盒等产品,大到汽车、数控机床、火箭等产品。嵌入式GUI(Graphical User  Interface)作为嵌入式系统的应用软件,已经成为当今图形用户界面领域的发展焦点。[2]

1  GUI 的概述

GUI以一种以图形化为基础的用户界面,使用统一的图形操作系统,如可移动的视窗、选项与鼠标,作为用户与操作系统之间的中介。GUI最重要的优势在于使用户摆脱了在命令行提示符下与操作系统进行交互的方式,用户可以仅仅通过鼠标点击来实现熟悉程序的操作,而且由于图表、对话框等的引入,使得操作直观形象。GUI已成为一种用户与计算机交互的标准。包括Microsoft的视窗系统、Unix的Motif、Linux的桌面系统GNOME。

在计算机硬件平台下的GUI模型一般如图1所示:

uC/GUI是由Micrium公司专门针对嵌入式系统开发的一款图形开发系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及 LCD 控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意 LCD 控制器和 CPU 下任何尺寸的真实显示或虚拟显示。

对于开发uC/GUI图形应用不需要什么目标系统, 大部分的图形应用开发都可以在模拟器下进行; 但是最终的目的是通常还是在目标系统上运行程序。

目标系统(硬件):

[1].CPU(8/16/32/64位)。

[2].必要的RAM和ROM 存储。

[3].LCD 显示器(任何类型及分辨率的)。

对于内存的需求取决于你选用的 UCGUI 的功能模块以及你所使用的目标系统上的编译器的效率。 内存的占用量无法估计准确的值, 下面就一些的数值适用于多数的目标系统。
 

注:①小型系统指不包含窗口管理功能,大型系统指包含窗口管理及各种窗体控件功能。

②ROM的需求量随着应用程序中使用的字体数目而增长。

2  基于S3C44B0X处理器的嵌入式系统的基本组成

三星公司推出的16/32位RISC处理器S3C44B0X为手持设备和一般应用提供了高性价比和高性能的微控制器解决方案。为了降低成本,同时增强稳定性,S3C44B0X提供了丰富的内置部件,包括:8KB Cache和 内部SRAM,LCD控制器等,其主频可以达到66MHz,速度几乎相当于486CPU,而且扩展了完整丰富的外围设备的接口,图2是典型的系统的框图。
 

 图2   系统框图

采用三星的S3C44B0X开发通用的嵌入式系统,S3C44B0X的运行方式通常有两种:一种是有操作系统的,由于操作系统所占用的空间比较大,所以Flash里面装的是系统引导程序,通常称为Boot Loader,是在系统复位后执行的第一段代码,相当于PC上的BIOS,完成系统硬件的初始化,包括时钟的设置、存储区的映射等,设置堆栈指针,然后跳转到操作系统内核的入口,将系统控制权交给操作系统,在此之后系统的运行和Boot Loader 再无任何关系。Boot Loader独立于操作系统,必须由用户自己设计,它的实现高度依赖于硬件,包括处理器的体系结构、具体型号、硬件电路板的设计。

另一种是无操作系统的,系统的初始化以及主程序都是在Flash内,它与S3C44B0X的Bank0相连,上电复位后系统使程序从0x00000000开始运行。

3  利用uC/GUI开发GUI应用程序的基本方法

由于uC/GUI提供了源代码,因此可以很容易地将它移植到各个平台下,使用时,只要将uC/GUI的软件压缩包解压缩到一个目录下就可以了。

3.1 uC/GUI的结构

uC/GUI的软件体系结构如图3所示。uC/GUI函数库为用户的应用程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、圆、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。μC/GUI函数库可以通过GUI_CONf.h文件进行配置,配置的内容包括是否采用内存设备,是否采用窗口管理器,是否支持操作系统、触摸屏、以及配置动态内存的大小等。
 

图3  uC/GUI的软件体系结构

3.2   利用uC/GUI开发应用程序的步骤

由于uC/GUI提供了源代码,在开发应用程序时,用户可以首先将核心文件、LCD驱动文件和需要的字体文件包含在自己的工程里,然后再根据实际的硬件需要,包含内存设备输入设备控件和窗口管理部分。

具体可以分为以下几步:

⑴按照实际需要,定制自己的uC/GUI开发环境。其中包括对上述目录的筛选,或对目录中文件的筛选。

⑵指定硬件设备的地址,编写接口驱动代码。这里需要修改LCD_Conf.h文件。

⑶编译、链接、调试示例程序。

⑷修改示例程序并测试,增加需要的功能。

⑸如果准备开发多任务应用,则需要修改GUI_MAXTASK和GUI_OS宏,实现uC/GUI与操作系统的结合。

⑹编写自己的应用程序。

使用uC/GUI开发应用程序时,目标系统不是必须配备的,因为uC/GUI提供了一个模拟器,用户可以在模拟器上面看到应用程序的执行的结果。所以,对于开发环境,uC/GUI仅要求有一个符合ANSI标准的“C”语言编译器。至于C++编译器,它不是必须的,但是如果用户使用C++语言来编写应用程序,那就需要一个C++编译器。[1]

因此,在Windows系统下只要安装了Microsoft Visual C++就可以运行uC/GUI的模拟器工程(工程名一般为Simulation.dsw),然后将该工程中的Application文件夹清空,加入自己编写的源文件,编译链接就可以看到运行结果。

3.3应用实例

下图是用uC/GUI开发应用程序的一个实例,该程序是显示汽车运行时发动机转速的一个界面。

图4 用户界面图

黑色的背景是这个LCD的窗口区域,大小为640*480。先利用画线函数绘制基本的弧线,再利用填充函数填充相应的背景颜色,最后用一个分片存储设备执行一个指定的绘图函数,在这种情况下,在一段时间内只有一小部分要更新。

STatic void DemoScale(void)

{

int Cnt;

int tDiff, t0 = GUI_GetTime();

PARAM Param;  /* 绘图函数的参数 */

GUI_AUTODEV AutoDev; /* 分片存储设备对象 */

GUI_SetColor(GUI_WHITE); /*设置颜色*/

GUI_SetFont(&GUI_Font8x16);/*设置字体*/

GUI_DispStringHCenterAt(“Scale using GUI_AUTODEV-object”, 160, 0);

GUI_AA_EnableHiRes();/* 启动高分辨率用于抗锯齿 */

GUI_AA_SetFactor(MAG);

GUI_MEMDEV_CreateAuto(&AutoDev); /* 建立 GUI_AUTODEV 对象 */

/* 显示在一个固定时间上的指针 */

for (Cnt = 0; (tDiff = GUI_GetTime() - t0) < 24000; Cnt++);

{

/* 获得数值用于显示一个多边形来表示指针 */

Param.Angle = GetAngle(tDiff)* DEG2RAD;

GUI_RotatePolygon ( Param.aPoints,

aNeedle,

countof(aNeedle),

Param.Angle);

GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &Draw, &Param);

}

4  结束语

本文只是简单展示了uC/GUI在开发图形用户界面上的应用,其巨大的应用潜力还有待进一步的研究。相信随着计算机渗透到人类工作和生活的各个方面,以嵌入式系统为核心的后PC时代的到来,uC/GUI的应用前景也将更为广阔。

关键字:GUI 引用地址:一种嵌入式GUI的研究与应用

上一篇:基于嵌入式系统的远程参数测量的设计
下一篇:深入研究嵌入式web服务器视频监控的应用

推荐阅读最新更新时间:2024-03-30 21:52

嵌入式Linux系统中的GUI系统的研究与移植
摘要:针对嵌入式Linux系统中几种常见的GUI(Graphic User Interface)系统,讨论嵌入式GUI实现的底层技术方式;详细分析Microwindows、MiniGUI、Qt/Embedded等三种GUI的实现特点、体系结构、API接口。结合这三种嵌入式GUI在以Motorola i,MX1为核心的实际应用系统中移植开发的问题,讨论移植技术与中文化技术。 关键词:嵌入式Linux GUI 应用与移植 中文化 引言 嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。另外,由于嵌入式系统硬件本身的特殊性,嵌入式G
[应用]
基于Matlab GUI的整流电路仿真设计
0 引言     整流电路是电力电子电路中出现最早的一种,它的作用是将交流电能变为直流电能供给直流用电设备,整流电路的应用十分广泛。在整流电路的设计过程中,需要对设计电路及有关参数选择是否合理、效果好坏进行验证。如果通过实验来验证,需要经过反复多次的元件安装、调试、重新设计等步骤,这样使得设计耗资大,效率低,周期长。现代计算机仿真技术为电力电子电路的设计和分析提供了崭新的方法,可以使复杂的电力电子电路、系统的分析和设计变得更加容易和有效。Matlab是一种计算机仿真软件,它是以矩阵为基础的交互式程序计算语言。Simulink是基于框图的仿真平台,它挂接在Matlab环境上,以Matlab的强大计算功能为基础,用直观的模块框图进行仿
[电源管理]
基于Matlab <font color='red'>GUI</font>的整流电路仿真设计
基于MiniGUI的数字加密电话系统GUI设计
   引言   在需要丰富人机交互信息的嵌入式系统应用中,高精度的动态图像显示非常重要。因此,嵌入式系统对GUI的实时性和稳定性的要求也越来越明显。但是,动态图像的抖动和刷新延迟的问题在嵌入式系统中经常出现,影响系统的显示效果   国产图形用户界面系统MiniGUI提供完备的多窗口机制和类Win32消息传递机制,便于实现多个进程间的消息传递。而且具有占用内存少、可移植性好等特点,因此在嵌入式领域中被广泛应用。但在实际应用中,笔者发现了两个问题:一是用MiniGUI的animation控件实现时出现动画抖动,二是显示较多图片的窗口刷新时屏幕闪烁,严重影响屏幕的显示效果。为解决以上两个问题,本系统采用MiniGUI的双缓冲技术和
[单片机]
基于MiniGUI的数字加密电话系统<font color='red'>GUI</font>设计
基于ARM7支持触摸屏和实时操作系统的开发与应用
  概述   随着信息技术的发展,支持图形界面的触摸操作和实时操作系统相结合的应用系统已经越来越广泛地应用到航空航天、军事、消费类电子、通讯设备等领域。mC/OS-II操作系统是一种占先式、实时操作系统(RTOS),由于其内核可拆减、可剥离性,使得它在实时控制领域中有着广泛的应用。它不仅减小了因为系统硬件设计缺陷带来的不可靠因素,而且增强了系统的控制实时性,从软件方面进一步增强了ARM控制系统的性能。另外,新版本的mC/OS-II已经通过了FAA认证,很适合应用于对实时性要求很高的嵌入式工业控制领域,如目前应用较广泛的军用战斗机、攻击机和火控系统等。   支持图形界面操作(mC/GUI)是一种较为流行的人机交互系统,它能够提供
[单片机]
基于ARM7支持触摸屏和实时操作系统的开发与应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
最新工业控制文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved