
ESP32 接 LCD 顯示繁體中文
ESP32 接 LCD 顯示繁體中文,可以使用 UTF-8 字型庫 或 字型圖片 方式來處理。以下提供幾種常見方法:
方法 1:使用 U8g2 圖形庫(適用於 OLED / LCD)
U8g2 是一個強大的 Arduino 庫,支援繁體中文顯示,適用於 OLED 和 部分 LCD(如 SH1106、ST7565 等)。
🔹 安裝 U8g2
- 在 Arduino IDE,打開 庫管理員(Library Manager)
- 搜尋 “U8g2”,安裝 “U8g2 by olikraus”
🔹 連接 ESP32 和 LCD(以 I2C OLED 為例)
| LCD Pin | ESP32 Pin |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
🔹 顯示繁體中文
U8g2 支援 字庫(Font),可以使用 u8g2.setFont(u8g2_font_unifont_t_chinese2) 顯示中文。
範例程式
#include <Wire.h>
#include <U8g2lib.h>
// 初始化 U8g2 (以 SSD1306 I2C OLED 為例)
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup() {
u8g2.begin();
u8g2.enableUTF8Print(); // 啟用 UTF-8 支援
}
void loop() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_unifont_t_chinese2); // 設定中文字型
u8g2.drawUTF8(0, 24, "繁體中文測試");
u8g2.sendBuffer();
delay(2000);
}
📌 優點:不需額外字庫,可以直接顯示繁體中文。
📌 缺點:僅支援內建字庫,部分字可能無法顯示。
方法 2:使用 TFT_eSPI 庫(適用於 TFT LCD)
如果使用的是 TFT LCD(如 ST7735、ILI9341),可以用 TFT_eSPI。
🔹 安裝 TFT_eSPI
- 打開 Arduino IDE
- 進入 庫管理員(Library Manager)
- 搜尋 “TFT_eSPI”,安裝 TFT_eSPI by Bodmer
- 在
TFT_eSPI設定檔(User_Setup.h)修改螢幕型號和接腳
🔹 使用字型圖片顯示繁體中文
- 轉換中文為圖片字庫(可使用 LCD Image Converter 或 Online Tools)
- 載入字庫並繪製字元
範例程式
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE);
tft.loadFont("TaipeiSansTC"); // 使用繁體字型
tft.drawString("你好,世界!", 10, 10);
}
void loop() {
}
📌 優點:可以使用高解析度字型,支援所有繁體字
📌 缺點:需要轉換字型,佔用較多記憶體
方法 3:使用 Unicode 字型(最通用)
如果 LCD 控制器支援 Unicode 或 Bitmap 字庫,可以使用 lvgl 來顯示繁體中文。
🔹 安裝 LVGL(Light and Versatile Graphics Library)
- 在 Arduino IDE 安裝 LVGL 庫
- 使用
.ttf字型轉換工具,將繁體中文字型嵌入程式
範例程式
#include "lvgl.h"
#include "TFT_eSPI.h"
TFT_eSPI tft = TFT_eSPI();
void setup() {
lv_init();
tft.init();
tft.setRotation(1);
lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "繁體中文測試");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}
void loop() {
lv_task_handler();
delay(5);
}
📌 優點:適合複雜 GUI 應用,如 觸控面板、HMI
📌 缺點:設定較複雜,需額外配置字型
結論
| 方法 | 適用硬體 | 特點 | 難易度 |
|---|---|---|---|
| U8g2 | OLED / 單色 LCD | 內建中文字型,安裝簡單 | ⭐⭐ |
| TFT_eSPI | TFT LCD(ILI9341, ST7735) | 高畫質,需字型轉換 | ⭐⭐⭐ |
| LVGL | 高階 GUI(ESP32 Touch) | 最強大,但設定較難 | ⭐⭐⭐⭐ |
如果你是 初學者,建議從 U8g2 開始!🚀

