Arduino(ESP32)下TFT屏幕驱动及汉字显示与字库比较

一、TFT屏幕的驱动列表支持

绝大多数的tft屏幕在esp32 下都可以被 TFT_eSPI 驱动显示,以下清单中的驱动模块都可以用tft_espi来显示:

// #define ILI9341_DRIVER       // Generic driver for common displays
//#define ILI9341_2_DRIVER     // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
#define ST7735_DRIVER      // Define additional parameters below for this display
//#define ILI9163_DRIVER     // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER     // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
//#define ST7789_DRIVER      // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER    // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
//#define ST7796_DRIVER
//#define SSD1351_DRIVER
//#define SSD1963_480_DRIVER
//#define SSD1963_800_DRIVER
//#define SSD1963_800ALT_DRIVER
//#define ILI9225_DRIVER
//#define GC9A01_DRIVER

上面的驱动表基本囊括了主要的TFT显示模块,所以除非不在这个清单中,所以别找第三方驱动了。

二、TFT模块的汉字显示方式和字库调用

在TFT_eSPI 的官方系统中提供了processing 这个工具用来生成汉字字库,有些文档介绍的过程是:

1,先用processing生成xxx.vlw 格式的文件;

2,访问 File to hex converter 生成一堆16进制的字符;

3,然后把字库转换成xxx.h文件在单片机中调用;

其实这个过程是完全误导,第一步processing生成的vlw文件是可以直接在单片机中被调用的;

1,把xxx.vlw放在platfomio项目下创建的data目录

 2,把vlw文件上传到单片机的flash空间中

 3,直接在代码中进行调用:

  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_GREEN);
  tft.loadFont(simsun12);
//注意上面的simsun12就是对应的simsun12.vlw文件
  tft.println("happy hahaha ");
  tft.println("we care我们必须努力.");
  tft.unloadFont();

tft会自己使用相关的文件系统LittleFS 之类的去读取字库文件

TFT_eSPI  的github示例中有相关的详细使用代码。

调用vlw做的字库文件比进行转换的方式简单多了。

三、TFT_eSPI  各种字库的比较

经过对vlw文件的调用代码的分析,发觉:vlw字库的存储方式其实存的是图片,processing 在创建字库时显示的那种图片就是存的字库文件。

它的字库调用就是到这个图片上动态取模。

上面当然是题外话。

那么vlw格式和.h格式的字库基本都是采取存进flash空间。经过测试:同等数量的汉字GB2312字符集 采取宋体12号字建立字库:

vlw字库文件是 1118KB;

.h字库文件是 1.39M

vlw文件是可以正常上传到单片机的,而.h字库文件已经不能使用了:

 所以,推荐使用vlw格式的字库文件,不论是使用整个gb2312字符集还是个别汉字都推荐vlw格式字库文件。

当然个人还是觉得vlw文件格式太大了,自定义了一个字库文件,这个文件同等汉字,并且16号字体只有508k,而12号字体只有400k不到。

物联沃分享整理
物联沃-IOTWORD物联网 » Arduino(ESP32)下TFT屏幕驱动及汉字显示与字库比较

发表评论