LVGL简介(基于v8.1-8.2)

一、LVGL起源

  LVGL(Light and Versatile Graphics Library)是一个轻量级的嵌入式图形库。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2016年将其发布在 GitHub上。

  当时叫 LittlevGL而不是LVGL后来作者重新命名为 LVGL甚至连仓库地址都改了。 像一般的开源项目的那样它是作为一个人的项目开始的。 从那时起陆续有近 100 名贡献者参与了项目开发使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。LVGL 项目包括所有存储库在 MIT license 许可下获得许可。这意味着您甚至可以在商业项目中使用它。这不是强制性的。

  它提供了创建嵌入式 GUI 所需的一切具有易于使用的图形元素美丽的视觉效果和低内存占用。

官网地址https://lvgl.io/

LVGL为我们提供一个详细的英文文档手册这个文档的在线阅读站点是
https://docs.lvgl.io下面还有个中文版的

百问网LVGL中文站点http://lvgl.100ask.net,选择相应的版本v8.1

github地址https://github.com/lvgl

在这里插入图片描述

二、LVGL组成及相关知识

1、主要特性

• 丰富且强大的模块化图形组件按钮 (buttons)、图表 (charts)、列表 (lists)、
  滑动条 (sliders)、图片 (images)等
• 高级的图形引擎动画、抗锯齿、透明度、平滑滚动、图层混合等效果
• 支持多种输入设备触摸屏、键盘、编码器、按键等
• 支持多显示设备
• 不依赖特定的硬件平台可以在任何显示屏上运行
• 配置可裁剪最低资源占用64 kB Flash16 kB RAM
• 基于 UTF-8 的多语种支持例如中文、日文、韩文、阿拉伯文等
• 可以通过类 CSS的方式来设计、布局图形界面例如Flexbox、Grid
• 支持操作系统、外置内存、以及硬件加速LVGL 已内建支持 STM32 DMA2D、NXP PXP
  和 VGLite
• 即便仅有单缓冲区 (frame buffer)的情况下也可保证渲染如丝般顺滑
• 全部由 C 编写完成并支持 C++ 调用
• 支持 Micropython 编程参见LVGL API in Micropython
• 在线模拟器支持ESP32

2、lvgl开发介绍

• 支持模拟器仿真可以无硬件依托进行开发
• 丰富详实的例程
• 详尽的文档以及 API 参考手册可线上查阅或可下载为 PDF 格式
• 在 MIT 许可下免费和开源
• 基本上每个能够驱动显示器的现代控制器都适合运行 LVGL。

3、LVGL在git的仓库布局

LVGL 项目的所有代码仓库都托管在 GitHub 上https://github.com/lvgl
您可以从下面的列表获取到 lvgl 所有相关的代码仓库
• lvgl 库本身有很多 例子。
• lv_demos 使用 LVGL 创建的演示。
• lv_drivers 显示和输入设备驱动程序
• 博客 博客站点的来源 (https://blog.lvgl.io)
• sim 在线模拟器网站的来源 (https://sim.lvgl.io)
• lv_sim_... 各种 IDE 和平台的模拟器项目
• lv_port_... LVGL 端口到开发板
• lv_binding_.. 绑定到其他语言
• lv_... 移植到其他平台

该项目的维护
• 错误修复每周按需发布
• 次要版本每 3-4 个月
• 主要版本大约每年

三、运行LVGL的硬件需求

1、参数要求

163264 位微控制器或处理器

建议使用 16 MHz 速度或者更高

闪存/只读存储器> 64 kB 建议使用 180 kB

内存8 kB建议使用 24 kB

1 帧缓冲器在 MCU、外部 RAM 或显示控制器中

LVGL 的图形缓冲区>“水平分辨率”像素建议使用 1/10“屏幕尺寸”

C99 或更高版本的编译器

基本 C或C++知识指针、结构、回调

2、显示

任何分辨率从小型单色显示器到全高清显示器

简单的界面一个驱动程序功能即可将渲染的图像复制到显示器

图形处理器支持

多显示器支持

自定义颜色格式支持

灵活的缓冲模式可实现高质量、高性能和低内存使用率

3、输入设备

同一屏幕的多个输入设备

简单的接口一个驱动程序功能即可获取输入设备的状态

拖动、滚动对象

识别手势

键盘和编码器支持无触摸板导航

4、绘图功能

抗锯齿

带半径的矩形

带半径的边框

影子

线

弧

多边形

掩蔽

5、文本功能

支持 UTF-8

抗锯齿

字距调整

自动换行和自动文本滚动

双向文本支持混合 RTL 和 LTR

阿拉伯语和波斯语支持

字体压缩

子像素渲染

在线和离线字体转换器

自定义字体引擎的界面

FreeType 集成示例

多语言支持

6、图像功能

各种颜色格式RGB、ARGB、色度键控、索引、仅 Alpha

实时对图像进行重新着色

实时缩放和旋转

图像可以放在闪存或文件中例如SD卡

在线和离线图像转换器

用于缓存的图像解码器

PNG 集成示例

7、风格

设置微件外观

级联样式如 CSS 中所示

在多个小部件中重复使用这些样式

用于简单更改的本地样式

用于提供默认外观的主题

状态更改时的过渡动画

  要运行LVGL您只需要一个C编译器32kB RAM和128 kB闪存一个帧缓冲区以及至少一个用于渲染的1/10屏幕大小的缓冲区。

四、windows PC模拟器(codeblocks)运行LVGL

1、什么是codeblocks?

  Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境。Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成它使用了著名的图形界面库wxWidgets(3.x)版。对于追求完美的C++程序员再也不必忍受Eclipse的缓慢。

  阅读参考Code::Blocks_百度百科其他更多相关资料请自行百度搜索学习这里不再赘述。

2、代码测试

相关资料链接
链接https://pan.baidu.com/s/10fqCw72zTfnj-2iTWFgpTg 
提取码sfh7 
--来自百度网盘超级会员V6的分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  若编译出现如下图错误可根据图中所示进行解决
在这里插入图片描述
  我个人在实验过程中编译该程序出现了一个switch case选项的宏未定义。可尝试将该选项部分代码隐去再次编译运行并不影响最终结果因为我们主要测试软件安装是否成功以及观察运行LVGL程序的效果。
在这里插入图片描述
  最终成功运行的效果:
在这里插入图片描述

参考阅读

开源轻量级显示框架LVGL简介

本专栏文章参考了《百问网LVGL(v8)系列课程(韦东山·监制) 基于lvgl v8.2版本》、知乎、百度百科以及其他技术博客等资料并结合自己的所学整理而来。如有侵权请联系删除水平有限欢迎各位在评论区交流讨论

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6