新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > STM32平台的μC/GUI移植与图形界面设计

STM32平台的μC/GUI移植与图形界面设计

作者: 时间:2013-07-21 来源:网络 收藏

2.2.2 LCD驱动程序的编写
LCD的驱动程序在GUI/LCDDriver目录下,在本次移植中编写的ili9320.c驱动文件主要定义了GUI与LCD的硬件接口函数,包括画点、线、矩形、多边形、位图等二维图形的函数等等。;C/GUI所有的系统函数都是通过调用这些硬件接口来实现其功能的,而这些接口函数又可以通过调用画点函数来实现,可以认为几乎所有的;C/GUI显示功能都是通过最终调用画点函数来实现的。所以笔者的LCD驱动程序重点在画点函数的编写。代码如下:

h.JPG
3.2 ;C/GUI实现的两种解决方法
μC/GUI带有多种常用的ASCII字体,也支持UNICODE字符显示,考虑到嵌入式系统内存资源有限,没有装入汉字库,可以根据系统的实际需要建立一个小型汉字库,以解决汉字的显示问题。在μC/GUI下笔者提出两种实现的解决方法。
(1)在μC/GUI的字库结构体中建立一种新的字体
μC/GUI的文字显示是通过查找字模的方式实现的。字库中的每个文字都有其对应的字模,所有的字模都是由GUI FONT和GUI FONT PORT这两个结构体来管理的。从汉字库中选取必需的汉字组成字库,并将汉字对应的不连续汉字机内码映射到一个连续区域。此时需要建立一个GUI_FONT_PROP结构来管理所有的汉字。例如,要实现“设置”这2个字,具体的伪代码如下:
i.JPG
(2)直接建立汉字库,通过LCD驱动直接显示汉字
该方法通过将汉字的机内码和汉字点阵组合成一个汉字字模结构体,然后选取所必需的汉字,按照汉字字模结构体的方式存放在汉字库数组中,然后通过调用一个“汉字搜索函数”来搜索这个汉字库数组的机内码即可确定相应的汉字,并把汉字对应的点阵通过LCD驱动直接
进行显示。
j.JPG
上述的两种方法都能在嵌入式的中实现中文显示,方法二为通过LCD驱动直接显示汉字,适合在窗体中显示汉字,而不能在控件上直接显示汉字。虽然可以用叠加的方法(即先画一个控件,然后再在上面显示汉字),但是这样处理很不方便。方法一是在μC/GUI的字库中建立了一种新的字体,因此在控件上显示汉字时直接调用μC/GUI函数即可,不会出现上述问题,因此笔者推荐使用方法一实现μC/GUI的
3.3 采用解决图形显示的闪烁问题
采用可以有效地防止显示屏在对有对象重叠的绘图操作时的闪烁现象。没有使用时,绘图操作直接写屏,屏幕在绘图操作执行时更新,当不同的更新在执行时会产生闪烁。如果这样的操作使用一个存储设备的话,那么所有的操作在存储设备内执行,具有无闪烁的优点。μC/GUI的存储设备是一个可选的软件项目,为了优化软件的性能,提高图形的显示效果,需要采用存储设备技术。μC/GUI中存储设备的使用一般流程为建立存储设备、激活、执行绘图操作将结果拷贝到显示屏显示,最后将创建的存储设备删除。

4 结论
为了验证移植丁作成功与否,需要建立一个多任务测试用例,这个用例由3个任务构成:Main Task、GUITask、APP_Task。其中:Main_ Task任务用于设置背景窗口的回调函数和建立另外两个任务;APP_Task任务用于建立一个窗口并设置其相关的属性;GUI_Task任务用于视窗管理和多级图形画面的切换。将测试用例烧写进目标板,目标板采用神舟III号STM32开发板,液晶屏为320×240像素的TFT型液晶屏幕。图2为测试用例在目标板上的运行结果。

本文引用地址:https://www.eepw.com.cn/article/147999.htm

k.JPG


结果表明,能显示中文小型字库,对有对象重叠的绘图操作时无闪烁现象,基本达到预期的目标。

万能遥控器相关文章:万能遥控器代码



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭