oled u8g2如何显示中文(实测有效)

最近开始捣鼓esp8266模块和oled,照着网上的例子开始hello world,刚开始显示英文还没什么问题,后面想显示自定义的中文的时候,发现有些字能显示有些不能。

一开始觉得这很简单,照着网上的教程也有一个大概的思路,后来才发现,网上的教程说的都不是很清楚,稍微走了一点点弯路,记录下来给后来的朋友一个完整、详细、能成功的教程。

环境:

操作系统:win10
ide:Arduino
开发板:ESP8266
显示器:0.96寸oled液晶屏
引脚连接:1:D1–SOA 2:D2–SCL 3: 3V3–VCC 4:G–GND

在这里插入图片描述

lib包:u8g2

在这里插入图片描述

开始操作!

第一步:
打开一个Unicode编码转换网站,然后把想显示的字输进去,例如“想输的字”,进行中文转Unicode
就能得到:\u60f3\u8f93\u7684\u5b57,这样的字符串

在这里插入图片描述

Unicode编码转换网站:
http://tool.chinaz.com/tools/unicode.aspx
第二步:
把刚刚获取到的Unicode编码字符串,将\u替换成$
最后得到的字符串:$60f3,$8f93,$7684,$5b57
将字符串里面的英文变成大写:$60F3,$8F93,$7684,$5B57
第三步:
找到Windows系统font文件里面的字体,放在一个新建的文件夹里面

在这里插入图片描述

用GuiTool工具生成字库文件

在这里插入图片描述

会生成simsun_U16.bdf和simsun_U16.bin两个文件

在这里插入图片描述

第四步:
将 统一码map文件 文件夹中的chinese.map 用编辑器或者sublime打开,把第二步中获取到的字符串添加到最前面,然后保存。将chinese.map文件放到上面两个文件的目录下
将bdfconv文件夹中的bdfconv.exe和转换.bat 放在上面两个文件的目录下
右击转换.bat 选择编辑

在这里插入图片描述

查看红框里面三个文件的名字是否和之前生成一样
双击转换.bat 生成 u8g2_font_unifont_zgzt.c 文件

在这里插入图片描述

第五步:
打开u8g2_font_unifont_zgzt.c文件
复制等号后面的所有内容
第六步:
找到arduino库文件夹,找到u8g2,找到 font文件

在这里插入图片描述

打开u8g2_fonts.c文件,搜索u8g2_font_unifont_t_chinese1
用刚刚新生成u8g2_font_unifont_zgzt内容,替换u8g2_font_unifont_t_chinese1里面的所有内容,保存

在这里插入图片描述

第七步:
打开ide Arduino
#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_SW_I2C u8g2(U8G2_R0, /* clock=*/ D2, /* data=*/ D1, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display


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

void loop(void) {
  u8g2.setFont(u8g2_font_unifont_t_chinese1); 
  u8g2.setFontDirection(0);
  u8g2.clearBuffer();
  u8g2.setCursor(0, 15);
  u8g2.print("想输的字");

  u8g2.sendBuffer();

  delay(1000);
}
注意u8g2.setFont要使用刚刚替换的u8g2_font_unifont_t_chinese1
然后编译显示在oled上就成功了

在这里插入图片描述

大功告成!
文章中涉及到的工具:https://pan.baidu.com/s/1L9AXL64rsN9oMrzo7lDDYg&shfl=sharepset 提取码:2jk6
特别感谢教程:https://www.bilibili.com/video/BV15J411c7jB?t=1072
  • 28
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值