TFT屏幕在arduino (esp 32)下的驱动,汉字显示和字库比较

一、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不到。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要使用ESP32驱动TFT屏幕,需要先选择一款TFT屏幕并了解其驱动方式和接口。一般来说,常见的TFT屏幕SPI接口和8位并口接口两种。 对于SPI接口的TFT屏幕,可以使用ESP32SPI总线进行驱动。具体步骤如下: 1. 引入SPI库 ``` #include <SPI.h> ``` 2. 定义SPI引脚 ``` #define TFT_CS 5 // TFT屏幕片选引脚 #define TFT_DC 2 // TFT屏幕数据/命令选择引脚 #define TFT_RST 4 // TFT屏幕复位引脚 ``` 3. 初始化SPI总线 ``` SPI.begin(); ``` 4. 初始化TFT屏幕 ``` #include <Adafruit_GFX.h> // 引入图形库 #include <Adafruit_ILI9341.h> // 引入TFT屏幕库 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); ``` 5. 绘制图像 ``` tft.fillScreen(ILI9341_BLACK); // 填充屏幕为黑色 tft.drawPixel(50, 50, ILI9341_RED); // 在坐标(50,50)处绘制红色像素点 ``` 对于8位并口接口的TFT屏幕,可以使用ESP32的GPIO口进行驱动。具体步骤如下: 1. 定义并口引脚 ``` #define TFT_D0 26 // TFT屏幕数据口0 #define TFT_D1 25 // TFT屏幕数据口1 #define TFT_D2 17 // TFT屏幕数据口2 #define TFT_D3 16 // TFT屏幕数据口3 #define TFT_D4 27 // TFT屏幕数据口4 #define TFT_D5 14 // TFT屏幕数据口5 #define TFT_D6 12 // TFT屏幕数据口6 #define TFT_D7 13 // TFT屏幕数据口7 #define TFT_WR 32 // TFT屏幕写使能引脚 #define TFT_RD 33 // TFT屏幕读使能引脚 #define TFT_RS 15 // TFT屏幕数据/命令选择引脚 #define TFT_CS 2 // TFT屏幕片选引脚 #define TFT_RST 4 // TFT屏幕复位引脚 ``` 2. 初始化TFT屏幕 ``` #include <UTFT.h> // 引入TFT屏幕库 UTFT myGLCD(SSD1963_800ALT, TFT_RS, TFT_WR, TFT_CS, TFT_RST, TFT_D0, TFT_D1, TFT_D2, TFT_D3, TFT_D4, TFT_D5, TFT_D6, TFT_D7); ``` 3. 绘制图像 ``` myGLCD.clrScr(); // 清屏 myGLCD.setColor(255, 0, 0); // 设置颜色为红色 myGLCD.fillRect(50, 50, 100, 100); // 绘制矩形 ``` 需要注意的是,由于ESP32的GPIO口输出电平为3.3V,而TFT屏幕的输入电平一般为5V,因此在连接时需要使用电平转换器或者将ESP32的输出口通过限流电阻连接到TFT屏幕的输入口。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值