esp32 CMT130-V1.0 PS 240*240屏幕显示多行中文实验

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、显示效果如下:
在这里插入图片描述
也可以改变字体颜色,大伙都可以尝试哈!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值