1.8寸 TFT ST7735

元器件
显示屏
库存 500

介绍

1.8英寸TFT彩色LCD,驱动IC ST7735S,128×160分辨率,SPI接口,65K色,带microSD卡槽,适合嵌入式彩色显示、智能手表原型、手持设备

规格参数

参数
供电3.3V (逻辑) + 3.3V-5V (背光)
尺寸1.8英寸
接口SPI (4线/3线)
背光白色LED
颜色65K色 (RGB565)
CS引脚TFT_CS + SD_CS(若有卡槽)
驱动ICST7735S
分辨率128×160
像素间距0.219mm
可视角度~120°
外形尺寸56mm×35mm
工作温度-20°C~70°C
显示区域28mm×35mm

代码例程

1.8寸TFT ST7735 多平台代码例程.md

# 1.8寸TFT ST7735 多平台代码例程

---

## Arduino (Adafruit ST7735)

```cpp
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS   10
#define TFT_DC   9
#define TFT_RST  8

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.initR(INITR_BLACKTAB);  // 1.8寸黑标签
  tft.setRotation(1);
  tft.fillScreen(ST7735_BLACK);
  tft.setTextColor(ST7735_WHITE);
  tft.setTextSize(1);
  tft.setCursor(0, 0);
  tft.println("ST7735 1.8 TFT");
  tft.drawRect(0, 0, 128, 160, ST7735_RED);
}

void loop() {
  tft.fillRect(10, 50, 108, 60, random(0xFFFF));
  tft.setCursor(10, 75);
  tft.setTextColor(ST7735_WHITE);
  tft.print("Color: 0x");
  tft.println(random(0xFFFF), HEX);
  delay(1000);
}
```

---

## ESP32 (TFT_eSPI — 高性能)

```cpp
// 需先配置 TFT_eSPI/User_Setup.h
// #define ST7735_DRIVER
// #define TFT_WIDTH 128 #define TFT_HEIGHT 160
// #define TFT_CS 5, TFT_DC 4, TFT_RST -1, TFT_MOSI 23, TFT_SCLK 18

#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();

void setup() {
  tft.init();
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_GREEN, TFT_BLACK);
  tft.drawString("ESP32 TFT_eSPI", 5, 5, 2);
  
  // 绘制渐变条
  for(int i=0; i<128; i++) {
    tft.drawFastVLine(i, 40, 40, tft.color565(i*2, 255-i*2, 128));
  }
}

void loop() {
  tft.fillCircle(64, 120, 20, random(0xFFFF));
  delay(500);
}
```

---

## STM32 HAL + LVGL

```c
// STM32 SPI DMA + LVGL 集成
#include "lvgl.h"
#include "st7735.h"

static lv_disp_drv_t disp_drv;
static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[128 * 10]; // 10行缓冲

void st7735_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_p) {
    uint16_t w = area->x2 - area->x1 + 1;
    uint16_t h = area->y2 - area->y1 + 1;
    st7735_set_window(area->x1, area->y1, area->x2, area->y2);
    st7735_write_data((uint8_t*)color_p, w * h * 2);
    lv_disp_flush_ready(drv);
}

void display_init(void) {
    st7735_hw_init(); // SPI初始化 + 背光
    lv_init();
    lv_disp_draw_buf_init(&draw_buf, buf, NULL, 128 * 10);
    lv_disp_drv_init(&disp_drv);
    disp_drv.hor_res = 128;
    disp_drv.ver_res = 160;
    disp_drv.flush_cb = st7735_flush;
    disp_drv.draw_buf = &draw_buf;
    lv_disp_drv_register(&disp_drv);
}
```

---

## MicroPython (ESP32)

```python
from machine import Pin, SPI
import st7735  # micropython-st7735
import time

spi = SPI(1, baudrate=20000000, sck=Pin(18), mosi=Pin(23))
tft = st7735.ST7735(spi, dc=Pin(4), cs=Pin(5), rst=Pin(2), 
                     width=128, height=160, rotation=0)

tft.fill(st7735.BLACK)
tft.text("MicroPython", 5, 5, st7735.WHITE)
tft.text("ST7735 TFT", 5, 15, st7735.GREEN)

# 绘制彩虹色条
colors = [st7735.RED, st7735.ORANGE, st7735.YELLOW, 
          st7735.GREEN, st7735.CYAN, st7735.BLUE, st7735.MAGENTA]
for i, c in enumerate(colors):
    tft.fill_rect(i * 18, 50, 18, 30, c)

tft.show()
```

参考资料

暂无参考文献