需要的功能;(5)编写自己的应用程序;限于篇幅限制,本文只给出移植的核心步骤:接口驱动程序代码的编写。
4.2 μC/GUI与输入输出设备驱动接口模块设计
本文以LCD驱动接口模块设计为例介绍在μC/GUI移植过程中LCD驱动程序的编写,以最终实现图形显示。
驱动程序主要是LCD初始化,这个函数完成对44B0X LCD控制器的配置、显存的映射等。本文以笔者使用320×240彩色LCD为例给出初始化程序的编写。具体如下:
void LCD_Init(void)
{int i;
LCD_DisplayOpen(FALSE);// /* 关LCD显示 */
for(i=0; i320*240; i++) /* 初始化显存 */
*(pLCDBuffer256+i) = 0x0;
rPDATD = 0xff;;
rPCOND = 0xaaaa; /* PDATD[7 :0]: 此处初始化为0xff */
rPUPD = 0x00; /* PCOND[15:0]: 配置为功能端 */
/* PUPD [7 :0]: 允许相应位的上拉电阻(0=允许, 1=禁止) */
rLCDCON1 = (0)|(DISMODE5)|(WDLY8)|(WLH10)|(CLKVAL12);
/* disable,8B_SNGL_SCAN,WDLY=16clk,WLH=16clk, CLKVAL=10*/
rLCDCON2 = (LINEVAL)|(HOZVAL10)|(LINEBLANK21);
/* 使用彩色模式, LCDBANK=0xc000000, LCDBASEU=0x0 */
rLCDSADDR1= (MODESEL27) | (((U32)pLCDBuffer256>>22)21) |
M5D((U32)pLCDBuffer256>>1);
rLCDSADDR2= M5D(((U32)pLCDBuffer256+(LCDWIDTH*LCDHEIGHT))>>1) |
(MVAL21);
rLCDSADDR3= PAGEWIDTH | (OFFSIZE9);
rREDLUT = 0xfdb97531;
rGREENLUT = 0xfdb97531; /* 设置红绿蓝三色的颜色值*/
rBLUELUT = 0xfb73;
rDITHMODE = 0x0;
rDP1_2 = 0xa5a5;
rDP4_7 = 0xba5da65;
rDP3_5 = 0xa5a5f;
rDP2_3 = 0xd6b;
rDP5_7 = 0xeb7b5ed;
rDP3_4 = 0x7dbe;
rDP4_5 = 0x7ebdf;
rDP6_7 = 0x7fdfbfe; /* 使能8位单扫描/
rLCDCON1 = (1)|(DISMODE5)|(WDLY8)|(WLH10)|(CLKVAL12);
Delay(5000);
LCD_BkLight(TRUE); /* 开背光 */
LCD_DisplayOpen(TRUE); /* 打开LCD显示 */}
完成如上LCD驱动以后, 再设置相应的中断服务子程序(IS), μC/GUI即可以稳定地运行在S3C44B0X硬件平台上。
4.3 μC/GUI配置文件参数的修改
主要是对配置文件LCDConf.h的修改,针对本文使用的320×240彩色LCD,就要作如下修改LCDConf.h的内容:
#define LCDCONF_H
#define LCD_XSIZE (320) /* LCD水平分辨率 */
#define LCD_YSIZE (240)/* LCD竖直分辨率 */
#define LCD_BITSPERPIXEL (8)
涉及到LCD寄存器常量的设置等这里不再赘述。另外,本文使用的硬件平台配有1×4键盘,键盘连接到S3C44B0X的I/O口上,在μC/GUI的移植过程中,对键盘的使用主要是通过检测相对应的I/O口的电平(0或1)来进行对键盘按下与否的判断。
5. GUI用户模型设计
有了以上基于S3C44B0X的μC/GUI移植过程,用户就可以按照自己的要求设计GUI。图3所示为笔者设计的一个测试用GUI,体现了GUI设计的基本要素和思想。
图3.3 测试用户界面图
其中,图a为测试LCD位图和键盘的GUI,包含滑动按钮和固定按钮以及颜色测试条;图b为常用的正弦波测试图,以红色为背景,格线和波形图采用白色。
6.小结
在分析μC/GUI原理及功能的基础上, 详细讨论了嵌入式图形用户界面在基于S3C44B0X目标平台上的移植过程,并给出移植核心程序——驱动接口程序。程序经检测成功运行于硬件平台,且运行稳定,实时性强。
本文作者创新点在于融合了μC/GUI移植简便、使用方便灵活、功能强大和ARM处理器功耗小、便携、代码执行效率高等优点。代码稍加修改即可广泛用于智能仪表、便携式设备等智能终端,有良好的应用前景。
参考文献:
[1] 李岩,荣盘祥. 基于S3C44B0X嵌入式uClinux系统原理及应用[M].北京:清华大学出版社,2005.
[2] 杨光友,周国柱,张道德,丁毅.嵌入式测控仪器图形界面设计[J].中国仪器仪表.2004.(10):36-39
[3] 江俊辉.基于ARM的嵌入式系统硬件设计[J]. 微计算机信息,2005 年21卷第7-2期120页.
[4] μC/GUI用户手册[M].Micrium公司,2003.
|