日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ESP32 ESP-IDF LVGL8 显示中文

發布時間:2024/3/24 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ESP32 ESP-IDF LVGL8 显示中文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

陳拓 2022/12/15-2022/12/16

1. 開發環境

《ESP32 ESP-IDF LVGL8.3.3移植》

ESP32 ESP-IDF LVGL8.3.3移植_晨之清風的博客-CSDN博客ESP32 ESP-IDF LVGL8.3.3移植。https://blog.csdn.net/chentuo2000/article/details/128269394?spm=1001.2014.3001.5501

2. 使用LVGL自帶的中文字庫

  • 字庫文件

~/esp442/esp32_lvgl833/components/lvgl/src/font/lv_font_simsun_16_cjk.c

其中:

CJK是CJK Unified Ideographs的縮寫,意思是“中日韓統一表意文字”,把分別來自中文、日文、韓文、越文中的本質、意義相同、形狀一樣或稍異的表意文字賦予相同編碼,其中主要為漢字,也有仿漢字如日本國字、韓國獨有漢字、越南的喃字等。

這個lv_font_simsun_16_cjk字庫只有1000個常用字和部首偏旁。在

~/esp442/esp32_lvgl833/components/lvgl/src/lv_conf_internal.h

中有說明:

#ifndef LV_FONT_SIMSUN_16_CJK#ifdef CONFIG_LV_FONT_SIMSUN_16_CJK#define LV_FONT_SIMSUN_16_CJK CONFIG_LV_FONT_SIMSUN_16_CJK#else#define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/#endif #endif

1000個最常見的CJK字根(偏旁部首)

  • 配置項目

idf.py menuconfig

1) 選擇theme字號

?

2) 選擇中文字庫

使用自帶的中文字庫Simsun 16 CJK。

選擇Enable Dejavu 16 Persian, Hebrew, Arabic letters是為了能通過后面的編譯。

3) 選擇雙向文本

?

選擇Support bidirectional text是為了能通過后面的編譯。

  • 使用LVGL自帶的例子

~/esp442/esp32_lvgl833/components/lvgl/examples/widgets/label/lv_example_label_3.c

代碼中有編譯條件

#if LV_USE_LABEL && LV_BUILD_EXAMPLES && LV_FONT_DEJAVU_16_PERSIAN_HEBREW && LV_FONT_SIMSUN_16_CJK && LV_USE_BIDI

其中:LV_USE_LABEL和LV_BUILD_EXAMPLES是默認配置。其他3個條件就是我們在前面配置中所選擇的。

  • 修改main.c

添加頭文件:

#include "examples/lv_examples.h"

修改create_demo_application函數

static void create_demo_application(void) {lv_example_label_3(); }
  • 修改main目錄下的?CMakelists.txt?
idf_component_register(SRCS "main.c" "../components/lvgl/examples/widgets/label/lv_example_label_3.c" INCLUDE_DIRS ".")
  • 編譯、燒寫
  • ST7789 320x240顯示屏效果

操作細節見《ESP32 ESP-IDF LVGL8.3.3移植》

ESP32 ESP-IDF LVGL8.3.3移植_晨之清風的博客-CSDN博客ESP32 ESP-IDF LVGL8.3.3移植。https://blog.csdn.net/chentuo2000/article/details/128269394?spm=1001.2014.3001.5501

3. 自定義中文字庫

  • 介紹一個很好的學習LVGL的資源網站

http://lvgl.100ask.net/8.2/tools/fonts-zh-source.html

我們可以從這里找到很多免費的字庫,網站有視頻教你怎樣使用。

3.1 使用Windows字庫

  • 選擇字庫

我們可以使用Windows帶的字庫:

例如,我們選擇華文隸書。

復制粘貼所選字體到另一個目錄,得到文件:

STLITI.TTF

  • 使用lvgl官方在線轉換工具

https://lvgl.io/tools/fontconverter

?如圖設置,點擊Convert得到字庫文件lv_font_stliti_24.c

  • 選項說明

Name:字庫名稱lv_font_stliti_24

Size:字符大小24

Bpp:每個像素的比特(位),位數越大效果越好,字庫尺寸越大。

?

Font compression:啟用字體壓縮(減小大小,但導致渲染速度變慢)

Horizontal subpixel rendering:水平子像素渲染(可能會提高字體質量,但會導致更大的字體庫)

Try to use glyph color info from font to create grayscale icons:嘗試使用字體中的字形顏色信息創建灰度圖標。

由于灰色色調是通過透明度模擬的,所以僅在對比度背景上效果會很好。

詳細說明見:

https://docs.lvgl.io/master/overview/font.html#subpixel-rendering

?

Range:選擇字符范圍,我們只選擇了ASCII碼表。可以選擇多個范圍,用空格分隔。

Symbols:如果在Range中選擇全字庫范圍將得到一個很大的字庫,占用很多空間。在項目中我們只用到少量中文,將這些中文寫在Symbols中,這樣生成的字庫很小。

?

Include another font:包含另一個字庫。

這個功能可以將不同的字庫合并到一個字庫中

具體的使用方法見:

https://www.bilibili.com/video/BV1Ya411r7K2/?p=15

3.2 在程序中使用生成的字庫文件

  • 將字庫文件lv_font_stliti_24.c復制到font目錄下

~/esp442/esp32_lvgl833/components/lvgl/examples/assets/font

  • 修改main目錄下的?CMakelists.txt?
idf_component_register(SRCS "main.c" "../components/lvgl/examples/widgets/label/lv_example_label_3.c" "../components/lvgl/examples/assets/font/lv_font_stliti_24.c" INCLUDE_DIRS ".")
  • 在代碼中引用自定義字體

按照轉換工具下面的說明,要在代碼中添加對自定義字體的引用聲明:

LV_FONT_DECLARE(lv_font_stliti_24);
  • 修改lv_example_label_3.c 文件的lv_example_label_3函數
void lv_example_label_3(void) {LV_FONT_DECLARE(lv_font_stliti_24);lv_obj_t * cz_label = lv_label_create(lv_scr_act());lv_label_set_recolor(cz_label, true);lv_label_set_text(cz_label, "溫度: 18℃ 濕度: 65%\n #ff5151 晴##99cc33 到##2894ff 多云#");lv_obj_set_style_text_font(cz_label, &lv_font_stliti_24, 0); lv_obj_set_width(cz_label, 310);lv_obj_align(cz_label, LV_ALIGN_LEFT_MID, 5, 0); }
  • 顯示效果

參考文檔

  • 如何為ESP32項目選擇彩色顯示
    https://m.elecfans.com/article/1080052.html
  • 總結

    以上是生活随笔為你收集整理的ESP32 ESP-IDF LVGL8 显示中文的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。