👆面包板社区DIY活动进行中!
(一)简介
在使用ESP32的时候,我们知道OLED屏幕是有中文库的,里面有非常多的常用字,但是LCD屏幕只有取模才能得到中文字体,那我们本期教程就来教大家如何搭建自己的字体库,使用中文字体更加方便快捷。
注意,不是任何芯片都能这样搭建,如果芯片的储存不足,就会影响正常程序的下载和使用,因为ESP32最低有4MB的外置储存(能用3MB)所以对于常用字体是绰绰有余的
ESP32TFT_LCD屏幕1700字常用字库下载
https://mbb.eet-china.com/download/316558.html
(二)教程
首先,在系统内,找到喜欢的文字
C:\Windows\Fonts
复制到桌面,可以得到一个TTF结尾的文件
打开arduino TFT_eSPI库的文件夹
C:\Users\用户名\Documents\Arduino\libraries\TFT_eSPI\Tools\Create_Smooth_Font\Create_font
这个是TFT库自带的生成字库的软件
将字库放进data文件夹内,最好改个名字,不要中文
我这里改成了xem.TTF
然后要下载一个Processing-processing3.5.4软件,这个软件可以将TTF文件转换成我们需要的字库字体
下载地址:https://mbb.eet-china.com/download/316557.html
然后打开Create_font.pde
更改以下内容
130行fontName,这里写你字库的名字
132行fontType,这里写字库的后缀,必须分大小写
137行fontSize,这里是字体大小设置,16最佳
140行displayFontSize,这里也是字体大小设置,16最佳
浏览器打开编码工具
http://www.jsons.cn/unicode/
中文转Unicode编码
输入你想要的文字,或者直接给一个2000字的常用字库
打开文本替换工具,我们需要将格式转换一下
https://www.lddgo.net/string/text-replace
注意前面有个英文的逗号,删了
如:\u6076\u9b54\u6e29\u6e7f\u5ea6
替换:0x6076,0x9b54,0x6e29,0x6e7f,0x5ea6,0x6674
将替换后的内容,打开Create_font.pde
330行specificUnicodes
static final int[] specificUnicodes = {
复制到括号中间(最后一位记得加英文逗号)
}
点击左上角的三角形运行
然后如果没问题,会生成vlw文件
将这个文件放到桌面
然后用软件将vlw文件转成arduino可读的文件
https://tomeko.net/online_tools/file_to_hex.php?lang=zh
复制生成后的字符
ino文件夹里面创建一个font.h文件
自己写下面一段
const uint8_t xem_font[] PROGMEM = {
【将生成的字符复制过来】
};
引用一下字库文件
启用字体
tft.drawString("多云大雨",0,40);
会自动寻找有的字体,直接写就好了
注意,需要将ESP32的内存设置为3M
(三)效果演示
#include <Arduino.h>
#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
//#define TFT_MOSI 23
//#define TFT_SCLK 18
//#define TFT_CS 5 // Chip select control pin
//#define TFT_DC 2 // Data Command control pin
//#define TFT_RST 4 // Reset pin (could connect to RST pin)
#include "xem_font.h"
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
void setup(void)
{
Serial.begin(115200);
tft.begin();
tft.fillScreen(TFT_BLACK);
tft.loadFont(xem_font);
}
void loop()
{
tft.setCursor(0,0);
tft.print("aaa");
tft.drawString("大家好啊",0,40);
}
作者:小恶魔owo 来源:面包板社区
扫码加入
单片机技术交流群