用ps做美食网站,wordpress主动提交百度,深圳东门老街图片,wordpress微信设置本节内容#xff0c;将和大家一同学习#xff0c;在luatos环境中#xff0c;使用lvgl库#xff0c;一步步的编译固件、编写脚本#xff0c;最终实现中文字体的显示。 芯片#xff1a;AIR101 LCD屏#xff1a;ST7789
上一节#xff0c;我们一同学习了#xff0c;硬件引…本节内容将和大家一同学习在luatos环境中使用lvgl库一步步的编译固件、编写脚本最终实现中文字体的显示。 芯片AIR101 LCD屏ST7789
上一节我们一同学习了硬件引脚具体的接法硬件连接好了接下来就是见证奇迹编写脚本操控LCD屏显示内容的时刻了。
第一步先初始化外部硬件让芯片知道增加了一个外部硬件
LCD屏肯定是属于LCD库的操控权限内所以我们找到LUATOS文档中lcd驱动模块 接下来的第一步就是初始化设备了函数参数文档里写得很清楚咱们就不再赘述了 初始化参数中注意:lcd初始化之前需要先初始化spi
local spi_lcd spi.deviceSetup(0, pin.PB04, 0, 0, 8, 20 * 1000 * 1000, spi.MSB, 1, 1)lcd.init(st7789,{port device,pin_dc pin.PB01,pin_pwr pin.PB00,pin_rst pin.PB03,direction 0,w 240,h 320,xoffset 0,yoffset 0},spi_lcd)要想让屏显示内容必须要先让屏工作起来亮起来。所以我们把背光点亮
pwm.open(0,1000,50,0,100)
lcd.on() --这句可加可不加初始状态就会亮起来到这里LCD屏就准备就绪了接下来就是LVGL库的使用了
第二步先了解luatos LVGL库的使用方法
与上面LCD模块初始化同理使用LVGL也需要先做初始化
lvgl.init()今天我们主要是学习如何显示中文内容 1、先基于LVGL画布创建一个按钮
local btn2 lvgl.btn_create(lvgl.scr_act(), nil)2、设置按钮的位置LVGL官方源码中是支持多种位置的比如ALIGN_TOP_MIDALIGN_LEFT_MID,但是好像LustOS的LVGL库中并没有支持至少我使用ALIGN_TOP_MID的时候会报错
lvgl.obj_align(btn2, nil, lvgl.ALIGN_CENTER, 0,0)3、给按钮添加文字前先要基于按钮创建一个标签标签才可以显示文字
label lvgl.label_create(btn2, nil)4、给标签设置文字,如果是英文字符就可以使用默认字体直接显示了
lvgl.label_set_text(label, hello world)5、设置中文字体直接使用中文按钮将不显示任何文字
lvgl.label_set_text(label, 中国制造)第三步、重点来了如何显示中文字体仅限luatos环境中
1、因为芯片的固件中为了固件的大小考虑并没有加入中文字体所以我们要先重新编译一个带有中文字体的固件。 注意两个红框的地方先要正确选择芯片型号另外要保证固件大小 除了上图中基础的要选择以外下面是本次测试要用到的东西 最最重要的就是上图因为我们现在用的是LVGL库所以必须要选择LVGL库专用字体在这里为了照顾固件的大小 选择了10PIX字号的
第三步给label标签设置文字使期支持中文字体
先看一下lustos 文档 到这里如果直接使用示例中的代码你会发现仍然不会显示文字 问题有两点 1lvgl.font_get(“opposans_m_12”)示例中使用的字体是12号的我们添加到固件是10号的正确应该lvgl.font_get(“opposans_m_10”) 2最后一句lvgl.scr_load(screen_label)这里会导致整个屏不显示任何内容正确应该是重新加载整个画板lvgl.scr_load(lvgl.scr_act()),这一句不加也可以
重新回到我们自己的脚本代码中具体给标签设置中文的代码如下 第二步中我们已经创建了标签也设置了标签的内容现在只需要给标签增加样式就可以了
local label_style lvgl.style_create() --创建一个样式对象
log.info(set_text_style,lvgl.style_set_text_font(label_style,lvgl.STATE_DEFAULT, lvgl.font_get(opposans_m_10))) --设置使用的字体
log.info(add style,lvgl.obj_add_style(label, lvgl.LABEL_PART_MAIN, label_style))
--把样式增加到标签label最后送上完整的脚本代码仅供参考
PROJECT air101_test
VERSION 1.0.1
sys require sys
local spi_lcd spi.deviceSetup(0, pin.PB04, 0, 0, 8, 20 * 1000 * 1000, spi.MSB, 1, 1)
log.info(lcd.init,lcd.init(st7789,{port device,pin_dc pin.PB01,pin_pwr pin.PB00,pin_rst pin.PB03,direction 0,w 240,h 320,xoffset 0,yoffset 0},spi_lcd)
)
pwm.open(0,1000,50,0,100)
-- lcd.on()
log.info(lvgl_init,lvgl.init())
local label
local btn2 lvgl.btn_create(lvgl.scr_act(), nil)
lvgl.obj_align(btn2, nil, lvgl.ALIGN_CENTER, 0,0)
label lvgl.label_create(btn2, nil)
local str 中国制造#
lvgl.label_set_text(label, str)
log.info(set_text_style,lvgl.style_set_text_font(label_style,lvgl.STATE_DEFAULT, lvgl.font_get(opposans_m_10)))
log.info(add style,lvgl.obj_add_style(label, lvgl.LABEL_PART_MAIN, label_style))
--vgl.scr_load(lvgl.scr_act())本次测试收关结束
luatos框架中LVGL如何使用中文字体〈一〉开发板与LCD屏如何连线的基本步骤