介绍
1.8英寸TFT彩色LCD,驱动IC ST7735S,128×160分辨率,SPI接口,65K色,带microSD卡槽,适合嵌入式彩色显示、智能手表原型、手持设备
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(若有卡槽) |
| 驱动IC | ST7735S |
| 分辨率 | 128×160 |
| 像素间距 | 0.219mm |
| 可视角度 | ~120° |
| 外形尺寸 | 56mm×35mm |
| 工作温度 | -20°C~70°C |
| 显示区域 | 28mm×35mm |
# 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()
```
暂无参考文献