Skip to content

esp32使用u8g2字库在墨水屏显示中文

使用 epd2 驱动的屏幕,因此可以使用 u8g2 中文字库来显示中文

操作步骤

安装 U8g2_for_Adafruit_GFX 插件

cpp
#include <GxEPD2_3C.h>
#include <U8g2_for_Adafruit_GFX.h>

// 选择水墨屏的驱动,根据水墨屏型号选择
GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
U8G2_FOR_ADAFRUIT_GFX u8g2Fonts; // 导入字体

void setup()
{
  display.init(115200);  // 初始化屏幕 
  display.setRotation(3);  // 设置屏幕旋转方向,分别有0,1,2,3这四个方向
  u8g2Fonts.begin(display);
  display.setTextWrap(false); // 设置文本是否自动换行,false则为不自动换行,如果文本溢出则显示异常或者不显示                 
  u8g2Fonts.setFontDirection(0);    // 设置文字显示方向  
  u8g2Fonts.setForegroundColor(GxEPD_BLACK);   // 设置前景色
  u8g2Fonts.setBackgroundColor(GxEPD_WHITE);   // 设置背景色

 
  u8g2Fonts.setFont(u8g2_font_wqy14_t_chinese3); // 设置文本字体
  display.setTextColor(GxEPD_BLACK); // 设置文本颜色
  display.setFullWindow(); // 设置全屏刷新,与之相对的是局部刷新
  display.firstPage(); // 显示开始

  // 通常来说,所有的显示都放在do while 循环中完成。
  // 主要原因是 水墨屏使用循环刷新,一次循环可能不会刷新所有显示内容
  do
  {
    u8g2Fonts.setCursor(10, 50); // 设置显示坐标 x=10, y=50
    String content = "中文显示测试"; 
    u8g2Fonts.println(content); // 显示文本
  }
  while (display.nextPage()); // 显示结束
}

参考资料

最近更新