1、参考https://blog.csdn.net/xingleitinghai/article/details/128696736?spm=1001.2014.3001.5502
2、生成字模后,完善MyFont.h文件。
#include <pgmspace.h>
const unsigned char hz_today PROGMEM[] =
{
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x30,0x00,0x00,0x38,0x00,0x00,0x64,0x00,0x00,0x44,0x00,0x00,0xC2,0x00,0x01,0x81,0x00,
0x03,0x00,0xC0,0x06,0x30,0x60,0x0C,0x18,0x3C,0x10,0x08,0x1C,0x20,0x08,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x00,0xC0,
0x00,0x00,0x80,0x00,0x01,0x80,0x00,0x03,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x0C,0x00,0x00,0x18,0x00,0x00,0x00,0x00,/*"今",0*/
};
const unsigned char hz_tian PROGMEM[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x0F,0xFF,0xF0,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,
0x00,0x10,0x00,0x00,0x10,0x18,0x3F,0xFF,0xFC,0x00,0x38,0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,0x62,0x00,0x00,0x42,0x00,
0x00,0xC1,0x00,0x00,0x81,0x80,0x01,0x00,0xC0,0x02,0x00,0x60,0x04,0x00,0x38,0x18,0x00,0x1C,0x20,0x00,0x08,0x00,0x00,0x00,/*"天",1*/
};
const unsigned char hz_ni PROGMEM[] =
{
0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x8C,0x00,0x03,0x0C,0x00,0x03,0x08,0x00,0x02,0x18,0x00,0x04,0x1F,0xFC,0x04,0x30,0x0C,
0x0E,0x21,0x10,0x1C,0x41,0x00,0x14,0x41,0x00,0x24,0x91,0x00,0x44,0x19,0x20,0x04,0x11,0x10,0x04,0x31,0x18,0x04,0x21,0x0C,
0x04,0x41,0x0C,0x04,0x41,0x06,0x04,0x81,0x04,0x05,0x01,0x00,0x04,0x11,0x00,0x06,0x0F,0x00,0x04,0x02,0x00,0x00,0x00,0x00,/*"你",2*/
};
const unsigned char hz_xin PROGMEM[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x18,0x00,0x00,0x0C,0x00,0x00,0x0C,0x00,0x00,0xC4,0x00,
0x00,0x84,0x00,0x00,0x80,0x00,0x00,0x80,0x20,0x08,0x80,0x10,0x08,0x80,0x18,0x08,0x80,0x0C,0x18,0x80,0x4C,0x38,0x80,0x4C,
0x30,0x80,0x40,0x00,0x80,0x40,0x00,0x80,0x40,0x00,0xC0,0xE0,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"心",3*/
};
const unsigned char hz_qin PROGMEM[] =
{
0x00,0x00,0x00,0x08,0x02,0x00,0x0C,0x03,0x00,0x0C,0x02,0x00,0x0C,0xFF,0xF8,0x0C,0x02,0x00,0x0F,0x02,0x00,0x2D,0x3F,0xF0,
0x2C,0x02,0x00,0x2C,0x02,0x00,0x6D,0xFF,0xFC,0x0C,0x00,0x20,0x0C,0x3F,0xF0,0x0C,0x20,0x30,0x0C,0x3F,0xF0,0x0C,0x20,0x30,
0x0C,0x20,0x30,0x0C,0x3F,0xF0,0x0C,0x20,0x30,0x0C,0x20,0x30,0x0C,0x20,0x30,0x0C,0x20,0xF0,0x08,0x20,0x20,0x00,0x00,0x00,/*"情",4*/
};
const unsigned char hz_ru PROGMEM[] =
{
0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x7F,0xF3,0xFC,0x04,0x22,0x08,
0x04,0x22,0x08,0x04,0x22,0x08,0x0C,0x22,0x08,0x08,0x22,0x08,0x08,0x62,0x08,0x08,0x42,0x08,0x08,0x42,0x08,0x1C,0x42,0x08,
0x03,0xC2,0x08,0x00,0xE2,0x08,0x01,0x33,0xF8,0x03,0x12,0x0C,0x04,0x02,0x0C,0x18,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,/*"如",5*/
};
const unsigned char hz_he PROGMEM[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x02,0xFF,0xFE,0x02,0x00,0x10,0x06,0x00,0x10,0x04,0x00,0x10,0x0C,0x00,0x10,
0x0C,0x7F,0x10,0x14,0x43,0x10,0x14,0x43,0x10,0x24,0x43,0x10,0x44,0x43,0x10,0x04,0x43,0x10,0x04,0x7F,0x10,0x04,0x43,0x10,
0x04,0x40,0x10,0x04,0x00,0x10,0x04,0x00,0x10,0x04,0x00,0x10,0x04,0x01,0x30,0x04,0x00,0xF0,0x04,0x00,0x20,0x00,0x00,0x00,/*"何",6*/
};
const unsigned char hz_gantan1 PROGMEM[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,
0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"!",7*/
};
struct FNT_HZ // 汉字字模数据结构
{
char Index[4]; // 汉字内码索引
const unsigned char* hz_Id; // 点阵码数据
unsigned char hz_width;
};
PROGMEM const FNT_HZ hanzi[] =
{
{"今", hz_today,24}, {"天", hz_tian,24}, {"你", hz_ni,24}, {"心", hz_xin,24}, {"情", hz_qin,24},
{"如",hz_ru,24},{"何",hz_he,24},{"!",hz_gantan1,24}
};
3、编写如下代码:
#include <SPI.h> //导入库
#include <TFT_eSPI.h>
#include "MyFont.h" // 自制字体模板库
TFT_eSPI tft = TFT_eSPI();
void setup() {
Serial.begin(115200);
tft.init(); //初始化显示寄存器
tft.fillScreen(TFT_BLACK); //屏幕颜色
showMyFonts(10, 10, "今天你心情如何!!!", TFT_YELLOW);
showMyFonts(10, 40, "今天你心情如何!!!", TFT_YELLOW);
showMyFonts(10, 70, "今天你心情如何!!!", TFT_YELLOW);
showMyFonts(10, 110, "今天你心情如何!!!", TFT_YELLOW);
showMyFonts(10, 150, "今天你心情如何!!!", TFT_YELLOW);
showMyFonts(10, 180, "今天你心情如何!!!", TFT_YELLOW);
//
}
void loop() {
// put your main code here, to run repeatedly:
}
/*******************单个汉字显示****************/
void showMyFont(int32_t x, int32_t y, const char c[3], uint32_t color) {
for (int k = 0; k < 25; k++)// 根据字库的字数调节循环的次数
if (hanzi[k].Index[0] == c[0] && hanzi[k].Index[1] == c[1] && hanzi[k].Index[2] == c[2])
{
tft.drawBitmap(x, y, hanzi[k].hz_Id, hanzi[k].hz_width, 24, color);
}
}
/*******************整句汉字显示****************/
void showMyFonts(int32_t x, int32_t y, const char str[], uint32_t color) { //显示整句汉字,字库比较简单,上下、左右输出是在函数内实现
int x0 = x;
for (int i = 0; i < strlen(str); i += 3) {
showMyFont(x0, y, str+i, color);
x0 += 25;
}
}
4、显示效果如下:
也可以改变字体颜色,大伙都可以尝试哈!!!