首页 > 其他分享 >Arduino之TFT_eSPI驱动彩色LCD屏

Arduino之TFT_eSPI驱动彩色LCD屏

时间:2023-11-13 22:44:06浏览次数:44  
标签:eSPI Arduino clk LCD tft TFT 255 define

原文:https://blog.csdn.net/qq_45355603/article/details/132298259

一、TFT_eSPI库简介
1.1 安装TFT_eSPI库


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

 

User_Setup.h TFT驱动板 备注
TFT_MISO 无  
TFT_MOSI SDA  
TFT_SCLK CLK  
TFT_CS CS 液晶屏片选信号,低电平使能
TFT_DC RS 液晶屏寄存器/数据选择信号
TFT_RST RST 液晶屏复位信号
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

制作图标字体的自定义字库
使用 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(); // 删除画布
————————————————
版权声明:本文为CSDN博主「⁢稚子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45355603/article/details/132298259

标签:eSPI,Arduino,clk,LCD,tft,TFT,255,define
From: https://www.cnblogs.com/bruce1992/p/17830509.html

相关文章

  • LCD/HDMI 调试经验
     一、以两例芯片介绍驱动目的驱动是啥?从硬件上看就是以一定的规则让芯片运作起来,从软件上看就是一个或几个.c文件。拿一些显示信号转换芯片(9211,9611,96111uxc等等)来说,首先需要了解这类芯片的作用。生活中有各种不同的显示器,手机屏幕、电脑显示器、电视机等等,虽然都能显示同一画......
  • 防干扰/抗噪LCD液晶段码显示驱动芯片VK2C21A/AA SSOP28 适用于适用于单相电表,工业电表
     I²C 接口LCD 控制及驱动IC型号:VK2C21A:RAM 映射 20*4,16*8封装(SOP-28)LCD液晶显示驱动VK2C21B:RAM 映射 16*4,12*8封装(SOP-24)LCD液晶显示驱动VK2C21C:RAM 映射 12*4,8*8封装(SOP-20) LCD液晶显示驱动VK2C21D:RAM 映射 8*4,4*8封装(NSOP-16) LCD液晶显......
  • 如何调试 Arduino® UNO R4 Minima
    本篇博客软件配置参考DebuggingtheArduinoUNOR4Minima|ArduinoDocumentation需要的工具硬件J-Link仿真器1.27mm排线转2.54mm排线母对母正向公对母杜邦线4根软件OzoneArduinoIDE硬件连线排线连接开发板1.27mm排线如图插入开发板注意:排线......
  • Arduino UNO使用DHT11温湿度传感器通过串口向PC发送温湿度信息​
    ArduinoUNO使用DHT11温湿度传感器通过串口向PC发送温湿度信息硬件介绍笔者使用的开发板为ArduinoUNO国产兼容板,淘宝上大约卖20rmb左右。如下图DHT11传感器为四脚封装样式,从正面看引脚从左往右依次为1、2、3、4引脚,其中1引脚为VCC3~5V,2引脚为通信引脚要与单片机引脚相连,3引脚是个......
  • 09_LCD1602调试工具
    LCD1602调试工具编写代码LCD1602.c#include<REGX52.H>//引脚配置:sbitLCD_RS=P2^6;sbitLCD_RW=P2^5;sbitLCD_EN=P2^7;#defineLCD_DataPortP0//函数定义:/***@briefLCD1602延时函数,12MHz调用可延时1ms*@param无*@retval无*/voidLCD_Delay(vo......
  • LCD液晶超抗干扰段码显示屏驱动芯片VK1C21A/B/C/D/DA/E/EA具备显示效果好,静电耐压高等
    产品型号:VK1C21A/B产品品牌:永嘉微电/VINKA封装形式:SSOP48/LQFP48可定制裸片:DICE(COB邦定片);COG(邦定玻璃用)产品年份:新年份联系人:邱婷联系QQ:2689802003联系手机:18823668825原厂,工程服务,技术支持! 概述:VK1C21A/B是一个点阵式存储映射的LCD驱动器,可支持最大128......
  • Arduino UNO 测试SD卡
    SD卡模块测试方法ArduinoIDE的LibraryManager中搜索‘SD’,安装最新版资料库;依次打开File-Examples-SD-CardInfo示例程序,Upload至开发板;打开串口监视器SerialMonitor,即可看到串口信息输出,如下Cardtype:SD2Clusters:15352BlocksxClu......
  • 全志R128应用开发案例——SPI驱动ST7789V1.3寸LCD
    SPI驱动ST7789V1.3寸LCDR128平台提供了SPIDBI的SPITFT接口,具有如下特点:SupportsDBITypeC3Line/4LineInterfaceModeSupports2DataLaneInterfaceModeSupportsdatasourcefromCPUorDMASupportsRGB111/444/565/666/888videoformatMaximumresolutio......
  • Arduino® UNO R4 Minima 手册
    概述经过增强和改进,ArduinoUNOR4Minima配备了由瑞萨电子提供的强大32位微控制器。为提高处理能力、扩展内存和全新级别的板载外围设备做好准备。与现有Shields等附件的兼容性保持不变,无需对标准外形尺寸或5V工作电压进行任何更改。ArduinoUNOR4(以下简称UNOR4Mi......
  • 基于亚博k210+arduino 智能垃圾桶(23工训赛)
    #20231015派大星改#objectclassifierboot.py#generatedbymaixhub.comfromfpioa_managerimport*frommodulesimportultrasonicfromfpioa_managerimportfmfromMaiximportGPIOimportmathimportstructimportsensor,image,lcd,timeimportKPUas......