1.47显示屏

1. 产品简介

这是一款1.47英寸,分辨率为172×320的彩色高清IPS显示屏 。采用驱动芯片ST7789V3、SPI通讯接口,显示屏显示区域占比大,边框宽度仅 1mm,圆弧边角,外形小巧美观,显示效果精细、清晰,还原真实色彩。显示屏上可高清显示各种文字、图像、动画、甚至是视频,基于 Arduino 的图像显示 GDL 库和 LVGL 库,可以做出酷炫的动态效果,适合DIY电子项目。可广泛应用于迷你游戏机、迷你气象站、背包挂件、迷你时钟、迷你视频播放、礼物制作、小型仪表显示等场景。

2. 产品特性

3. 应用场景

4. 引脚排列图

引脚排列图

引脚名称 引脚功能
VCC DC3.3V-5V
GND 接地
SCLK SPI时钟信号
MOSI SPI主信号
CS SPI片选信号
RES 复位信号
DC 命令信号
BLK 背光信号

5. 规格参数

6. 产品尺寸图

尺寸图

7. 使用教程

7.1 硬件准备

7.2 软件准备

7.3 硬件连接

在Firebeetle ESP32-E主板上连接1.47寸显示屏有两种方法,一种是用FPC线连接GDI接口,另一种则是连接SPI功能引脚。具体连接如下图所示。

方法一:

GDI

以下是GDI接口的引脚线序列表:

FPC PINS FireBeetle ESP32 PINS Description
VCC 3V3 3.3V
BLK(PWM调光) 12/D13 背光
GND GND GND
SCLK 18/SCK SPI时钟
MOSI 23/MOSI 主机输出,从机输入
MISO 19/MISO 主机输入,从机输出
DC 25/D2 数据/命令
RES 26/D3 复位
CS 14/D6 TFT片选
SDCS 13/D7 SD卡片选
FCS 0/D5 字库
TCS 4/D12 触摸
SCL 22/SCL I2C时钟
SDA 21/SDA I2C数据
INT 16/D11 INT
BUSY-TE 17/D10 防撕裂引脚
X1 NC 自定义引脚1
X2 NC 自定义引脚2

方法二:

SPI接口

LCD高清显示屏: VCC---(连接)---ESP32-E主控: 3V3;

LCD高清显示屏: GND---(连接)---ESP32-E主控:GND ;

LCD高清显示屏: SCLK---(连接)---ESP32-E主控:18/SCK ;

LCD高清显示屏: MOSI---(连接)---ESP32-E主控:23/MOSI ;

LCD高清显示屏: CS---(连接)---ESP32-E主控:14/D6 ;

LCD高清显示屏: RES---(连接)---ESP32-E主控:26/D3;

LCD高清显示屏: DC---(连接)---ESP32-E主控:25/D2 ;

LCD高清显示屏: BLK---(连接)---ESP32-E主控:13/D7 ;

7.4 例程演示

7.4.1 中文字体示例

示例代码

#include "DFRobot_GDL.h"

#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3
#define TFT_BL  D7

DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
void setup() {
  screen.begin();
  screen.setTextSize(4);
  screen.fillScreen(COLOR_RGB565_BLACK);//背景颜色
  screen.setFont(&SIMKAIFont72pt);//字体大小(12pt 18pt 24pt 36pt 48pt 72pt)
  screen.setCursor(/*x=*/10,/*y=*/120);//文字位置
  screen.setTextColor(COLOR_RGB565_BLUE); //文字颜色
  screen.setTextWrap(true);
  screen.print("你好");//中文字符
}

void loop() {
}

运行结果:

烧录示例程序,屏幕显示蓝色中文字体“你好”

中文你好

7.4.2 英文字体示例

示例代码

#include "DFRobot_GDL.h"
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3
#define TFT_BL  D7

DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
/* M0 mainboard DMA transfer */
//DFRobot_ST7789_172x320_DMA_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
void setup() {
  screen.begin();
  screen.setTextSize(2);
  screen.fillScreen(COLOR_RGB565_BLACK);//背景颜色
  screen.setFont(&FreeMono24pt7b);//字体大小(9 12 18 24)
  screen.setCursor(/*x=*/32,/*y=*/200);//文字位置
  screen.setTextColor(COLOR_RGB565_LGRAY);//文字颜色
  screen.setTextWrap(true);
  screen.print("DF");//英文字符
}
void loop() {
}

运行结果:

烧录示例程序,屏幕显示灰色英文“DF”

英文

7.4.3 彩色背景示例

示例代码

#include "DFRobot_GDL.h"

#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3
#define TFT_BL  D4

DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
/* M0 mainboard DMA transfer */
//DFRobot_ST7789_172x320_DMA_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);

byte red = 29; 
byte green = 0;
byte blue = 0; 
byte state = 0;
boolean initial = 1;

void setup() {
  screen.begin();
  screen.fillScreen(COLOR_RGB565_LGRAY);
  for(uint16_t i=0;i<screen.height();i++){
    screen.drawFastHLine(0,i,screen.width(),rainbow()); 
   }
}

void loop() {
}

unsigned int rainbow()
{
    switch (state) {
      case 0:
        green ++;
        if (green == 64) {
          green = 63;
          state = 1;
        }
        break;
      case 1:
        red--;
        if (red == 255) {
          red = 0;
          state = 2;
        }
        break;
      case 2:
        blue ++;
        if (blue == 32) {
          blue = 31;
          state = 3;
        }
        break;
      case 3:
        green --;
        if (green == 255) {
          green = 0;
          state = 4;
        }
        break;
      case 4:
        red ++;
        if (red == 32) {
          red = 31;
          state = 5;
        }
        break;
      case 5:
        blue --;
        if (blue == 255) {
          blue = 0;
          state = 0;
        }
        break;
    }
    return red << 11 | green << 5 | blue;
}

运行结果:

烧录示例程序,屏幕变为彩虹色

彩虹

7.4.4 动画演示

示例代码

#include "DFRobot_GDL.h"

#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3
#define TFT_BL  D4


DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
/* M0 mainboard DMA transfer */
//DFRobot_ST7789_172x320_DMA_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);

void setup() {
  screen.begin();
}

void loop(){
    testLine();
    testFastLines(COLOR_RGB565_PURPLE,COLOR_RGB565_YELLOW);       
    testRects(COLOR_RGB565_BLACK,COLOR_RGB565_WHITE);
}

void testLine(){
  uint16_t color = 0x00FF;
  screen.fillScreen(COLOR_RGB565_BLACK);
  for (int16_t x=0; x < screen.width(); x+=6) {
    screen.drawLine(/*x0=*/screen.width()/*Screen width*//2, /*y0=*/screen.height()/*Screen height*//2, /*x1=*/x, /*y1=*/0, /*c=*/color+=0x0700);
  }
  for (int16_t y=0; y < screen.height(); y+=6) {
    screen.drawLine(screen.width()/2, screen.height()/2, screen.width(), y, color+=0x0700);
  }
  for (int16_t x = screen.width(); x >= 0; x-=6) {
    screen.drawLine(screen.width()/2, screen.height()/2, x,screen.height(), color+=0x0700);
  } 
  for (int16_t y = screen.height(); y >= 0; y-=6) {
    screen.drawLine(screen.width()/2, screen.height()/2, 0, y, color+=0x0700);
  }
}
void testFastLines(uint16_t color1, uint16_t color2) {
  for (int16_t y=0; y < screen.height(); y+=4) {

    screen.drawFastHLine(/*x=*/0, /*y=*/y, /*w=*/screen.width(),/*c=*/color2);
    delay(10);
  }

  for(int16_t x=0; x < screen.width(); x+=3) {

    screen.drawFastVLine(/*x=*/x, /*y=*/0, /*h=*/screen.height(), /*c=*/color1);
    delay(10);
  }
}


void testRects(uint16_t color1, uint16_t color2) { 
    screen.fillScreen(COLOR_RGB565_BLACK);
    int16_t x=screen.width()-12;
    for (; x > 100; x-=screen.width()/40) {

      screen.drawRect(/*x=*/screen.width()/2 -x/2, /*y=*/screen.height()/2 -x/2 , /*w=*/x, /*h=*/x, /*color=*/color2+=0x0F00);
      delay(100);
    }

    screen.fillRect(/*x=*/screen.width()/2 -x/2, /*y=*/screen.height()/2 -x/2 , /*w=*/x, /*h=*/x, /*color=*/color2);
    delay(100);
    for(; x > 6; x-=screen.width()/40){
      screen.drawRect(screen.width()/2 -x/2, screen.height()/2 -x/2 , x, x, color1);
      delay(100);
    }
}

运行结果:

烧录示例程序,屏幕运行程序设定的动画效果

动画

7.4.5 折线图演示

示例代码

#include "DFRobot_UI.h"
#include "Arduino.h"
#include "DFRobot_GDL.h"
#include "DFRobot_Touch.h"

#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3
#define TFT_BL  D4


DFRobot_ST7789_172x320_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);
/* M0 mainboard DMA transfer */
//DFRobot_ST7789_172x320_DMA_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST,/*bl=*/TFT_BL);

DFRobot_UI ui(&screen, NULL);

int16_t point3[7][2] ={{0,50},{10,55},{15,65},{20,70},{63,75},{70,80},{80,90}};//折线点坐标
void setup()
{
  ui.begin();
  DFRobot_UI::sCoordinate_t &coord = ui.creatCoordinate();
  coord.setPoint(point3,7,COLOR_RGB565_RED);//折线颜色
  ui.draw(&coord);

}
void loop()
{
  ui.refresh();
}

运行结果:

烧录示例程序,屏幕显示设定的折线图

显示折线图

8. 更多资料下载

DFR0995_STP 3D File.rar

DFR0995_2D_CAD.png

DFR0995_电路原理图.pdf

9. 常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

DFshopping_car1.png DFRobot商城购买链接

10. 修改历史

10.1 WIKI文档修改历史

文档版本号 修改时间 修改人 修改内容
V1.0 2022.11.28 康啸 第一版发布

10.2产品修改历史

产品版本号 修改时间 修改人 产品修改内容
V1.0 2022.11.28 谭晓兰 第一版发布