在Arduino下使用合宙0.96寸屏和1.8寸屏

合宙配合开发板提供的两款LCD,一款是0.96寸的IPS屏,分辨率160x80,一款是1.8寸的TFT,分辨率160x128,价格很实惠,用在一些需要小显示设备的地方很方便。但是合宙只提供了LuatOS下的支持,如果想在其它场合用就需要自己写驱动。Arduino下倒是有很多现成的库可以支持,但是直接用这些库,往往都会出现显示位置有偏移,色彩错误的问题。网上也看到对这些驱动进行修改的文章,但是很多修改都要去改驱动源码,如果再换个屏,可能又有兼容问题。我研究了一下,其实只需要改一下配置即可。下面以TFT_eSPI库为例说明一下修改方法,因为lvgl直接用这个库,所以这个驱动弄好了就可以直接用lvgl了,比较方便:
1,在Arduino的库管理里,搜索TFT_eSPI库并安装搜索并安装eSPI
2,打开TFT_eSPI库的目录,windows下,这个文件夹位于 \当前用户\文档\Arduino\libraries\TFT_eSPI,MAC下,这个库位于\用户\当前用户\Arduino\libraries\TFT_eSPI,打开User_Setups目录,找到Setup47_ST7735.h文件,复制一份,重命名,比如我用在合宙的S3开发板,用0.96的屏,就命名为Setup47_ST7735_S3_160X80.h,编辑文件内容

#define USER_SETUP_ID 47

#define ST7735_DRIVER     // Configure all registers
//修改分辨率
#define TFT_WIDTH  80
#define TFT_HEIGHT 160

//#define ST7735_INITB
// #define ST7735_GREENTAB
// #define ST7735_GREENTAB2
// #define ST7735_GREENTAB3
// #define ST7735_GREENTAB128    // For 128 x 128 display
//#define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
//#define ST7735_BLACKTAB
#define ST7735_REDTAB160x80   // For 160 x 80 display with 24 pixel offset,这里是关键,如果不修改,显示会有偏移

//#define TFT_RGB_ORDER TFT_RGB  // Colour order Red-Green-Blue
//#define TFT_RGB_ORDER TFT_BGR  // Colour order Blue-Green-Red

//#define TFT_INVERSION_ON
//#define TFT_INVERSION_OFF

// Generic ESP32 setup
//引脚配置,这里是根据ESP32S3的开发板定义的,其它开发板请根据实际情况修改
#define TFT_MISO -1  //未使用
#define TFT_MOSI 17
#define TFT_SCLK 18
#define TFT_CS   14 
#define TFT_DC   15
#define TFT_RST  16  // Connect reset to ensure display initialises

#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:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

#define SMOOTH_FONT


#define SPI_FREQUENCY  27000000
//#define SPI_FREQUENCY  40000000

#define SPI_READ_FREQUENCY  20000000

#define SPI_TOUCH_FREQUENCY  2500000

如果是1.8寸160*128的屏,则使用如下内容

#define USER_SETUP_ID 47

#define ST7735_DRIVER     // Configure all registers

#define TFT_WIDTH  128
#define TFT_HEIGHT 160

// #define ST7735_INITB
// #define ST7735_GREENTAB
// #define ST7735_GREENTAB2
// #define ST7735_GREENTAB3
// #define ST7735_GREENTAB128    // For 128 x 128 display
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
//#define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80   // For 160 x 80 display with 24 pixel offset
//这里是关键,如果不定义,颜色显示不对
#define TFT_RGB_ORDER TFT_RGB  // Colour order Red-Green-Blue
//#define TFT_RGB_ORDER TFT_BGR  // Colour order Blue-Green-Red

//#define TFT_INVERSION_ON
//#define TFT_INVERSION_OFF

// Generic ESP32 setup
#define TFT_MISO -1 //Not Connected
#define TFT_MOSI 17
#define TFT_SCLK 18
#define TFT_CS   14  
#define TFT_DC   15
#define TFT_RST  16  // Connect reset to ensure display initialises

#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:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

#define SMOOTH_FONT


#define SPI_FREQUENCY  27000000
//#define SPI_FREQUENCY  40000000

#define SPI_READ_FREQUENCY  20000000

#define SPI_TOUCH_FREQUENCY  2500000

// #define SUPPORT_TRANSACTIONS

然后找到User_Setup_Select.h文件,注释掉前面的#include <User_Setup.h> 一行,
新增一行
#include <User_Setups/Setup47_ST7735_S3_160X80.h>
Setup47_ST7735_S3_160X180.h就是刚才写的那个文件。

修改完成后,可以打开TFT_eSPI库带的JPG例程(需要根据例程注释的提示安装JPEGDedoder库)显示图片,看颜色是否正确
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qllaoda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值