毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

arm嵌入式系统设计论文 第12页

更新时间:2009-4-12:  来源:毕业论文
arm嵌入式系统设计论文 第12页
用户界面 μC/GUI的实现       
6.1 μC/GUI简介
μC/GUI是Micrium公司开发的一个商用通用型嵌入式应用图形软件,具有模块化的特点。它可以用来为任何使用图像LCD的应用程序提供一个高效的、独立于处理器和LCD控制器的图形用户接口。无论是在单任务操作系统还是在多任务操作系统中,μC/GUI都可以工作得很好,μC/GUI具有以下特性。
1.具有很强的可移植性,由于μC/GUI采用分层结构,即具有驱动接口层和应用层,而且μC/GUI的代码全部都是用C语言编写的,因此它可以方便地移植到各种CPU下使用。
2.μC/GUI对LCD显示器的支持很好,并且有常见的2D图形函数库和窗口管理功能,而且占用RAM和ROM的空间很小。在不同的应用中,μC/GUI需要的资源如表6-1所示。
表6.1μC/GUI需要的资源
 
3.适合应用于嵌入式系统,由于μC/GUI需要的资源比常见的操作系统图形模块要小很多,再加上它提供了源代码,因此很适合用于嵌入式系统中Gul应用的开发。
由于μC/GUI提供了源代码,因此可以很容易地将它移植到各个平台下。使用时只要将μC/GUI的软件压缩包解压缩到一个目录下就可以了。μC/GUI的主要目录注释如表6-2所示。
表6.2μC/GUI的目录说明
 
6.2 用μC/GUI开发GUI的方法  
由于μC/GUI提供了源代码,在开发应用程序时,用户可以首先将核心文件、LCD驱动文件和需要的字体文件包含在自己的工程里,然后再根据实际的硬件需要,包含内存设备、输入设备、空间和窗口管理部分。具体开发步骤可以分以下几步:
1.按照实际需要,定制自己的μC/GUI开发环境,其中包括对上述目录的筛选,或对目录中文件的筛选;
2.指定硬件设备的地址,编写接口驱动代码,这里需要修改LCDConf.h文件;
3.编译、连接、调试例子程序;
4.修改例子程序并测试,增加需要的功能;
5.如果准备开发多任务应用,则需要修改GUI_MAXTASK和GUI_OS宏,
实现μC/GUI与操作系统的结合;
6.编写自己的应用程序。
6.3 μC/GUI在系统中的应用
由于μC/GUI不支持ARM7处理器S3C44B0X,因此,要想把μC/GUI移植到系统平台上,需要自己完成μC/GUI在系统硬件平台上的各种驱动,具体包括S3C44B0X LCD控制器的正确初始化,画点、画线、填充等LCD驱动函数的编写。
1. LCD控制器初始化编程
S3C44B0X中内置的LCD控制器逻辑框图如图6-2所示,该控制器的REGBANK具有18个可编程寄存器,用于配置LCD控制器。系统中LCD面板的连接使用的是8位单行扫描模式,接线图如图6-3所示。S3C44B0X LCD控制器上的正确初始化包括各种控制寄存器的正确配置和显存设置与映射。
 
图6. 2 S3C44B0X LCD控制器逻辑框图
 
图6. 3 LCD控制器与KCSO57QV1AJ接线图
LCD的初始化源码如下:
void LCD_Init_Controler()
{
int i,j;
if((U32)frameBuffer256==0)
{
frameBuffer256=(unsigned int(*)[SCR_XSIZE/4])malloc(SCR_XSIZE*
SCR_YSIZE) ;
}
for(j=0;j<240;j++)
for(i=0;i<80;i++)
{
frameBuffer256[i][j]=0x0;//显存清零
}
rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<10)|(CLKVAL_COLOR<<12) ;
//8位单行扫描,WDLY=8clk,WLH=8clk
rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(IO<<21) ;
rLCDSADDR1=(0x3<<27)|(((U32)frameBuffer256>>22)<<21)|((U32)frameBuffer256>>1)&0x1fffff) ;//256色,LCDBANK地址,LCDBASEU地址
rLCDSADDR2=M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))>>1))|(mval<<21) ;
rLCDSADDR3=(LCD_XSIZE/2)|(((SCR_XSIZE*LCD_XSIZE)/2)<<9) ;
//为了得到更好的显示效果,下面寄存器的值须进行适当调整
rREDLUT=0xfdb86420;
rGREENLUT=0xfdb86420;
rBLUELUT=0xfa50;
751com.cn
rDP4_7=oxba5da65;
rDP3_5=oxa5a5f;
rDP2_3=oxd6b;
rDP5_7=oxeb7b5ed;
rDP3_4=ox7dbe;
rDP4_5=ox7ebdf;
rDP6_7=ox7fdfbfe;
rLCDCON1=(1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12 ;
}
2.LCD驱动函数编程
在LCD的驱动函数中,最底层的驱动函数是画点函数和取点函数即static void SetPixel(int x,int y,LCD_PIXELINDEX color); unsigned int GetPixellndex(int x,int y);在μC/GUI中显示字、图形都与这两个函数有关,它们直接与显存打交道。当μC/GUI的GUI_SUPPORT_MEMDEV设为1,显存可分两级显存,一级显存用专用LCD DMA向LCD传输数据,无需CPU介入;二级显存则是一级显存的副本,当显示动态图像时,先在二级显存将一帧的内容全部刷新,再更新一级显存的内容。主存的更新速度很快,因此可得到较好的显示效果,减少了闪烁和不连贯。画点、取点是对一级显存中的彩色象素点进行定位。画点函数源码如下:
static void SetPixel(intx,int y,LCD_PIXELINDEX color)
{
if(x<SCR_XSIZE&&y<SCR_YSIZE)
frameBuffer256[(y)][(x)/4]=(frameBuffer256[(y)][x/4]&~
(oxff00000>>((x)%4)*8))|((color)<<((4-1-((x)%4))*8)) ;
}
取点、画线和填充等函数可依此得到。为了显示出字符和位图,还须参考μC/GUI的LCDMemC.c,写DrawBitLinelBPP、DrawBitLine2BPP和DrawBitLine4BPP函数,并配置GUIConf.h和LCDConf.h中的常数。
当在LCD上看到有字符输出时,μC/GUI的LCD移植部分基本成功。由于μC/GUI中还有一些跟时间相关的调用如GUI_X_Delay()等,这些函数需用到系统时间变量OS_TimeMS,该变量可由μC/OS-II操作系统来文护更新。
上面只是给出了我们移植内容的关键部分,完成了上面的各个驱动函数,就可以采用μC/GUI的demo程序对所移植的μC/GUI进行测试。

 << 上一页  [11] [12] [13] 下一页

arm嵌入式系统设计论文 第12页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。