当前位置:文档之家› stm32 UCGUI 完美移植

stm32 UCGUI 完美移植

stm32 UCGUI 完美移植
stm32 UCGUI 完美移植

1/6

https://www.doczj.com/doc/db17154621.html,/stm32-ucgui.html About Links Invite Rss

Home / Archive Trip Share E-Factory Findpark Quickweibo Mr.YongLan here is siri ..

五十将相寻死路,生不认魂,死不认尸。

UCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。

它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。

类似程序还有国产的一个MINIGUI (https://www.doczj.com/doc/db17154621.html,/zhcn/),MiniGUI 是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucle us 等)的实时嵌入式操作系统。有机会尝试下,支持下国产,毕竟国内这样的公司不多。。

这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。但是目前来说只有这个版本的代码是最全的,包括了J PEG , MULTILAYER , MEMDEV ,AntiAlias等模块。一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。

UCGUI390a 下载

整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。。。总之移植是个累人的活

首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 TFT LCD stm32 驱动 触摸屏 两篇文章

UCGUI的文件数量很大,主要用到UCGUI390a/Start/Config 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。。。

相关文件介绍如下:

将Config和GUI下所有文件加入工程,MDK中新建工程需要划分好结构,这是UCGUI官方推荐的结构:

JPEG, MemDev , MultiLayer , Widget , Wm 这5 个文件夹的内容可以暂时不加入MDK工程。

因为这些文件起到的是扩展功能,在移植阶段可以先不添加,等到以后用到其中的功能时再选择添加。但是建议都添加进去,避免遇到各种无解问题。。

stm32 UCGUI 完美移植

作者:Changing 发表时间:09-16 04:13分类:电子相关 2 Comments 前一篇:stm32 DA 数模转换后一篇:Stm32 SWD 下载 调试配置

当然前提是在配置时要把相应的功能开关关掉,在下面的步骤中会提到。

ConverMono , ConverColor ,Core ,Font 这四个目录下的文件是不用修改的。

要修改的文件在LCDDriver ,Config 这两个目录下。

LCDDriver 是LCD的驱动接口函数文件,需要将自己的LCD驱动函数提供给UCGUI调用。

需要提供3个LCD底层驱动函数:

GB颜色值

个函数也可以不改 使用UCGUI的函数,用一个一个的像素点填充成一个矩形。也可以在底层驱动根据像素

个数直接往GRAM 中写数据,封装成函数,供这个函数调用。速度会快很多。

其他的画线画图形函数,也可以同样优化。

LCDDriver 下有三个文件, LCDDummy.c 、 LCDNull.c 和LCDWin.c。 这三个都是UCGUI LCD接口模板文件。功能一样,只是移植时修改的细节不一样。我们可以选用其中一个,稍作修改作为接口文件。以LCDDummy.c为例:

3/6

https://www.doczj.com/doc/db17154621.html,/stm32-ucgui.html LCDConf.h

配置完这两个文件,如果不启用触摸屏的话,UCGUI已经可以正常运行。

下面细讲下UCGUI触摸屏的配置,这个折腾了我好几天的“简单”问题。。

首先配置GUIToucConf.h

UCGUI 触摸屏驱动接口函数文件 GUI_X_Touch.c :

08#d e f i n e G U I _D E F A U L T _F O N T &G U I _F o n t 6x 8 /* 定义字体大小 */09#d e f i n e G U I _A L L O C _S I Z E 12500 /*分配的动态内存空间 S i z e o f d y n a m i c m e m o r y ... F o r W M a n d m e m o r y d e v i c e s */10 11/*********************************************************************12*13* C o n f i g u r a t i o n o f a v a i l a b l e p a c k a g e s 14*/15 16#d e f i n e G U I _W I N S U P P O R T 1 /* 窗口功能支持 要使用指针图标 必须打开 W i n d o w m a n a g e r p a c k a g e a v a i l a b l e */17#d e f i n e G U I _S U P P O R T _M E M D E V 1 /* 内存管理 M e m o r y d e v i c e s a v a i l a b l e */18#d e f i n e G U I _S U P P O R T _A A 1 /* 抗锯齿功能,打开后可以提高显示效果 A n t i a l i a s i n g a v a i l a b l e */19 20#e n d i f /* A v o i d m u l t i p l e i n c l u s i o n */

01#i f n d e f L C D C O N F _H 02#d e f i n e L C D C O N F _H 03 04#d e f i n e L C D _X S I Z E (240) /* l c d 的水平分辨率 X -r e s o l u t i o n o f L C D , L o g i c a l c o o r . */05#d e f i n e L C D _Y S I Z E (320) /* l c d 的垂直分辨率 Y -r e s o l u t i o n o f L C D , L o g i c a l c o o r . */06 07#d e f i n e L C D _B I T S P E R P I X E L (16) /* 16位颜色R G B 值 颜色深度*/08#d e f i n e L C D _S W A P _R B (1) /*红蓝反色交换 */09 10/* l c d 控制器的具体型号 11 *12 * 设置为 -1时 会编译L C D D r i v e r 下 L C D D u m m y .c 13 * 设置为 -2时 会编译L C D D r i v e r 下 L C D N u l l .c 14 *15 * 还需要修改L C D D r i v e r 下文件的宏定义 才可以被编译16 * e g . L C D D u m m y .c :17 *18 * #i f (L C D _C O N T R O L L E R == -1) && (!d e f i n e d (W I N 32) |d e f i n e d (L C D _S I M C O N T R O L L E R ))19 * 改为 20 * #i f (L C D _C O N T R O L L E R == -1)21 */22#d e f i n e L C D _C O N T R O L L E R -1 //设置为-1\-2,因为U C G U I 没有相应L C D 控制I C 驱动23 24#d e f i n e L C D _I N I T _C O N T R O L L E R () L C D _C o n f i g (); //绑定相关L C D 底层驱动的初始化函数

01#i f n d e f G U I T O U C H _C O N F _H 02#d e f i n e G U I T O U C H _C O N F _H 03 04/* 正点原子L C D 相关参数,不同L C D 值不同,需另测 */05#d e f i n e G U I _T O U C H _A D _L E F T 120 //最左边x 轴的A D 值,非坐标值06#d e f i n e G U I _T O U C H _A D _R I G H T 1870 //最右边x 轴的A D 值07#d e f i n e G U I _T O U C H _A D _T O P 90 //最上边y 轴的A D 值08#d e f i n e G U I _T O U C H _A D _B O T T O M 1850 //最下边y 轴的A D 值

09 10#d e f i n e G U I _T O U C H _S W A P _X Y 0 //不允许翻转

11#d e f i n e G U I _T O U C H _M I R R O R _X 012#d e f i n e G U I _T O U C H _M I R R O R _Y 013

14#e n d i f /* G U I T O U C H _C O N F _H */

01#i n c l u d e "G U I .h "02#i n c l u d e "G U I _X .h "03 04#i n c l u d e "x p t 2046.h "05//#i n c l u d e "s t d i o .h "06 07v o i d G U I _T O U C H _X _A c t i v a t e X (v o i d ) { //不用配置

08}09 10v o i d G U I _T O U C H _X _A c t i v a t e Y (v o i d ) { //不用配置

11}12 13i n t G U I _T O U C H _X _M e a s u r e X (v o i d ) {

14 15 u 16 v a r = A D S _R e a d _X Y (C M D _R D X ); //读取X 轴的A D 转换值 不是坐标值16 17 //p r i n t f ("\r \n M e a s u r e X i s %d \r \n ",v a r );18 19 r e t u r n v a r ;

20}21

前一篇:stm32 DA 数模转换后一篇:Stm32 SWD 下载 调试配置lanmanck 在12-06 15:08说:

不错,学习

fenglinz 在03-12 16:16说:

好想学会啊。。。。不会啊

编译如果没出错,可能你就成功了。但往往没有那么简单,很可能还有第三步,也很可能是最耗时的一步——调试 。。

这里再附上一份整理的UCGUI API函数列表:UCGUI函数表 .pdf

UCGUI 指针跟随效果: UCGUI Xeye Demo 效果:

随机文章

获取sina微博方法

浏览器中的data类型的Url格式[转]

stm32 DMA数据搬运 [操作寄存器+库函数]

隐写术: 基地组织如何用视频隐藏绝密文档?

stm32 UCGUI 完美移植

转播到腾讯微博

Tags:stm32 ucgui移植,ucgui 触摸屏移植

Comments [2]

Leave a Comment

昵称 (必填*)

电邮 (为保障隐私,将不被显示. [必填*])

个人网站[要加上 http://]

6/https://www.doczj.com/doc/db17154621.html,/stm32-ucgui.html COPYRIGHT ? 2010 - 2014. ALL RIGHTS RESERVED.

POWERED BY TYPECHO))) THEME BY https://www.doczj.com/doc/db17154621.html, HOST BY SINA APP ENGINE 赣 ICP备10202164号Submit Comment

Submit Comment

关于uCGUI移植详解

关于uCGUI在STM32上的移植移详解 首先我们得知道啥是μC/GUI: 它是一种用于嵌入式应用的图形支持软件。它被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD 控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。 μC/GUI 适用于使用任何LCD 控制和CPU 的任何尺寸的物理和虚拟显示。 它的设计是模块化的,由在不同的模块中的不同的层组成。一个层,称作LCD 驱动程序,包含了对LCD 的全部访问。因为它100%由ANSI 的C 语言编写的,μ所以C/GUI 适用于所有的CPU。 我们知道windowsXP的操作界面,是通过窗口、按钮、等来对计算机进行操作,同样,我们所讲的uC/GUI也能实现类似效果。 在网上找了些教程,但是讲述的不够详细,导致我在移植过程中遇到了很多问题,自己重头开始自己一点点移植,遇到的问题也只能靠自己解决,终于在忙活了一天后把它搞定了。希望对初次进行移植的同学能有所帮助。下面是我的吐血总结: 所需工具:1、uC/GUI v3.90 尽量找到没有修改的源码 2、一个硬件开发平台、LCD底层驱动程序,我使用的是STM32F103ZE+TFT3.2寸LCD 3、MDK开发软件(就是Keil) 4、一个编译无误的工程模板 4、uC/GUI相关的中文手册 移植步骤:

第一步:首先,得把你的LCD底层驱动写好,既在裸机下,可以正常显示。 通常只需3个底层驱动函数: LCD_SetPoint(u16 x,u16,y,int color);//设置某点,及颜色 LCD_GetPoint(u16 x,u16 y); //读取某点及颜色返回 LCD_Init(); //LCD初始化硬件函数,这里改成其他名字如LCD2_Init();防止和 uC/GUI冲突 第二步:向事先准备好的工程中加入uC/GUI文件夹,在工程设置中包含相应头文件 工程目录如下: 第三步:配置LCDConf.h、GUIConf.h、GUITouchConf.h(由于我没使用触摸功能,此配置在此不讲。) 配置LCDConf.h文件如下:LCD的设置 #ifndef LCDCONF_H #define LCDCONF_H #define LCD_XSIZE (320) //配置TFTLCD的水平分辨率 #define LCD_YSIZE (240) //配置TFTLCD的垂直分辨率 #define LCD_CONTROLLER (-1) //为什么是-1?接下来讲 #define LCD_BITSPERPIXEL (16) //每个像素的位数

UCGUI移植教程

UCGUI在STM32上移植教程 1说明 ●开发板芯片型号STM32F103VET6 ●板载液晶型号ILI9341 ●所需准备资料UCGUI3.90源码 ●一个工程模板 为了节约时间,此处所用模板为野火M3工程模板(3.5.0) 制作时间---2013-08-07 By NUAA---Kylin 2移植过程讲解 2.1首先打开工工程模板,页面如下,这个模板工程很简单

2.2在工程模板中新建两个文件夹 2.2.1命名为GUI与Mylib 2.2.2在GUI文件夹下添加以下内容 ●上述图片为UCGUI3.90源码中的一些文件夹 ●进入UCGUI3.90源码文件夹/Start,将Config文件夹原封不动的拷过来 ●进入UCGUI3.90源码文件夹/Start/GUI文件夹,将其中所有文件夹拷过来 ●在GUI文件夹下新建GUI_X文件夹,进入UCGUI3.90源码文件夹/ Sample/ GUI_X文件夹 中,如果带操作系统应该拷贝GUI_X_uCOS.c,如果不带操作系统拷贝GUI_X.c,在这里我们将将GUI_X.c拷贝到新建GUI_X文件夹。

2.2.3各文件夹说明 1)AntiAlias:9个C文件,主要用于抗锯齿的显示效果。 2)ConvertColor:彩色显示的色彩转换支持。 3)ConvertMono:(b/w)和灰度显示的色彩转换支持。 4)Core:核心文件,提供了GUI基本的功能。 5)Font:字库。 6)JPEG:图片操作函数。 7)LCDDriver:LCD驱动程序 8)MenDev:Memorydevice 支持。这个东西可用在很多情况下,但最主要的功能是防止在 项目重叠时,防止屏幕的闪烁。 9)Widget:窗体控件库。 10)WM:窗口管理库。 11)Config:配置文件。 12)GUI:源代码。 13)GUI_X:操作系统接口函数。 2.3添加组及源文件 2.3.1将GUI文件夹下的所有文件夹添加到GROUP 右键工程工程项目名选择manage components将这些组全部添加上如图

uCGUI 汉字显示技巧及总结

UCGUI的基础应用 汉字显示 在uC/GUI中显示汉字,必要的一个步骤就是汉字取模。通常有两种方法: 一、单个字模法:使用字模取模软件,进行单个字的取模。此方法可应用于显示汉字字 数较少的情况下。其优点是:占用存储空间小,无冗余。但当显示汉字字数较多时,该方法则非常繁琐。 二、字模库法:该方式需要移植整个汉字字库,若项目要求需显示多种汉字字体,则需 移植多种字体的字库。其优点是:操作方便。若嵌入式系统的FLASH存储容量够大时,该方式可行。 根据作者多年的项目实践,找到一个兼具上述两种方式优点的显示方案:利用UCGUIFontTool软件,提取windows自带的字模库。该方法的使用步骤: 1、将项目中所要显示的汉字根据字体进行分类并汇总。 2、使用UCGUIFontTool软件分别提取上述字模。 3、将所产生的.C文件添加到工程中。 4、更改gui.h中的配置,添加该汉字的宏定义,如图 5、显示汉字前更改需显示的字体,如图 6、利用函数进行显示。 该方法移植方便,易实现同时显示多种字体,无字模冗余,占用存储空间最小。图片显示 uC/GUI提供了位图的解决方案,在GUI显示图片时,需先将其他格式的图片转换为bmp格式。可利用windows系统自带的画图软件打开一个图片,再另存为bmp格式,继而转换为.c 格式文件加入到工程中。其操作步骤如下: 1、将其他格式的图片另存为bmp格式。 2、打开UCGUI源码自带的工具uC-GUI-BitmapConvert,选择相应参数,并转换为.c文件。 3、将该.c文件加入到工程中。 4、添加外部变量,并调用相应函数进行显示。如图 5、也可UCGUI提供的缩放函数可对图片进行缩放显示。如图

基于STM32的uCGUI移植和优化

基于STM32的uCGUI移植和优化 移植篇 首先,我们需要准备的东西有uCGUI3.90,这个版本是大家现在用的比较多的,效率也比较高,别人都是这么评论的,至于其他版本的,我没有接触很多,所以 不能过多评论. uCGUI有三个文件夹,一个是tool,这个文件夹是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的.在sample文件夹下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能.在Start文件夹里面,这是我们最主要的文件夹.里面就包含了uCGUI的源代码,uCGUI的作者把源代码放进vc里面进行编译了(当然,这是用标准C语言写的程序,所以我们可以放在任何C语言平台下编译而不会担心兼容性问题,这个uCGUI在这方面做的算是完美了),所以,我们可以在vc平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了.(像51 那时候写界面就是疯狂的一次一次的烧,真是纠结..). 然后这里放的就是uCGUI的源代码了,在GUI文件夹下面. 这则是每个文件夹的功能(参考uCGUI中文手册,https://www.doczj.com/doc/db17154621.html,翻译). 大概看一下就可以了,这个跟我们移植的关系不大,关键点是带*的可以不包含进去(待会配置会讲到.).然后其他的都要包含进去. 接着我们要把我们的文件包含进我们已经搭建好的工程,这里说明下我们的工程要求. 一般来说,我们要画一个图形,最基本的就是从点开始,从点到线,从点到面...,所以在已经建好的工程里面你要能点亮你的屏幕,能点出最基本的点,能填充出 最基本矩阵(这是uCGUI最包含的函数),反正我移植的时候涉及到的包括三个函 数,LCD_Init();LCD_Draw_Point(x,y,color),LCD_Fillcircuit(x1,x2,y1,y 2).这三个函数是必须的,后面也会说明如何把这三个函数进行填充. 当我们把文件复制进去的时候,再加上我们一开始已经创建好的工程的时候,文件结构差不多就是这个样子了,截图如下 user包括,main函数就是我们初始化和函数调用,绘图用的文件,另外那几个文件相信大家都明白了把,tft_lcd.c就是你在,没有移植uCGUI的情况下,纯液晶屏驱动,这里建议把液晶屏的API和最底层驱动(API就是画圆啊,画椭圆啊,清除屏幕之类的,底层驱动就是驱动液晶屏的管脚运作,fsmc初始化,时钟配置之类的),不过我这里也是集成在一起了,比较懒,大家别学.

电容式触摸屏控制器介绍

电容式触摸屏控制器介绍 引言 电阻式触摸屏有过其鼎盛时期,但不可否认它们已日薄西山。很明显,它更加适合于低成本的设计。使用这些设计的用户必须戴手套,例如:在医疗、工业和军事环境下。然而,电容式触摸屏却获得了普遍的使用,今天市场上销售的主流智能手机和平板电脑都使用了电容式触摸屏。 电阻式与电容式触摸屏比较 电阻式和电容式触摸屏都使用氧化铟锡(ITO)传感器,但使用方式却截然不同。电阻式触摸屏利用人体触摸的机械作用力来连接ITO的两个柔性层(图1a),而电容式触摸屏控制利用的是:基本上而言,人本身就是移动的电容器。触摸ITO时,会改变系统可感知的电容水平(图1b)。 图1 触摸屏设计比较 电容式触摸屏受到消费者的青睐,主要有两个原因: 1、电容式触摸屏使用两层TIO,有时使用一层。它利用一个与棋盘格类似的有纹理传感器(图2),因此它可以使用一 个整片覆盖在LCD上,从而带来更加清楚透亮的屏幕。

2、由于电容式触摸屏控制使用电解电容方法实现检测,安全玻璃层可放置于顶层来实现密封,这与电阻屏的聚氨酯柔性层不同。它还给用户带来一种更加耐用的设计。 图2 TIO行与列重叠形成一个完整的传感器片 电容式触摸屏设计考虑 电容式触摸屏的设计人员面对三大主要问题:功耗、噪声控制与手势识别。本文后面部分将为你逐一讲解。 功耗 今天的电池供电型设备如此之多,功耗是我们需要考虑的关键系统问题之一。诸如TI 的TSC3060等器件,便是按照低功耗要求设计的。在标准工作条件下,它的功耗小于60mA。在对触摸行为进行检测时,它的功耗更可低至11 μA。在相同工作状态下,它比其竞争者至少低了一个数量级。 市场上的许多解决方案一开始都是设计为微控制器,然后再逐渐发展为电容式触摸屏控制器。一开始就设计为电容式触摸屏控制器的器件,没有会消耗额外电流和时钟周期的多余硬件。大多数系统都已有一个主中央处理器,其可以是数字信号处理器、微处理器或者微控制器单元(MCU)。因此,为什么要给一个已经经过精密调整的系统再增加一个引擎

UCOS-II ucGUI的完美移植

stm32 UCGUI 完美移植 作者:Changing发表时间:09-16 04:13分类:电子相关1 Comment 前一篇:stm32 DA 数模转换 后一篇:Stm32 SWD 下载 调试配置 UCGUI是一种嵌入式应用中的图形支持系统。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。 它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。 类似程序还有国产的一个MINIGUI (https://www.doczj.com/doc/db17154621.html,/zhcn/),MiniGUI 是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Li nux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。有机会尝试下,支持下国产,毕竟国内这样的公司不多。。 这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。但是目前来说只有这个版本的代码是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模块。一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。 UCGUI390a 下载 整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。。。总之移植是个累人的活 首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 T F T LCD stm32 驱动 触摸屏 两篇文章 UCGUI的文件数量很大,主要用到UCGUI390a/Start/Con f ig 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。。。 相关文件介绍如下:

ITO触摸屏原理及基础知识

ITO触摸屏原理及基础知识 2008-08-01 22:41 目前主要有几种类型的触摸屏,它们分别是:电阻式(双层),表面电容式和感应电容式,表面声波式,红外式,以及弯曲波式、有源数字转换器式和光学成像式。它们又可以分为两类,一类需要ITO,比如前三种触摸屏,另一类的结构中不需要ITO, 比如后几种屏。 触摸屏在我们身边已经随处可见了,在PDA等个人便携式设备领域中,触摸屏节省了空间便于携带,还有更好的人机交互性。 目前主要有几种类型的触摸屏,它们分别是:电阻式(双层),表面电容式和感应电容式,表面声波式,红外式,以及弯曲波式、有源数字转换器式和光学成像式。它们又可以分为两类,一类需要ITO,比如前三种触摸屏,另一类的结构中不需要ITO, 比如后几种屏。目前市场上,使用ITO材料的电阻式触摸屏和电容式触摸屏应用最为广泛。 电阻式触摸屏 ITO 是铟锡氧化物的英文缩写,它是一种透明的导电体。通过调整铟和锡的比例,沉积方法,氧化程度以及晶粒的大小可以调整这种物质的性能。薄的ITO材料透明性好,但是阻抗高;厚的ITO材料阻抗低,但是透明性会变差。在PET聚脂薄膜上沉积时,反应温度要下降到150度以下,这会导致ITO氧化不完全,之后的应用中ITO会暴露在空气或空气隔层里,它单位面积阻抗因为自氧化而随时间变化。这使得电阻式触摸屏需要经常校正。 图一是电阻触摸屏的一个侧面剖视图。手指触摸的表面是一个硬涂层,用以保护下面的PET层。PET层是很薄的有弹性的PET薄膜,当表面被触摸时它会向下弯曲,并使得下面的两层ITO涂层能够相互接触并在该点连通电路。两个ITO层之间是约千分之一英寸厚的一些隔离支点使两层分开。最下面是一个透明的硬底层用来支撑上面的结构,通常是玻璃或者塑料。

ucGUI移植笔记-完善版

ucGUI移植笔记完善版 最近在弄ucGUI的移植,网上搜了不少资料,也问了同学,总算把简单的一个程序弄好了,也感谢openedv论坛和hua290565456的网友,看了他的贴子,才恍然大悟弄好。 该程序是直接用的原子大哥的TFTLCD显示的例子,直接拿过来移植的,感谢原子大哥的程序,在我学习STM32的旅途上帮助我不少。 所用到的是原子大哥TFTLCD例子(库函数版本)和ucGUI3.90源码。 建工程就不说了,附件里有,相信大家也看到别人建的工程了,下面直接说重点。 补充说明:如果你移植的时候怎么也不成功,大部分原因是GUI无法初始化LCD。考虑两方面的原因: 一、你写的底层驱动程序; 二、底层驱动程序与GUI系统的接口,即GUI的配置。 所有的问题几乎都是出现在这两方面,造成GUI无法成功调用正确的底层初始化程序。 所以: 1.确保你的底层驱动在没有移植GUI之前,能顺序驱动LCD成功。 2.然后,确保你的底层驱动接口没有与上层GUI有相同的公共的变量。可以有同名的变 量,但所有的变量都必须是私有的。也就是原子哥的那个结构体LCD不能在.h中定义。 如果LCD驱动文件是lcd.c和lcd.h,最好改为别的名字,比如ili93xx.c和ili93xx.h。然后还要把LCD_Init()初始化函数改为LCDx_Init();因为GUI系统已经有名为LCD.c的文件和LCD_Init()的函数。总而言之,确保你的底层的接口文件(xx.h)没有与上层同名的公共变量。 3.修改GUI系统与底层的接口: A.LCDConf.h中按照下面的图就行,其余的可以删除掉,一定要删除其他的,因为有 相同的LCD_CONTROLLER定义,会造成硬件出错而进入硬件出错中断死循环。注意红框中是刚刚改过的LCD初始化函数,改为刚刚更改的初始化函数就行。 B.接下来是GUIConf.h中的设置,目前只是用到简单的一个现实函数,多以就全部设

典型环境传递函数及模拟电路的构成方式资料

姓名:指导老师:成绩: 学院:专业:班级: 实验内容: 年月日其他组员及各自发挥作用: 独立完成实验内容,并进行了验证。 一、实验时间: 2014年9月22日 二、实验地点: 课外Multisim进行仿真,课堂上用labACT试验箱进行验证 三、实验目的: 1、了解labACT试验箱的模拟电路的基本组成、工作原理及使用方法 2、掌握典型环境传递函数及模拟电路的构成方式 3、熟悉各种典型环境的阶跃响应曲线 4、理解各个典型环境在系统中所起的作用 四、实验设备与软件 1、Multisim12电路设计与仿真软件 2、labACT实验台与虚拟示波器 五、实验原理 在实际生产中系统往往很复杂,但不管多么复杂的系统,在分析时都可以看成是由不同的基本环节构成。例如:由电子线路组成的放大器是最常见的比例环节;在机械系统中的齿轮减速器是一个比例环节。积分和惯性环节也是非常常见的,如:液位控制系统中阀控液压缸可看成积分环节,而直流电机的励磁回路就是一个惯性环节。比例环节可以改变输入信号的放大倍数;积分环节具有记忆功能,常用来改善系统的稳定性能;微分环节则常用来改善系统的动态特性。

六、实验内容、方法、过程与分析 1、实验内容:分别在Multisim12和labACT模拟试验箱观测记录比例(K)、积分((T i s)-1)、比例积分(1+(T i s)-1)、惯性环节((1+T i s)-1)的阶跃响应曲线。 2、实验方法: (1)Multisim仿真(2)labACT试验箱验证 3、实验过程与分析 A、单位阶跃 (1)比例环节一般采用反响输入的方式,Multisim原理图及仿真结果如下; 图1 比例环节原理图

ucgui液晶显示深度优化篇

UCGUI液晶显示深度优化篇 Author:wzt 2012年7月21日10:55:12 前一段进行了ucgui的移植,但是移植后续还是存在很多问题,比如液晶刷新速率慢,横竖屏切换不支持等,所以针对这些问题进行了一次彻底的优化,现在刷新能够达到20帧的速度对于50mhz的io口来说已经相当可以了。下面就进行一次彻底的剖析,看究竟是那些问题占用了宝贵的百万分之一秒: 一、速度优化篇: 1.我用的是stm32的处理器,stm32公司为了让使用者加快项目开发速度 和便于日后对整个软件部分的维护管理编写了一套标准库。这个库用 起来确实很方便也另学习简化了很多,但是它也有缺点所在:就是效 率问题。我之前用的液晶屏驱动就是基于库函数编写的,所以第一步 就是液晶驱动全部换为直接对寄存器操作,经实践确实刷新率成好几 倍的增长。这个代码比较长,这里就不贴出来的,这里仅仅指点下思 路,具体请看源代码。 代码下载地址:https://www.doczj.com/doc/db17154621.html,/icview-357489-1-1.html 2.深入液晶驱动内部:液晶屏刷新可不是像我们眼睛看到的一样瞬间整 个屏幕同时更新。实际上一个一个像素更新的:也就是说我的屏幕分 辨率是320*240就要更新320*240=76800个点。每一个点更新时都要 调用一个写数据函数。所以接下来要做的就是提高调用这个函数的速 度。有两种解决办法:使用宏定义函数或者内敛函数。我使用的是内 敛函数:如下定义: __inline void LCD_WR_DATA(u16 data) { LCD_RS_SET; LCD_CS_CLR; DATAOUT(data); LCD_WR_CLR; LCD_WR_SET; LCD_CS_SET; }可以看到和普通函数区别就在于前面增加了__inline关键字。它有什么 作用?为什么可以提高速度?下面讲解一下它是如何起作用的:假如现 在我们定义了两个函数A,函数B,函数A调用函数B:正常情况下如

emWin522(uCGUI)图形用户接口移植详细实例_STM32_2013_12_30

emWin 5.22 (uCGUI) 图形用户接口移植实例——STM32 作者:Ach 日期:2013年12月29日 联系方式:ox000008@https://www.doczj.com/doc/db17154621.html, 1.概要 移植图形用户接口的好处是不言而喻的。本文图文并茂地介绍了一个emWin 5.22(uCGUI)的移植实例。文章具体分为emWin简介,硬件平台简介,开发环境及项目简介,移植过程以及总结几个部分。 2.emWin简介 emWin是一种高效的而图形用户界面,是我们能够摆脱处理器和显示控制器而更专注于GUI的设计。这里借用STemWin的一幅图来说明emWin的作用和结构。它通过LCD及GUI的配置来驱动底层硬件,而应用程序又是通过调用emWin来实现各种GUI。5.22版的emWin带有许多常用的显示控制器的驱动(在参考手册Display Driver一章中有详细介绍),因此为我们移植带来了诸多方便。emWin的更详细的内容可参照它的参考手册。 图1. emWin在项目中的结构 3.硬件平台简介 笔者使用的是一块以STM32F103VET6为核心的ARM开发板,没有外部的SRAM及Flash。显示屏为2.8”320*240的彩色液晶屏,屏的驱动芯片为ILI9341(emWin 5.22带有它的驱动)。屏与CPU 的连接方式为该ARM核心所特有的FSMC_SRAM方式,访问LCD内容时操作就如同读写SRAM一样方便。 如果你想使用其它硬件平台来移植emWin,本文亦有一定的参考价值。希望本文能助你成功移植emWin。

图2. 硬件平台 4.开发环境简介 笔者所使用的开发软件为MDK-ARM 4.70。项目模板使用的是STemWin库中的(可从ST官方下载)。 图3. 项目截图 如图,项目下面有3个文件夹,其中Appli存放的是应用层的程序,第二个文件夹就如文件名,存放了emWin5.22所有部件,第三个文件夹存放了一些STM32及其它的库。具体见附件。 5.移植过程 有了MDK-ARM以及STemWin库,整个移植过程应该比较简单。STemWin中有4个文件夹,第一个可以不用看了,Libraries中包含所有需要的库(其中包含emWin5.22),Project中存放工程文件,Utilities中是一些应用文件。为了保持代码及工程结构的格式统一,我们尽量套用原有的格式。下面开始一步步的移植工作。 5.1 项目配置 打开Project文件夹,看到众多STM32的开发板文件夹。如果你有相应的板子,就不用修改直接用。我使用的是STM32F103核心的板子,因此我选了STM3210E-EVAL为模板,取名TEST(自取)。打开该文件夹,里面有2个文件夹,分别为RTOS和Standalone,RTOS是带操作系统的。我们打开Standalone,其中有6个文件夹,分别为Config、Demo、EWARM、MDK-ARM、TrueSTUDIO及User,具体的不一一介绍了。打开MDK-ARM,我们要的工程文件就在其中了。 打开工程,先点击如图左边红圈处编译一下,工程应该是没有错误的。然后根据你所使用的硬

触摸屏基础知识大全

触摸屏基础知识大全
触摸屏由于其坚固耐用、反应速度快、节省空间、易于交流等诸多优点得到大众的认同。根 据 iSuppli 公布的全球触摸屏市场的最新调查,触摸屏 06 年的总供货额达到 24 亿美元,预 计 2012 年将增至 06 年的 1.8 倍,即达到 44 亿美元。显而易见,这是一个飞速成长的巨大 市场。特别是在苹果 iPhone 的明星作用带动下,触摸屏在手机、电脑等消费电子产品中日 益普及。本 PDF 将为你搜集来自电子工程专辑、媒体播放器网站以及互联网上的一些关于 触摸屏的知识,希望能帮助到各位工程师朋友。 目录如下:
1. 触摸屏有哪些类型?....................................................................... 1
6. 7.
iSuppli: 预计 2013 年触摸屏出货量将达到 8.33 亿个............ 13
8. 关于触摸屏的一些技术问答............................................................ 17
W
DisplaySearch:触摸屏市场 2015 年前将达到 33 亿美元............. 16
W W
.P
5. 其他一些触摸屏技术原理............................................................... 12
LC
4. 电容式触摸屏原理介绍................................................................... 7
W
3. 电阻式触摸屏的组成结构和触摸屏原理....................................... 3
O R
2. 触摸屏的基础知识全解析......................................................... 1
LD
.C
N

UCGUI

uC/GUI作为一个通用的嵌入式应用的图形模块,它在嵌入式系统中的作用也显得的越来越重要。uC/GUI是一个源代码开放的图形系统,它提供了丰富的资源,包括二维绘图库、多字体及可扩充字符集、Unicode、位图显示、多级RGB及灰度调整、动画优化显示、具有Windows风格的对话框和预定义控件(按钮、编辑框、列表框等),以及对键盘、鼠标、触摸屏等输入设备和双LCD输出的支持,目前在具有图形界面的嵌入式产品中得到越来越广泛地应用。 2 通用嵌入式图形模块uC/GUI uC/GUI是一个通用的嵌入式应用的图形模块,它是美国Micrium公司开发的一种高效的、与处理器和LCD控制器独立的通用GUI,可以适用各种CPU和LC D,在单任务和多任务操作系统中,它都可以工作得很好。它具有驱动接口层和应用层,全部代码采用ANSI _C编写,提供源代码,可以方便的移植到各种平台下。 2.1 uC/GUI特点 (1) 支持任何8位、16位和32位的CPU,只要求CPU具有相应的ANSI_C编译器即可。 (2) 所有硬件接口定义都使用可配置的宏。 (3) 字符、位图可显示与LCD的任意点,并不限制与字节长度的整数倍数地址。 (4) 所有程序在长度和速度方面都进行了优化,结构清晰。 (5) 对于慢速的LCD控制器,可以使用缓冲存储器减少访问时间,提高显示速度[1]。 因为uC/GUI具有这些优点,它越来越受到更多嵌入式设计者的青睐。 2.2 uC/OS-II介绍 在嵌入式系统的开发过程中,选择操作系统与选择开发平台一样的重要。虽然不是一个完整的实时操作系统,只是一个实时内核,但与其它操作系统比起来它具有很多优点因而得到了广泛的应用。首先它是一种结构简单、源代码公开的操作系统,适合所有的开发者使用;它具有可移植性,它的绝大部分源码都是用移植性很强的ANSI _C编写,与微处理器硬件相关的部分采用汇编语言编写,很容易被移植到各种微处理器上;它还具有可固化和可裁剪等特点,对于嵌入式设计者来讲的,只要拥有固化手段(C编译、连接、下载和固化),就可以很方便将其嵌入到产品中去。设计者还可以根据系统应用程序的需要对uC/OS-I I进行相应的裁剪来减少产品中的uC/OS-II所需的存储器空间,这可以通过条件编译来实现。 2.3 uC/GUI接口

电容式触摸屏原理

电容式触摸屏 [编辑本段] 电容触摸屏的介绍 the introduction of Capacitive touch screen 电容式触摸屏的构造主要是在玻璃屏幕上镀一层透明的薄膜体层,再在导体层外加上一块保护玻璃,双玻璃设计能彻底保护导体层及感应器。 电容式触摸屏在触摸屏四边均镀上狭长的电极,在导电体内形成一个低电压交流电场。在触摸屏幕时,由于人体电场,手指与导体层间会形成一个耦合电容,四边电极发出的电流会流向触点,而电流强弱与手指到电极的距离成正比,位于触摸屏幕后的控制器便会计算电流的比例及强弱,准确算出触摸点的位置。电容触摸屏的双玻璃不但能保护导体及感应器,更有效地防止外在环境因素对触摸屏造成影响,就算屏幕沾有污秽、尘埃或油渍,电容式触摸屏依然能准确算出触摸位置。 电容式触摸屏是在玻璃表面贴上一层透明的特殊金属导电物质。当手指触摸在金属层上时,触点的电容就会发生变化,使得与之相连的振荡器频率发生变化,通过测量频率变化可以确定触摸位置获得信息。由于电容随温度、湿度或接地情况的不同而变化,故其稳定性较差,往往会产生漂移现象。该种触摸屏适用于系统开发的调试阶段。 [编辑本段] 电容触摸屏的缺陷 电容触摸屏的透光率和清晰度优于四线电阻屏,当然还不能和表面声波屏和五线电阻屏相比。电容屏反光严重,而且,电容技术的四层复合触摸屏对各波长光的透光率不均匀,存在色彩失真的问题,由于光线在各层间的反射,还造成图像字符的模糊。 电容屏在原理上把人体当作一个电容器元件的一个电极使用,当有导体靠近与夹层ITO工作面之间耦合出足够量容值的电容时,流走的电流就足够引起电容屏的误动作。

嵌入式用户图形接口uCGUI的简单分析.

? 嵌入式用户图形接口uC/GUI的简单分析 4.1 uC/GUI简介 uC/GUI是Micrium 公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD 的应用程序提供独立于处理器和LCD 控制器之外的有效的图形用户接口。可以应用于单一任务环境,也可以应用于多任务环境中。uC/GUI能够应用于任何LCD 控制器和CPU 的任何尺寸的物理显示或者模拟显示中。 uC/GUI的特点如下: o 适用于任何8位/16位/32位CPU ,可允许于支持ANSI C的任何编译器 o 适用于任何控制器驱动任何LCD (单色,灰度,或者彩色) o 通过配置宏,可支持任何接口 o 可配置显示尺寸 o 可在LCD 的任何一点上显示字符和画位图 o 对于显示尺寸和速度提供优化进程,编译时间依赖于采用的优化进程 o 支持虚拟显示,虚拟显示的尺寸比实际显示大。 4.2 uC/GUI文件组织 uC/GUI目录下的文件有配置文件目录Config ,GUI 库函数目录,以及为GUI 编写的应用程序目录。下面分别简要介绍相应目录下的函数,更为详细的文件介绍请参考我的uC/GUI移植的源代码。 o uC/GUI\Config\目录: GUICONF.h :配置GUI 移植到不同操作系统的选项。在本论文中配置移植到uC/OSII中,允许多任务调用uC/GUI函数。

GUITouchConf.h :配置触摸屏的选项以及编写触摸屏的驱动。本文移植 uC/GUI所使用的LCD 屏不支持触摸屏,所以此文件为空。 LCD_Init.C: LCD 控制器的初始化文件。 LCD_Conf.h: LCD 显示屏的选项文件,包括bpp ,调试板模式,水平、竖直方向的分辨率等等。 o uC/GUI\GUI\AntiAlias\目录: 这个目录中包含9个文件,处理显示的边缘模糊效果,也就是抗锯齿和优化LCD 锯齿。液晶屏上画斜线往往都有锯齿,所以通过优化算法进行美化。 o uC/GUI\GUI\ConvertColor\目录: 这个目录中包含14个.C 文件,涉及调色板模式。uC\GUI的调色板模式支持111模式,222模式,223,323,332,444,555,565,8666等相关模式。我在论文中使用的LCD 屏,为单色16级灰度屏,因而不涉及到这些模式。但为了保持UC\GUI文件的完整性,该目录以及目录下14个文件,仍然保存在移植文件中。 o uC/GUI\GUI\ConvertMono\目录: 此目录下的文件描述单色显示的不同模式,包含4个文件。 o uC/GUI\GUI\Core 此目录下包含129个文件,是uC/GUI的核心部分。包括GUI 头文件,GUI 显示各种文本,二进制,十进制,十六进制,字符型文本,字符串,在不同的位置显示二进制,十进制,十六进制,字符型文本,字符串等;GUI 设置各种字体;GUI 的2-D 图形库,GUI 绘图函数,在各种位置绘各种点,线,位图,多边形,长方形,圆等等;GUI 获取函数,获取当前点,线,位图,多边形,长方形,圆,当前字体,当前二进制,十进制,十六进制,字符型文本,字符串等函数;设置GUI 画笔函数;GUI 支持的鼠标函数;GUI 支持的键盘函数,GUI 支持的触摸屏函数;GUI 设置LCD 函数等等。这些函数,在uC/GUI

电容式触摸屏技术

电容式触摸屏技术 电容式触控技术于20多年前诞生,电容式触摸屏跟电阻式触摸屏比较是一个截然不同的技术。分外表面电容屏和内表面电容屏。 最初的外表面电容技术的触摸屏是一块四层复合玻璃层。玻璃屏的内表面和夹层各涂有一层ITO导电层,最外层是只有0.0015 毫米厚的矽土玻璃保护层。内层ITO作为屏蔽层,以保证良好的工作环境,夹层ITO涂层作为检测定位的工作层,在四个角或四条边上引出四个电极。 图1 外表面电容屏基本工作原理的最初想法是:人是假象的接地物(零电势体),给工作面通上一个很低的电压,当没有与屏幕接触时,各种电极是同电位的,触摸屏表面没有电流,而当用户触摸屏幕时,手指头吸收走一个很小的电流,这个电流分从触摸屏四个角或四条边上的电极中流出,并且理论上流经这四个电极的电流与手指到四角的距离成比例,控制器通过对这四个电流比例的精密计算,得出触摸点的位置。 早期外表面电容触摸屏本身实际是一套精密的漏电传感器,带手套的手不能触摸,由于使用电容方式,导致有漂移现象。外表面电容屏和电阻屏都是电原理工作方式,电工作方式对于多点触摸,不管是多少点,也不管是连续的还是不连续的都是取多点触摸的中心点判断,因为电流叠加是分不出来谁是谁的,没有办

法。 按照基本原理的思路进行下去,却碰到了难以逾越的障碍:

因为透明导电材料ITO层非常脆弱,直接触摸非常容易损坏,故不能直接用来作工作层。材料的问题一时难以解决,只好在外部增加一层非常薄的坚硬玻璃,它显然是不能导电的,直流是不行了,只能改用高频交流信号,靠人的手指头(隔着薄玻璃)与工作面形成的耦合电容来吸走一个交流电流,这就是电容屏"电容"名字的由来。问题是解决了,但付出的代价也是很大的。 首先是"漂移",因为耦合电容的方式是不稳定的,它直接受温度、湿度、手指湿润程度、人体体重、地面干燥程度影响,受外界大面积物体的干扰也非常大,带来了不稳定的结果,这些都直接违背了作为触摸屏这种绝对坐标系统的基本要求,不可避免的要产生漂移,有的电容触摸屏欲求通过25点校准法甚至96点校准法来解决漂移问题,其实是不可能的,漂移是电容工作的这种方式决定的,即使是在控制器的单片程序上利用动态计算和经验值查表,也只能是治标不治本。多点校准法最早是大屏幕投影触摸板使用的方法,目的是消除坐标对应的线性失真,电容触摸屏的线性失真也非常厉害,主要是因为电容屏的计算建立在四个电流量与触摸点到四个电极的距离成比例的理想状态上,实际由于受环境电容、线路寄生电容和不同人使用的影响,这种比例关系不可能是完全线性的,多点校准法只能解决局域分配的线性问题,解决不了整体的漂移。 另一个代价是:表面脆弱,最外这层极薄的玻璃,正常情况下防刮擦性能非常好,但工艺上要求在真空下制造,因为它害怕氢,哪怕有一点氢也会结合成易脆碎的玻璃,使用中轻敲就会成个小破洞,这对电容触摸屏来说是要命的:破洞周围直径5CM大小的区域不能使用。实际的真空是不可能有的,这层极薄的玻璃有5%的概率碰上有破洞的产品。再次是清晰度,电容屏反光相对严重,存在色彩失真和图像字符模糊。电容触摸屏的透光率和清晰度优于四线电阻屏,尤其是一些新的产品。 随着技术的进步,现在的外表面电容屏已经可以做到一层玻璃上,如图2所示。

如何将uCGUI移植到OLED12864上

如何让将μC/GUI在移植在OLED上显示?? 最近难得有时间休息,作为一个技术宅,也不能闲着是吧?于是乎花了一天的时间成功的将uCGUI移植在0.96寸单色OLED上显示。那么有的人该说了,它的分辨率只有128X64,没必要移植,呵呵,怎么说呢,在某些场合使用OLED非常合适。而且现在的OLED 使用范围越来越广,所以研究下很有必要。 那么该如何移植呢?首先我们应该明白uCGUI的工作原理:就是不断地调用画点函数画出来各种字符,图片等等,这是最基本的函数之一,其次就是读点函数:读取某个位置点的颜色,状态等。有了这两个函数一切都非常的好办。 移植的总体步骤: 1、一个较好的硬件平台、正常显示的OLED源码、uCGUI 2、编写OLED的画点函数、读点函数、初始化函数 3、在uCGUI配置文件中更改相应的配置 4、移植成功。 这里我重点想讲一下如何编写OLED的画点函数、读点函数。 一般的OLED上没有这两个函数,反正我的OLED没有,那么为什么会这样呢??因为如果将那些功能函数都按照画点来写的话,OLED的显示比较缓慢,显然这是不合理的做法。那么我们就要自己编写这个函数了。 我在网上找了半天没找到,无奈只能知己写了,于是乎打开了OLED驱动芯片SSD1306的数据手册,不要多想,全部是英文,只能硬着头皮看了。 我们应该先明白SSD1306是如何工作的,下面看图: 上面的英文大概就是:GDDRAM是位图静态对应显示,128x64大小的RAM被分成8个页,从PAGE0~PAGE7,至于那个被用于显示,看下图:

大概翻译:当一个字节的数据被写入到GDDRAM中,所有的同一页的同一列的所有行被填满,数据的D0位被写入到顶部的行,数据的D7位被写入到最低行。 好了,看到这两个图和这几句话我们就基本上明白它是如何显示的了;就是这样,一个共128*64个点的屏幕被分成了8个横着的块,每块有8*128个像素,向OLED写入数据时,低位在每块区域的最上面,高位在每块区域的最下面。比如:我们向第28行的第5列(也就是x=5,y=28的位置,x<=127,y<=63)写入一个数据为0xf0,线确定28行在那个区域才可以,28/8=3...4,也就是在PAGE=3的页的第4-1=3行。0xf0会被全部写入到第三页。 那么我们需要的是在某个点写入一个数据,在写入时我们不希望影响到其它位的数据,我们先要确定这个点在那个页面的哪个行,然后将数值0x01向左移相应的位数,在或上原来点的数即可。下面看代码: 函数开始先判断数值是否合理,然后在操作控制端口准备写入数据,先通过y值取整判断第几页,然后取余具体到哪一行,然后将0x0向左移余的位数,接下来开始向驱动器写入指令transfer_command_lcd(0xb0+pos); 每个驱动器都有其指令,下面我们来看下手册上的指令

ucGUI一般移植标准步骤

μc/GUI一般移植过程 移植的版本为3.90a,主要包含的文件夹如下图所示,主要涉及到: 1.Config:配置文件 2.GUI:源代码 3.GUI_X:操作系统接口函数 GUI源代码文件: 1)AntiAlias:9个C文件,主要用于抗锯齿的显示效果。 2)ConvertColor:彩色显示的色彩转换支持。 3)ConvertMono:(b/w)和灰度显示的色彩转换支持。 4)Core:核心文件,提供了GUI基本的功能。 5)Font:字库。 6)JPEG:图片操作函数。 7)LCDDriver:LCD驱动程序 8)MenDev:Memory device支持。这个东西可用在很多情况下,但最主要 的功能是防止在项目重叠时,防止屏幕的闪烁。 9)Widget:窗体控件库。 10)WM:窗口管理库。 注意:JPEG、MenDev、Widget、WM都可以裁减掉,若要支持Widget(窗体控件),需要WM(窗口管理器)的支持;使用控件时,需要将相应的头文件包含进去,比如我们要使用按钮button,那么我们需要先包含button.h头文件,否则控件即使支持也不可用! 一、Config文件夹配置文件修改 1.LCDConfig.h

#define LCD_XSIZE(240)//X-resolution of LCD,Logical coor. #define LCD_YSIZE(320)//Y-resolution of LCD,Logical coor. #define LCD_BITSPERPIXEL(16)//总线宽度 #define LCD_FIXEDPALETTE(565)//TFT格式 #define LCD_CONTROLLER(9325)//控制器型号(-1即可) #define LCD_SWAP_RB(1)//是否红蓝交换 注意:LCD_SWAP_RB会影响到颜色的正确性,倘若发现颜色是反向的,那么不如改变LCD_SWAP_RB的值。 2.GUIConfig.h #define GUI_OS(0)//单任务支持 #define GUI_SUPPORT_TOUCH(1)//支持触摸屏 #define GUI_SUPPORT_UNICODE(1)//UNICODE支持 #define GUI_DEFAULT_FONT&GUI_Font6x8//默认字体 #define GUI_ALLOC_SIZE7000//动态内存(不支持内存设备可小些) #define GUI_WINSUPPORT1//支持窗口操作 #define GUI_SUPPORT_MEMDEV1//Menory devices支持 #define GUI_SUPPORT_AA1//支持抗锯齿显示 3.GUI_TOUCH_Conf.h #define GUI_TOUCH_AD_LEFT200//触摸屏左侧AD测量值 #define GUI_TOUCH_AD_RIGHT3850//触摸屏左侧AD测量值 #define GUI_TOUCH_AD_TOP200//触摸屏上方AD测量值 #define GUI_TOUCH_AD_BOTTOM3700//触摸屏底部AD测量值 #define GUI_TOUCH_SWAP_XY0//X、Y方向翻转 #define GUI_TOUCH_MIRROR_X0//X方向镜像 #define GUI_TOUCH_MIRROR_Y0//Y方向镜像 二、LCDDriver文件夹修改 修改LCDDriver中c文件,实现LCD_L0_Init()初始化、LCD_L0_Set_PixelIndex()画点、LCD_L0_Get_PixelIndex()读取点值、LCD_On()、LCD_Off()。 注意:LCDDriver下有三个文件,任选其一就行,我选择LCDDummy.c,还必须去掉文件中的宏判断语句,否则整个文件不会被编译。

相关主题
文本预览
相关文档 最新文档