基于嵌入式轻量级GUI设计实现 GUI设计原理.docx
- 文档编号:24300584
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:5
- 大小:393.04KB
基于嵌入式轻量级GUI设计实现 GUI设计原理.docx
《基于嵌入式轻量级GUI设计实现 GUI设计原理.docx》由会员分享,可在线阅读,更多相关《基于嵌入式轻量级GUI设计实现 GUI设计原理.docx(5页珍藏版)》请在冰豆网上搜索。
基于嵌入式轻量级GUI设计实现GUI设计原理
基于嵌入式轻量级GUI设计实现GUI设计原理
1引言
大多数嵌入式系统,仅提供几个按键和像素点较少的LCD,同时处理器运算能力有限(如8/16位单片机),不宜运行商用的GUI图形库(如uC/GUI、miniGUI、QT等),但仍然得为用户提供GUI功能。
一个具有代表的硬件平台如下,提供6个输入按键:
上移、下移、左移、右移、确定和取消;有一LCD,不限制物理尺寸与像素点数。
本文描述一种基于上述硬件平台的实现简单的GUI设计原理,它提供窗口系统因此具备较好地显示效果。
2硬件设计
一般LCD显示模块包括三部分:
控制器、驱动器和液晶显示屏,同时提供外部引脚供嵌入式处理器连接。
以TRULY公司LCD显示模块MST-G320240DBSW-75W-E为例,它的控制器为RA8835,模块的引脚定义如下表1。
[1]
表1LCD引脚示例
硬件设计需要将LCD模块引脚正确连接到处理器控制引脚上。
对于大部分单片机来说,将LCD模块引脚连接到普通I/O口是比较好的选择,如图1显示了AT89S52微处理器连接20引脚的LCD模块的原理图。
图1MCU的I/O连接LCD模块
另一种高级接线方式是将它连接到AsynchronousMemory接口(如果处理器具备),这样一来操作LCD就像访问普通的存储器(如FLASH)一样,极大提供便利性,如图2所示。
图2ASYNCMEMORY连接LCD模块
3LCD驱动
LCD控制器是LCD模块的核心,驱动一个LCD模块本质就是对LCD控制器写一系列指令的过程。
[2]
图3总线时序
图3是LCD控制器RA8835的总线时序。
对于普通I/O口连接LCD的方式,驱动程序需要对相应引脚按顺序产生高低电平,如下代码所示:
(省略对引脚宏定义的语句)
voidlcd_cmdwrite(unsignedcharcmd)
{
LCD_CS=0;/*EnableaccessLCD*/
LCD_CD=1;/*0=Data;1=Command*/
LCD_WR=0;/*Enablewrite*/
LCD_RD=1;/*Insurereadsignalisinvalid*/
LCM_DATA=cmd;/*Putcommandvalueintoport*/
LCD_WR=1;/*DisableWrite*/
LCD_CS=1;/*DisableaccessLCD*/
}
如果嵌入式处理器的AsynchronousMemory接口连接到LCD总线,需要设置该接口的延时时间,以便于符合图3中LCD的总线时序,然后驱动将会简化成写外设内存。
针对图2中接线,写LCD命令寄存器的驱动代码如下:
#defineLCD_START_ADDR0x20100000/*BANK1*/
#defineLCD_DATA_ADDR(LCD_START_ADDR)/*Data*/
#defineLCD_REG_ADDR(LCD_START_ADDR+2)/*CMD*/
#definep_wLcdDataAddr((REG16*)LCD_DATA_ADDR)
#definep_wLcdRegAddr((REG16*)LCD_REG_ADDR)
#defineWR_LCD_REG(wRegVal)*p_wLcdRegAddr=wRegVal;
LCD控制器指令一般组织成寄存器格式:
寄存器名+数值。
仍以上例为参考,控制器RA8835设置光标地址的指令为:
寄存器名(CSRW)0x46,数值为2个字节(光标位置)。
其中寄存器名写入指令输入缓冲器内(即A0=1),数值写入数据输入缓冲器内(即A0=0)。
在一个LCD上绘制任何图形或文件的基础是绘制像素点,因此首先需要实现的功能是操作像素点。
操作一个像素点的接口是:
X坐标、Y坐标和动作(点亮或擦除),算法如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于嵌入式轻量级GUI设计实现 GUI设计原理 基于 嵌入式 轻量级 GUI 设计 实现 原理