秒了 Arduino U8G2库 任意中文显示(完整GB2312字库)

一、前言

最近要使用U8G2库驱动OLED屏显示大量中文字,并且都是在线获取的资料,就开始从网上寻找解决方案。找到的几乎都是手动制作字库导入的教程,无法解决我面临的问题。

事实上解决方案多年前就有人提出,并且已经合并到了主线的u8g2库当中,不需要任何操作就可以实现GB2312中文字库显示。
在这里插入图片描述

二、u8g2_wqy

适合 u8g2 的中文字体,采用文泉驿点阵宋体作为源本,提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。

区别

  • chinese1chinese2chinese3u8g2 官方提供的小字符集。
  • gb2312 是完整的 GB2312 简体中文编码 字符集。
  • gb2312a 只有 GB2312 01021655 以及部分 08 区的编码。没有包含全角标点符号,如 ,请用半角 ! 代替。
  • gb2312b 只有 GB2312 0155 的编码,其中 1015 区为空区。比 gb2312a 多一些额外的符号。

字库大小

字体名字符数字节
u8g2_font_wqy12_t_chinese14119,491
u8g2_font_wqy12_t_chinese257413,701
u8g2_font_wqy12_t_chinese399325,038
u8g2_font_wqy12_t_gb2312a4041111,359
u8g2_font_wqy12_t_gb2312b4531120,375
u8g2_font_wqy12_t_gb23127539208,228
u8g2_font_wqy13_t_chinese141110,341
u8g2_font_wqy13_t_chinese257414,931
u8g2_font_wqy13_t_chinese399327,370
u8g2_font_wqy13_t_gb2312a4041121,327
u8g2_font_wqy13_t_gb2312b4531130,945
u8g2_font_wqy13_t_gb23127539227,383
u8g2_font_wqy14_t_chinese141111,368
u8g2_font_wqy14_t_chinese257416,443
u8g2_font_wqy14_t_chinese399330,200
u8g2_font_wqy14_t_gb2312a4040133,898
u8g2_font_wqy14_t_gb2312b4530143,477
u8g2_font_wqy14_t_gb23127538251,515
u8g2_font_wqy15_t_chinese141112,590
u8g2_font_wqy15_t_chinese257418,133
u8g2_font_wqy15_t_chinese399333,165
u8g2_font_wqy15_t_gb2312a4041147,563
u8g2_font_wqy15_t_gb2312b4531158,713
u8g2_font_wqy15_t_gb23127539276,938
u8g2_font_wqy16_t_chinese141114,229
u8g2_font_wqy16_t_chinese257420,245
u8g2_font_wqy16_t_chinese399337,454
u8g2_font_wqy16_t_gb2312a4041169,286
u8g2_font_wqy16_t_gb2312b4531182,271
u8g2_font_wqy16_t_gb23127539318,090

三、使用方法

只需一句代码
u8g2.setFont(u8g2_font_wqy12_t_gb2312);

以下是完整代码demo

#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/15, /* data=*/14);  // ESP32 Thing, HW I2C with pin remapping

// End of constructor list


void setup(void) {
  Wire.begin(15, 14);
  u8g2.begin();
  u8g2.enableUTF8Print();  // enable UTF8 support for the Arduino print() function
}

void loop(void) {
  u8g2.setFont(u8g2_font_wqy12_t_gb2312);  
  u8g2.setFontDirection(0);
  u8g2.firstPage();
  do {
    u8g2.setCursor(0, 10);
    u8g2.print("觊觎耄耋饕餮囹圄");  
    u8g2.setCursor(0, 25);
    u8g2.print("魑魅魍魉");  
    u8g2.setCursor(0, 40);
    u8g2.print("鑫森淼焱"); 
  } while (u8g2.nextPage());
  delay(1000);
}

在这里插入图片描述

参考资料

[1]https://github.com/larryli/U8g2_wqy_Arduino
[2]https://gitee.com/CHN_ZC/u8g2_wqy

  • 14
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值