物联网开发笔记(63)- 使用Micropython开发ESP32开发板之控制ILI9341 3

313 阅读4分钟

        1,制作需要显示的汉字成为1个独立的文件(常用汉字有好几千个,不能都制作,ESP32没那   么大的存储空间)
2,python程序加载制作的字库文件
3,需要显示汉字的位置设置字体

四、安装制作中文字体的工具

        想要制作需要显示的文字,需要一个工具,这个工具需要用如下的流程安装:以Windows为例。

    1,安装nvm

        从官方网站下载或者从文末百度网盘下载。直接默认安装即可。

官方下载地址:github.com/coreybutler…

     2,使用nvm安装node.js(包含npm)

用管理员方式打开windows 命令终端,输入nvm,验证nvm是否安装成功,如果输出以下信息则代表成功。

 为了能够让nvm安装node时更快,分别执行下面2个命令:

nvm node_mirror https://npm.taobao.org/mirrors/node/
nvm npm_mirror https://npm.taobao.org/mirrors/npm/

下面安装node.js,命令如下:

nvm install 16.18.0

   具体看下图:

注意:需要把16.18.0文件夹设置在系统变量PATH中

 3,使用npm安装lvgl模块

        安装lvgl字体生成模块。同样以管理员打开命令终端:

输入以下命令使用淘宝镜像,加速安装

npm config set registry https://registry.npm.taobao.org

然后输入以下命令:

npm i lv_font_conv -g

 验证安装工具成功,打开一个新的命令行窗口,输入以下命令:

lv_font_conv

  如果出现以下信息,则代表安装成功:

 上述安装成功后会生成lv_font_conv工具,用这个工具制作。

五、制作中文字体

        1,下载字库

        当以上流程做完后,接下来可以我们来生成字体。想在ESP32上显示什么样的字体?

下面以阿里巴巴普惠体的字体库为例讲解:字体在文末下载哦!

         2,制作

        解压下载的压缩包,解压后是一个文件夹,进入这个文件夹。按下图输入CMD回车

 输入以下命令:

lv_font_conv --size 20 --format bin --bpp 1 --font Alibaba-PuHuiTi-Medium.ttf --symbols 北京欢迎你 --no-compress -o alibabapuhuiti-20.bin

命令解释:

1,上面的命令表示生成一个文件,名字叫做alibabapuhuiti-20.bin

2,这个字体文件中只有北京欢迎你这5个字,所以非常小,这里修改为你需要制作的文字

注意:上述命令的空格一定是英文的空格,中文的空格会失败

 

这个字体文件文末下载。

六、显示中文

        使用上面的字体文件,打开Thonny IDE,输入以下代码,我们来测试下:

import lvgl as lv
import time
from espidf import VSPI_HOST
from ili9XXX import ili9341
from xpt2046 import xpt2046
import fs_driver


# ------------------------------ 屏幕初始化操作 --start------------------------
# 屏幕宽高
WIDTH = 240
HEIGHT = 320


# 创建显示屏对象
disp = ili9341(miso=19, mosi=23, clk=18, cs=5, dc=26, rst=27, power=14, backlight=-1, backlight_on=0, power_on=0, rot=0x80,
        spihost=VSPI_HOST, mhz=60, factor=16, hybrid=True, width=WIDTH, height=HEIGHT,
        invert=False, double_buffer=True, half_duplex=False, initialize=True)

# 创建触摸屏对象
touch = xpt2046(cs=25, spihost=VSPI_HOST, mosi=-1, miso=-1, clk=-1, cal_y0 = 423, cal_y1=3948)
# ------------------------------ 屏幕初始化操作 --stop------------------------


# 1. 创建显示screen对象。将需要显示的组件添加到这个screen才能显示
scr = lv.obj()  # scr====> screen 屏幕
fs_drv = lv.fs_drv_t()
fs_driver.fs_register(fs_drv, 'S')
scr = lv.scr_act()
scr.clean()


# 2. 封装的需要显示的按钮
class CounterBtn():
    def __init__(self, scr):
        self.cnt = 0


![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/f1610ec764994ce79de6517442a28932~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771251971&x-signature=wMrk7HedQOeMawV22znIR4OFojU%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b72d78e094f740939d26096e9dbdaf82~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1771251971&x-signature=GtS4YdHN5uYSbVp7uKAOw4Eq7AA%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**