Arduino之TFT_eSPI驱动彩色LCD屏

一、TFT_eSPI库简介

1.1 安装TFT_eSPI库

在User_Setup.h中进行个人屏幕参数的配置:

User_Setup.hTFT驱动板备注
TFT_MISO 
TFT_MOSISDA 
TFT_SCLKCLK 
TFT_CSCS液晶屏片选信号,低电平使能
TFT_DCRS液晶屏寄存器/数据选择信号
TFT_RSTRST液晶屏复位信号
TFT_BL液晶屏背光调节

1.2 TFT_eSPI坐标系与颜色系统

坐标系:横向为x,纵向为y

  • TFT_eSPI的颜色模式为RGB565色彩模式
  • R原色占用5bit,G原色占用6bit,B原色占用5bit。即每像素点占用5+6+5=16bit。

1.3  TFT_eSPI初始化

#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象

void TFT_Init()
{
  tft.init();                // 初始化
  tft.setRotation(1);        // 设置屏幕方向,0:0度,1:90度,2:180度,3:270度
  tft.fillScreen(TFT_BLACK); // 设置屏幕背景颜色
}

1.4 TFT_eSPI默认的自定义颜色 

// Default color definitions
#define TFT_BLACK       0x0000      /*   0,   0,   0 */
#define TFT_NAVY        0x000F      /*   0,   0, 128 */
#define TFT_DARKGREEN   0x03E0      /*   0, 128,   0 */
#define TFT_DARKCYAN    0x03EF      /*   0, 128, 128 */
#define TFT_MAROON      0x7800      /* 128,   0,   0 */
#define TFT_PURPLE      0x780F      /* 128,   0, 128 */
#define TFT_OLIVE       0x7BE0      /* 128, 128,   0 */
#define TFT_LIGHTGREY   0xD69A      /* 211, 211, 211 */
#define TFT_DARKGREY    0x7BEF      /* 128, 128, 128 */
#define TFT_BLUE        0x001F      /*   0,   0, 255 */
#define TFT_GREEN       0x07E0      /*   0, 255,   0 */
#define TFT_CYAN        0x07FF      /*   0, 255, 255 */
#define TFT_RED         0xF800      /* 255,   0,   0 */
#define TFT_MAGENTA     0xF81F      /* 255,   0, 255 */
#define TFT_YELLOW      0xFFE0      /* 255, 255,   0 */
#define TFT_WHITE       0xFFFF      /* 255, 255, 255 */
#define TFT_ORANGE      0xFDA0      /* 255, 180,   0 */
#define TFT_GREENYELLOW 0xB7E0      /* 180, 255,   0 */
#define TFT_PINK        0xFE19      /* 255, 192, 203 */ //Lighter pink, was 0xFC9F
#define TFT_BROWN       0x9A60      /* 150,  75,   0 */
#define TFT_GOLD        0xFEA0      /* 255, 215,   0 */
#define TFT_SILVER      0xC618      /* 192, 192, 192 */
#define TFT_SKYBLUE     0x867D      /* 135, 206, 235 */
#define TFT_VIOLET      0x915C      /* 180,  46, 226 */

1.5 TFT_eSPI自带字体

注意:无默认的中文字体,需要自己进行取模

#define LOAD_GLCD  // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.

1.6 光标位置和文本相关函数

 

 注意:drawString系列的函数,绘制到屏幕末尾时,不会自动换行。

二、自定义字体库

2.1 所需软件

1.先下载processing软件,进行解压

Download Processing / Processing.org

2.使用UTF8字体生成软件进行取模

 

 之后点击生成.h即可。

2.2 测试程序

#include <TFT_eSPI.h>
#include "KaiTi_26.h"

TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象

#define BLK 5 // 亮度控制引脚
void TFT_Init()
{
  tft.init();                // 初始化
  tft.fillScreen(TFT_BLACK); // 设置屏幕背景颜色
  analogWrite(BLK, 150);     // 调节屏幕亮度,0最亮,255最暗
}

void TFT_Display()
{
  tft.setTextColor(TFT_WHITE, TFT_BLACK); // 参数1:字体颜色,参数2:背景色

  tft.setTextFont(2); // 字体大小16*16
  tft.println("Hello,world");
  tft.drawString("I want to eat something", 0, 50, 2);

  tft.setTextFont(4); // 字体大小26*26
  tft.drawNumber(1234, 0, 70);
  tft.drawFloat(3.14159, 5, 0, 90);

  // 自定义字库测试
  tft.loadFont(KaiTi_26); // 加载自定义字体
  tft.setCursor(0, 150);
  tft.println("中文");
  tft.drawString("汉字测试", 0, 177);
  tft.unloadFont(); // 释放字库
}

void setup()
{
  TFT_Init();
  TFT_Display();
}

void loop() {}

 

 2.3 输出图标字体

mdl2字体参考地址:https://learn.microsoft.com/zh-cn/windows/apps/design/style/segoe-ui-symbol-font

  1. 制作图标字体的自定义字库
  2. 使用 tft.drawGlyph(unicode编码)进行输出

2.4 显示字符串

设置文本显示基准: clk.setTextDatum(CC_DATUM);  // 设置文本对齐方式:中心对齐

  clk.setColorDepth(8);
  clk.createSprite(180, 48);   // 创建一个画布,画布大小x*y
  clk.fillSprite(TFT_BLACK);   // 画布颜色
  clk.setTextColor(TFT_WHITE); // 字体颜色
  clk.setTextFont(7);          // 字体类型Font 7,字体大小:48*48
  clk.setTextDatum(TL_DATUM);  // 设置文本显示基准:左上对齐(默认对齐方式)
  clk.drawString(String(Current_Time.hour) + ":" + String(Current_Time.minute) + ":" + String(Current_Time.second), 0, 0);

三、显示变量

/*实例化对象区*/
TFT_eSPI tft = TFT_eSPI(); // 创建TFT对象
TFT_eSprite clk = TFT_eSprite(&tft);
 
  clk.setColorDepth(8);
  clk.createSprite(60, 27);    // 创建一个画布,画布大小x*y
  clk.fillSprite(TFT_BLACK);   // 画布颜色
  clk.setTextColor(TFT_WHITE); // 字体颜色
  clk.setTextFont(4);
  clk.drawNumber(Current_Time.second, 0, 0);

  clk.pushSprite(0, 30); // 把画布推送到屏幕的(x,y)位置进行显示
  clk.deleteSprite();    // 删除画布

好的,我会为您讲解在Arduino中使用TFT_eSPI库编程驱动LCD显示的实验过程,以下是详细步骤: 1. 准备材料 你需要准备以下材料: - Arduino开发板 - 2.4寸TFT LCD幕 - 杜邦线 - 电位器 - 4.7K电阻 2. 连接电路 将LCD幕连接到Arduino开发板上,具体如下: - 将LCD幕的VCC接到Arduino的3.3V引脚上 - 将LCD幕的GND接到Arduino的GND引脚上 - 将LCD幕的CS引脚接到Arduino的D10引脚上 - 将LCD幕的DC引脚接到Arduino的D9引脚上 - 将LCD幕的MOSI引脚接到Arduino的D11引脚上 - 将LCD幕的SCK引脚接到Arduino的D13引脚上 - 将LCD幕的RST引脚接到Arduino的D8引脚上 - 将电位器的中间引脚接到LCD幕的A0引脚上,将电位器的两个端口接到GND和3.3V引脚上,用来控制幕亮度 3. 安装TFT_eSPI库 在Arduino IDE中打开“工具”菜单,选择“管理库”,搜索TFT_eSPI库并安装。 4. 编写程序 以下是一个简单的程序,用于在LCD幕上显示一些文本: ```c++ #include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); void setup() { tft.begin(); tft.setRotation(1); // 设置幕方向 tft.fillScreen(TFT_BLACK); // 填充黑色背景 tft.setTextColor(TFT_WHITE); // 设置字体颜色 tft.setTextSize(2); // 设置字体大小 tft.setCursor(0, 0); // 设置文本位置 tft.println("Hello, World!"); // 显示文本 } void loop() { } ``` 5. 上传程序 将程序上传到Arduino开发板上。 6. 查看LCD幕显示 在Arduino开发板上加电,等待程序启动后即可在LCD幕上看到显示的文本。 以上就是在Arduino中使用TFT_eSPI库编程驱动LCD显示的实验过程。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值