第一章 初识 LVGL
图形用户界面(GUI)是指采用图形方式显示的计算机操作用户界面,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项。图形用户界面由多种控件及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。在市面上,图形用户界面的种类非常多,比较常用的有:LVGL、emWin、MiniGUI、QT等,本书将基于LVGL进行图形用户界面的开发。
本章节将分为以下几个小节:
1.1 认识LVGL
1.2 LVGL 移植要求
1.3 LVGL 源码下载
1.1 认识 LVGL
LVGL(Light and Versatile Graphics Library)是一个免费的轻量级开源图形库,其主要特征有:
1,丰富的部件:开关、按钮、图表、列表、滑块、图片,等等。
2,高级图形属性:具有动画、抗锯齿、不透明度、平滑滚动等高级图形属性。
3,支持多种输入设备:如触摸屏、鼠标、键盘、编码器等。
4,支持多语言:UTF-8 编码。
5,支持多显示器:它可以同时使用多个 TFT或者单色显示器。
6,支持多种样式属性:它具有类 CSS 的样式,支持自定义图形元素。
7,独立于硬件之外:它可以与任何微控制器或显示器一起使用。
8,可扩展性:它能够以小内存运行(最低64 kB 闪存,16 kB RAM的MCU)。
9,支持操作系统、外部存储器和 GPU(不是必需的)。
10,具有高级图形效果:可进行单帧缓冲区操作。
11, 纯C编写: LVGL基于C 语言编写,以获得最大的兼容性。
综上可知:LVGL是一款具有丰富部件,具备高级图形特性,支持多种输入设备和多国语言,独立于硬件之外的开源图形库。LVGL官方地址为:https://lvgl.io/,该网页主要包含用户文档、图片转换器和字体转换器,该网页打开后如图1.1.1所示:

图1.1.1 LVGL官方网页
上图中,点击“GitHub”图标即可进入LVGL源码的github仓库,在该仓库中,可以下载LVGL相关的源码;点击“Docs”图标即可打开LVGL官方文档,该文档是纯英文编写的,主要讲解LVGL的基础知识、移植、部件使用、示例,等等。若您的英文水平不足以轻松阅读该文档,则建议您先跟着本书学习,遇到疑惑的地方,再结合LVGL官方文档进行辨正。
1.2 LVGL 移植要求
市面上拥有众多的微处理器(MCU),但并不是每一个MCU都适合移植LVGL图形库,例如传统的51单片机,它并不具备移植LVGL图形库的条件。下面我们来看看LVGL对硬件的要求:
1. MCU
LVGL图形库对微处理器具有一定的要求,例如主频、内存等,具体要求如下表所示:

表1.2.1移植LVGL的MCU要求
从上表可知:微处理器至少需要16位以上,所以传统的51、52单片机无法移植LVGL,它们都是8位的微处理器。
2. 显示屏
LVGL只需要一个简单的驱动程序函数即可将像素阵列复制到显示器的给定区域中,其对显示屏的兼容性很强,具体要求如下(满足其一即可):
① 具有 8/16 /24/ 32位色深的显示屏。
② HDMI 端口的显示器。
③ 小型单色显示器。
④ LED 矩阵。
⑤ 其他可以控制像素颜色/状态的显示器。
我们正点原子的1.3寸TFTLCD模块是16位深的显示屏,可满足LVGL的要求。
1.3 LVGL 源码下载
LVGL相关的源码和工程都是存放在GitHub远程仓库中,该GitHub远程仓库地址为https://github.com/lvgl/lvgl/,用户可以该仓库中下载LVGL图形库的源码。由于GitHub仓库的服务器在国外,如果用户在国内访问该服务器,可能登录不成功,此时,我们可以从正点原子光盘资料中获取LVGL的V8.2版本源码,具体路径为:A盘→5,软件资料 →9,LVGL学习资料 →lvgl-master.zip,如下图所示:

图1.3.1 LVGL源码
上图中,“LVGL使用工具.zip”压缩包里存放了LVGL相关的离线转换工具,这些离线工具是广大爱好者根据LVGL的字库定义规则和图片的处理特性而编写的软件;“lvgl-maser.zip”压缩包里存放了LVGL图形库的V8.2版本源码,其解压后如下图所示:

图1.3.2 LVGL源码文件
由上图可知,LVGL源码的目录下有很多文件和文件夹,但用户并不需要完全了解它们,我们只需要了解与移植相关的部分即可。各文件夹和文件的功能如下表所示:

表1.3.1 lvgl-master文件说明
上表中,与LVGL移植相关的有examples文件夹、src文件夹、lv_conf_template.h和lvgl.h文件,其他的部分均与移植无关,用户可以选择忽略。接下来我们分别看一下examples、src这两个文件夹的文件结构:
1. examples文件夹
该文件夹主要包含LVGL部件实例、动画实例、其他第三方库实例以及输入设备和显示器驱动文件等内容,具体如表1.3.2所示:

表1.3.2 examples文件夹的内容
上表中,只有porting文件夹与移植相关,其他文件夹中存放的是各种实例。
2. src文件夹
该文件夹主要包含LVGL源文件(部件源码、多种解码库),具体如表1.3.3所示:

表1.3.3 src文件夹的内容
上表中的内容都是与移植相关的,具体的移植方法我们后面将详细介绍,目前大家只需要对LVGL源码的文件结构有一定了解即可。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3117578/ ,如需转载,请注明出处,否则将追究法律责任。