当前位置:文档之家› C10H19 GFX Lab Manual_cn v3.0

C10H19 GFX Lab Manual_cn v3.0

硬件

硬件设置的特殊说明

在Graphics PICTail 2上运行代码时:

为正确的Graphics PICTail 版本进行硬件准备的步骤

在当前动手实验材料的目录中,打开GraphicsConfig.h 文件,找到下面的行:

如果您使用的是Graphics PICTail Version 2,去掉Version 2的

#define 前面的注释符。

如果您使用的是Graphics PICTail Version 3,去掉Version 3的#define 前面的注释符。 对于Version 3,确保跳线JP2设置成8位。

Microchip的名称和徽标组合、Microchip徽标、dsPIC、K EE L OQ、K EE L OQ徽标、MPLAB、PIC、PICmicro、PICSTART、rfPIC和 UNI/O均为

Microchip Technology Inc.在美国和其他国家或地区的注册商标。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL和The Embedded Control Solutions Company

均为Microchip Technology Inc.在美国的注册商标。

Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、https://www.doczj.com/doc/f19794415.html,、dsPICworks、dsSPEAK、ECAN、

ECONOMONITOR、FanSense、

HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPLAB Certified徽标、MPLIB、MPLINK、mTouch、Octopus、Omniscient Code Generation、PICC、PICC-18、PICDEM、https://www.doczj.com/doc/f19794415.html,、PICkit、PICtail、PIC32徽标、REAL ICE、rfLAB、Select Mode、Total Endurance、TSHARC、UniWinDriver、WiperLock和ZENA均为Microchip Technology Inc.在美国和其他国家或地区的商标。

SQTP是Microchip Technology Inc.在美国的服务标记。

在此提及的所有其他商标均为各持有公司所有。

? 2009, Microchip Technology Inc.版权所有。

本出版物中所述的器件应用信息及其他类似内容仅为您提供便利,它们可能由更新之信息所替代。确保应用符合技术规范,是您自身应负的责任。Microchip对这些信息不作任何明示或暗示、书面或口头、法定或其他形式的声明或担保,包括但不限于针对其使用情况、质量、性能、适销性或特定用途的适用性的声明或担保。Microchip对因这些信息及使用这些信息而引起的后果不承担任何责任。如果将Microchip器件用于生命维持和/或生命安全应用,一切风险由买方自负。买方同意在由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障Microchip免于承担法律责任,并加以赔偿。在Microchip知识产权保护下,不得暗中或以其他方式转让任何许可证。

实验练习一

创建飞溅屏幕

实验目的

在这第一个实验中,您将为GUI创建一个飞溅屏幕(Splash Screen)。使用Bitmap and Font Converter(位图和字体转换工具),生成要在本项目中使用的字体和位图。您将学习如何把生成的字体和位图文件集成到项目中去。您还将学习使用库提供的一些基本绘图形状和属性。我们将使用Lab1项目中的Lab1.c文件。为了方便起见,在C:\RTC\HIF 2131\Lab1\Lab1 Solution\中给出了完整的解决方案。

需求

开发环境:MPLAB? v8.3x

软件:Microchip Graphics Library v1.75

Bitmap and Font Converter

C编译器:用于PIC24及dsPIC器件的MPLAB? C编译器,或者

用于PIC32器件的MPLAB? C编译器

硬件工具:带PIC24FJ128GA010或PIC32MX360F512L PIM的Explorer 16

Graphics PICtail Plus子板,版本2.0或3.0

MPLAB? Real ICE或MPLAB? ICD3调试器

实验用电脑中的实验文件:C:\RTC\HIF 2131\Lab1...

目标

1) 使用Bitmap and Font Converter,把位图和字体转换成图形库能够使用的结构。

2) 写程序,程序将使用经过转换的位图和字体以及各种基本形状,创建并显示如下所示的飞溅屏幕。

已提供触摸屏和擦除动画功能,从而在完成本实验后,您将能够通过触摸屏幕显示字符串“Ready for Lab 2?”。

1-1

1-2

步骤

然后,打开Lab1,方法是从菜单中选择:

File ? Open Workspace… 并且打开与开发板设置对应的工作区文件,文件位置是:

为了验证设置,编译项目并对处理器进行编程。

选择:

Lab1 PIC24.mcw ,如果是带PIC24FJ128GA010 PIM 的Explorer 16 Lab1 PIC32.mcw ,如果是带PIC32MX360F512L PIM 的Explorer 16 Build All

Debug / Release

选择Release 模式。

点击Build All 按钮。

如果没有报告错误, 点击Program 按钮。

Program

从菜单中选择编程器:

Programmer ? Select Programmer ? MPLAB? ICD 3 或者 REAL ICE

1-3

如果设置正确,将看到此屏幕。触摸屏幕将启动一段擦除动画,并以一句特殊的短语作为结束。

开始时,将用Microchip 徽标替代上面显示图像的硅沙漠部分。为此,首先必须使用位图及字体转换工具把徽标位图文件转换为可用格式。启动转换工具,方法是:

开始 ? 程序 ? Microchip ? Graphics Library v1.65 ? Bitmap and Font converter

在工具中点击Add Images ,载入位图文件mchpLogo.bmp 。

查看图像大小是否为202x100像素,色深是否为4 bpp 。验证Label 显示为

mchpLogo 。 对于PIC24,设置成C30 Build 。 对于PIC32,设置成C32 Build 。

6

4 C:\RTC\HIF 2131\Bitmaps 不要关闭转换工具,在下一步骤我们还将使用它。

如果为项目选择了错误的编译(build )项,稍后将出现编译错误。

1-4

9

高亮显示mchpLogo并点击Remove。现在我们将转换打算用在此项目中的字体。

在转换工具中点击Add Fonts,找到文件DoulosSILR.ttf 。

在Set Font Style窗口中,选择:

1. Size设置成12

2. Weight设置成NORMAL

3. Range设置成(32-127)

4. Script设置成Western

5. 点击OK。

双击Label字段,把DoulosSILR字体重命名为MyNewFont。

对于PIC24,设置成C30 Build。

对于PIC32,设置成C32 Build。

点击Convert。

点击Quit,退出Bitmap and Font Converter工具。

如果不删除位图图像的话,图像和字体都

将出现在转换后的文件中。那没什么;但

是,如果在本实验中按步骤进行的话,在

将出现编译错误,因为在结束时将

有两个图像结构体。

如果为项目选择了错误的编译 选项,稍后

将出现编译错误。

通过限制字符范围,可以限制字体

结构体的大小。例如,如果将只使

用小写字母,把范围更改为97-

1-5

我们的图像和位图源文件都已经成功转换。下一步是向Lab1项目中添加转换后的文件。在MPLAB?项目窗口中,右击源文件,然后从下拉菜单中选择Add Files...,把文件添加到项目中去。另一种方法是从菜单栏中选择Project Add Files to Project ...。

从Lab1目录中,选择NewFont.c 和NewIntro.c ,然后点击open 。

1-6

现在我们将准备开始编写程序。为方便起见,按照下面步骤的说明对实验一代码进行简单的修改。首先,我们声明字体和位图的结构体。

在89行,把图像名更改为mchpLogo

在100行,添加声明语句,把MyNewFont声明为外部FONT_FLASH类型。

在141行,找到StartScreen()函数。在此函数中,我们将编写必要的代码以便显示新的飞溅屏幕。在这个过程中,将要编译和编程好几次。

从152行开始,插入代码,把屏幕背景色设置为白色。注意,值WHITE是在LCD驱动程序头文件中预定义的颜色。

1-7

从166行开始,更改代码,把引导图像替换为mchpLogo 图像。 a. 注释掉对PutImage(…) API 的调用。

b. 插入代码,计算新图像的x 坐标,使得徽标图像显示在屏幕水平方向的中央。提示:(X 最大值 - 图像

宽度)/ 2将给出水平方向的中心点。把计算结果存放在x_image 变量中。

c. 插入代码,在屏幕位置x_image, 10(即,top = 10)处,使用NORMAL 拉伸因子,显示图像。提示:

使用PutImage(…) API 以及名为mchpLogo 的图像。

编译项目并对器件进行编程。验证图像是否显示在预期的位置上。

Build All

Program

如果一切顺利,你将在屏幕上看到下面的图像。

从187行开始,插入显示预定义字符串所需的代码,预定义字符串存放在text[]中。字符串应该是BRIGHTRED色,使用MyNewFont,且位于水平方向中央,而y=110。

a. 把当前颜色设置为BRIGHTRED(它是预定义的颜色值)。

b. 把字体图像设置成MyNewFont。

c. 插入代码,计算字符串的x坐标,坐标要使串显示在屏幕水平方向的中央。

提示:(X最大值 -串宽度) / 2将给出水平方向的中心点。把计算结果存放在x_text变量中。

d. 插入代码,使用坐标x_text, 110,在屏幕上显示text[]。提示:OutTextXY(…)

验证图像和字符串是否显示在预期的位置上。

Make Program

1-8

最后的任务是使用原语API,在屏幕底部绘制两个图形。其他形状已经预先编写好了代码,供您参考。

在Lab1.c中从203行开始,插入代码,显示用BRIGHTGREEN颜色填色的方框,方框位置是:left = 44, top = 155, right = 88, bottom = 199。注:BRIGHTGREEN是已定义过的颜色。

在Lab1.c中从213行开始,插入代码,显示BRIGHTYELLOW色的空心圆,圆的位置是:x = 241, y = 177,且radius = 22。注: BRIGHTYELLOW是已定义过的颜色。

在Lab1.c的222行,关闭编译器开关可显示其他形状。

编译项目并对器件进行编程。

验证飞溅屏幕是否与1-1页上显示的预期结果相匹配。

Make Program

触摸屏幕。

显示的短语改变了吗?如果改变,说明您已经完成了实验一。干得好!

1-9

1-10

结果

您刚才已经学习了如何把图像和字体集成到使用图形库的应用中去。您还学习了如何实现原语绘制函数以及如何控制全局绘制属性(诸如使用的颜色、线型和字体等)。如果提前完成实验,可以尝试其他各种原语函数,它们可以在图形库帮助文件中找到。

代码分析

您进行过修改的简单应用程序实现了一个触摸屏模块,并使用原语绘制函数绘制了一个简单的飞溅屏幕。每一原语函数都要受到全局绘制属性(诸如线型、线的大小和颜色等)的影响。对于文本,字体和当前颜色设定影响着屏幕上文本显示的方式。

小结

在学习了如何使用图形库的原语层之后,您已经做好了进一步学习的准备,以了解实现控件的图形对象层。您离把应用与图形解决方案完全集成在一起这个目标又近了一步。接下来的实验将介绍图形对象层,以及使用图形库提供的控件。由于图形对象层中的控件将调用原语层函数,您现在已经弹药充足,可以创建自己的控件了。关于这一主题的应用笔记很快将发布。

实验练习二

创建菜单屏幕

实验目的

既然已经完成了飞溅屏幕,我们将为应用创建一个简单的菜单。在本实验中您将绘制两个按钮以及两个静态文本控件。本实验的重点在于了解控件的创建和绘制API。正因为如此,触摸屏和侧按钮输入已经被禁用。后续的实验将探究如何集成用户和系统输入。为了方便起见,在C:\RTC\HIF 2131\Lab2\Lab2 Solution\中给出了完整的解决方案。

需求

开发环境:MPLAB? v8.30

软件:Microchip Graphics Library v1.75

C编译器:用于PIC24及dsPIC器件的MPLAB? C编译器v3.10,或者

用于PIC32器件的MPLAB? C编译器

硬件工具:带PIC24FJ128GA010 或者PIC32MX360F512L PIM的Explorer 16

Graphics PICtail Plus子板,版本2.0或3.0

MPLAB? Real ICE或MPLAB? ICD3调试器

实验用电脑中的实验文件:C:\RTC\HIF 2131\Lab2...

目标

? 使用GOLCreateScheme() API,创建2个颜色方案。

? 使用相应的ObjCreate(…) API,创建:

? 2个正方形按钮。一个有文本,一个有图像(无文本)。

? 2个静态文本,用来标记按钮。

? 使用GOLDraw() API,生成要显示的控件。

2-1

2-2 步骤

然后,打开实验二,方法是从菜单中选择:

File ?Open Workspace…并且打开与您的开发板设置对应的工作区文件,文件位置是:

选择:

Lab2 PIC24.mcw,如果是带PIC24FJ128GA010 PIM的Explorer 16

Lab2 PIC32.mcw,如果是带PIC32MX360F512L PIM的Explorer 16

下列颜色在驱动程序头文件(LGDP4531.h)中已经进行了定义:

要在应用中使用控件,必须把控件的源文件和头文件添加到项目中去。在项目窗口中,把下列源文件添加到项目中:GOL.c、Button.c以及StaticText.c

把下列头文件添加到项目中去:GOL.h、Button.h以及StaticText.h

另外,我们还必须在GraphicsConfig.h头文件中使能打算使用的控件。为此,打开文件,去掉按钮和静态文本编译器开关前面的注释符。

既然已经恰当设置了用在我们应用中的控件,我们需要创建控件将使用的风格方案。两个按钮将使用库的默认风格方案,默认风格方案定义在GOL.h中。两个静态文本将使用稍许不同的风格方案。

2-3

2-4 由于静态文本控件使用的是修改后的风格方案,我们将需要添加定义风格方案的代码。注:本节中不用改动方案的颜色。这一步将在稍后进行。

在位于Lab2.c的main()函数中,在122行添加代码,把替代的风格方案赋值给menuScheme指针。注:指针已经定义过了。

定义了风格方案之后,我们现在要准备开始创建控件。创建将分两步进行。首先将创建按钮并验证按钮在显视屏上的外观。然后,我们将添加静态文本,对按钮进行标注。

在Lab2.c的141行,找到CreateMenuScreen()函数。从163行开始,添加代码,使用下面给定的参数,创建两个正方形按钮(提示:两次调用BtnCreate()函数)。为了方便起见,下面给定的值都是预定义的宏,可在GFXLab.h中找到。注:按钮1使用文本,而按钮2使用位图。至于BtnCreate() API函数原型,请参阅图形库帮助文件。

由于我们在main()函数中,并且知道将需要生成一些要显示的东西,在应用程序的while循环中(136行)添加一行代码,在屏幕上生成控件。

2-5

编译项目并对器件进行编程。验证按钮是否在预期的位置上,且使用的是正确的风格方案。

Build All

Program

既然按钮已经正确定义和定位,让我们添加两个静态文本来标注按钮。静态文本将需要有黑色背景下的白色文本。回想一下,在步骤6中,我们添加了通过调用GOLCreateScheme()创建替代风格方案结构体的代码。此外,我们还给该结构体赋值了一个指针*menuScheme 。由于没有进行改动,*menuScheme 使用默认颜色值进行填充。

参考下图,在205行中添加代码,使得我们的静态文本拥有WHITE 文本、BLACK 背景和CYAN 外框。 提示:要修改*menuScheme 指向的结构体,使用menuScheme -> EmbossDkColor = BLUE;

2-6 为了创建静态文本,我们将调用StCreate()函数两次。从Lab2.c的221行开始,添加代码,使用下面给定的参数,创建两个静态文本实例。为了方便起见,下面给定的值都是预定义的宏,可在GFXLab.h中找到。至于StCreate() API函数原型,请参阅图形库帮助文件。

编译项目并对器件进行编程。验证静态文本是否在预期的位置上,且使用的是正确的风格方案。

Build All Program

现在我们需要改变文本对齐方式并启用边框。为此,我们将使用一些可用于静态文本控件的状态设置。在本实验中当你创建控件时,通过将DRAW位设置为BTN_DRAW和ST_DRAW,使得控件能够被绘制。为了添加边框并改变文本对齐方式,我们将修改ST_FRAME和ST_CENTER_ALIGN状态位。

在263行,添加代码,形成一个叫做state的变量,如下例所示:

state = ST_FRAME | ST_CENTER_ALIGN;

在266和270行,使用前一步定义的状态变量,启用ID_STXT1和ID_STXT2 控件的状态位。例如,这样的代码:

state = BTN_TEXTBOTTOM | BTN_TOGGLE;

SetState(GOLFindObject(BTN1), state);

将把BTN1控件的状态位设置为BTN_TEXTBOTTOM和BTN_TOGGLE。

编译项目并对器件进行编程。验证屏幕是否与如下所示的菜单屏幕预期结果相匹配。

Build All Program

额外的步骤

玩乐时间!使用GOLSetScheme()函数,把menuScheme风格赋值给ID_BTN1。把TextColor0和Color0的颜色更改为另外的颜色(参见2-2页上的表格)。按钮有什么变化?你的改动影响静态文本了吗?为什么或者为什么不?使用RGB565Convert(R,G,B)宏,尝试定义自己的颜色。

2-7

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