本章将介绍与本文档相关的一些信息,也将概述 emWin 的构成特点及其要求。
本指南介绍如何安装、配置和使用用于嵌入式应用程序的 emWin 图形用户界面,还将说明软件的内部结构。
本指南假定您已经具备 C 程序设计语言的基础知识。如果认为自己的 C 程序设计语言知识不够,建议您阅读 Kernighan 和 Richie 编写的 “C” Programming Language (C 程序设计语言),该书介绍了编程标准,在其较新版本还包括了 ANSI C 标准。无需汇编编程的知识。
emWin 设计用于提供高效且独立于处理器和显示控制器的图形用户界面,用于任何使用图形显示进行操作的应用。它与单任务和多任务环境、专用操作系统或具有任何商业 RTOS 兼容, emWin 的发货形式为 C 语言源代码。它可适用于任何尺寸的、具有任何显示控制器和 CPU 的物理和虚拟显示器。其特性包括:
一般特性 • 支持使用任何控制器的任何 (单色、灰度或彩色)显示器 (如果有正确的驱动)。 • 在较小显示器上无显示控制器也可运行。 • 使用配置宏可支持任何接口。 • 显示尺寸可配置。 • 可在显示器上的任何点 (而不仅仅是在偶数位字节地址)上写入字符和位图。 • 已针对尺寸和速度优化了各种例程。 • 利用编译时间切换可进行不同优化。 • 对于较慢的显示控制器,可在存储器中缓存显示,将存取操作减到最少,从而获得非常高的速度。 • 结构清晰。 • 支持虚拟显示;虚拟显示可大于实际显示。图形库 • 支持不同色深的位图。 • 可使用位图转换器。 • 绝对无浮点使用。 • 快速线 / 点绘制 (不使用浮点)。 • 圆形 / 多边形绘制非常快速。 • 不同的绘图模式。字体 • 基本软件配备多种不同的字体:4*6、6*8、6*9、8*8、8*9、8*16、8*17、8*18、24*32 以及像素高度为 8、 10、 13、 16 的比例字体。有关详细信息,请参阅字体一章。 • 可以定义新的字体并只需简单链接。 • 只有应用程序使用的字体才实际链接到生成的可执行程序,从而使 ROM 使用最小。 • 字体可分别在 X 和 Y 方向完全缩放。 • 可使用字体转换器;主机系统 (即 Microsoft Windows)上有的任何字体都可以转换。字符串 / 值输出例程 • 例程可以十进制、二进制、十六进制、任何字体形式显示值。 • 例程可以十进制、二进制、十六进制、任何字体形式编辑值。窗口管理器 (WM) • 完整的窗口管理操作,包括裁剪。窗口的客户区以外的区域不可能被覆盖。 • 窗口可以移动和调整大小。 • 支持回调例程 (可选择是否使用)。 • WM 使用最小的 RAM (每个窗口大约 50 字节)。 PC 界面外观的可选小工具 • 提供各种小工具 (窗口对象,也称为控件)。它们通常自动操作并且简单易用。支持触摸屏和鼠标 • 对于按钮小工具等窗口对象, emWin 提供触摸屏和鼠标支持。
PC 工具 • 模拟脉冲查看器。 • 位图转换器。 • 字体转换器。 1.7 示例和演示为了让您更好地了解 emWin 的功能,我们准备了各种不同演示,其形式为 “即时可用”的模拟可执行程序,在 Sample\EXE 下。示例程序的源代码位于 Sample 文件夹中。文件夹 Sample\GUIDemo 包含一个显示 emWin 许多特性的应用程序。所有示例也可从 www.segger.com 获得。 1.8 初学者套装完整的初学者套装包括一个带显示器的演示威廉希尔官方网站 板、一个 C 编译器和一个示例项目。有关详细信息,请查看网站 www.segger.com。 1.9 屏幕和坐标屏幕由许多可以单独控制的点组成,这些点称为像素。emWin 在其 API 中提供给用户程序的绝大部分文本和绘图功能,都可在任何指定的像素上进行书写或绘制。水平尺度称为 X 轴,而垂直尺度称为 Y 轴。坐标定义为一对由 X 和 Y 值组成的值 (X, Y)。在需要 X 和 Y 坐标的例程中 X 坐标始终在前。显示屏(或窗口)左上角的坐标默认为 (0,0)。正的 X 值始终向右,正的 Y 值始终向下。上图说明了坐标系以及 X 和 Y 轴的方向。传递给 API 函数的所有坐标始终以像素为单位指定。
如何将显示器连接到微控制器 emWin 处理对显示器的所有访问。事实上可支持任何显示控制器,而与其访问方式无关。有关详细信息,请参阅 “配置”(第 905 页)。如果不支持您的显示控制器,请与我们联系。我们当前正为市场上的所有显示控制器编写驱动,可能已经具有您要使用的显示控制器的成熟驱动。通常可非常简单地将访问显示器的例程(或宏)写入应用程序。SEGGER Microcontroller GmbH & Co. KG 可为您提供这些定制服务,如果需要,还可为您的目标硬件提供定制服务。显示器如何与系统连接无关紧要,只要软件可通过某种方式对其进行访问,这有多种不同的方式。这些接口中的大多数通过以源代码形式提供的驱动支持。此类驱动通常不需要修改,而是通过在文件 LCDConf.h 中进行更改以便根据硬件进行配置。在 “显示驱动”(第 813 页)一章中给出了如何在必要时为硬件定制驱动的详细信息。访问显示器最通用的方式如下所述。如果您只想了解如何使用 emWin,则可跳过本节。带存储器映射显示控制器的显示器显示控制器直接与系统的数据总线连接,即意味着可像 RAM 一样访问控制器。这是一种访问显示控制器的高效方式,一般都建议使用它。将显示器地址定义到段 LCDSEG,而且为了能够访问显示器,只需告诉链接器 / 定位器如何定位此段即可。该位置必须与物理地址空间中的访问地址相同。可提供用于此类型接口和不同显示控制器的驱动。显示控制器连接到端口 / 缓冲器的显示器对于在快速处理器上使用的较慢显示控制器,使用端口线可能是唯一的解决方案。这种访问显示器的方法有一个缺点,比直接总线接口稍微慢些,但是缓存能最小化对显示器的访问,因此显示更新不会显著减慢。所有需要做的事情就是定义例程或宏,设置或读取显示器所连接的硬件端口 / 缓冲器。此类型接口也可由不同显示控制器的不同驱动支持。专有解决方案:无显示控制器的显示器也可连接没有显示控制器的显示器。在此情况下,显示数据通常由控制器通过 4 或 8 位移位寄存器直接提供。这些专有硬件解决方案的优点是成本不高,但缺点是会用掉很多可用计算时间。时间可在 20%到 100%之间,取决于 CPU。对于较慢的 CPU,这是完全不可能的。此类型接口不需要特定的显示驱动,因为 emWin 只是将所有显示数据放入显示缓存中。用户必须自己编写硬件相关的部分,从而定期将高速缓存中的数据传输到显示器。将视频图像传输到显示器中的示例代码,以 C 语言和 M16C 和 M16C/80 的优化汇编程序两种形式提供。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !