ST7735S 是一款由台湾晶宏科技(Sitronix Technology Corp.)生产的单芯片TFT LCD驱动控制器。它被广泛应用于各种需要彩色显示功能的中小型电子设备中,以其高性价比、低功耗和易于集成的特点而备受工程师和爱好者的青睐。
我使用的是一块来自淘宝上购买的1.8寸,128*160分辨率,SPI协议的TFT_LCD屏幕模块,店铺链接 台湾铼宝[OLED]

| 项目 | 参数 |
|---|---|
| 尺寸 | 1.8 英寸 TFT LCD |
| 分辨率 | 128RGB*160 Dot-matrix |
| 通信接口 | SPI-4 wire interface |
| 驱动芯片 | ST7735S |
| 颜色 | 全彩 |
| 外形尺寸 | 34.00 x 56 x 3.65(mm) |
| 显示区域 | 28.03 (W) *35.04 (H) |
| 像素尺寸 | 0.219(W)*0.219(H) |
| 工作电压 | 3.3V |
| 工作电流 | 30ma |
| 管脚数量 | 8Pin(2.54mm 间距排针) |
| 视角方向 | 12 点方向 |
| 工作温度 | -20 度到 70 度 |
| 序号 | 符号 | 说明 |
|---|---|---|
| 1 | GND | 电源地 |
| 2 | VCC | 电源正 3.3V |
| 3 | SCL | SPI 时钟线(与单片机 SPI_CLK 对接) |
| 4 | SDA | SPI 数据线(与单片面硬件 SPI_MOSI) |
| 5 | RES | 复位管脚 |
| 6 | DC | 数据 / 命令 |
| 7 | CS | SPI 片选 |
| 8 | BL | 背光控制开关,默认可不接 |
以上信息来自 台湾铼宝[OLED]
使用 afiskon 大佬的开源库 stm32-st7735 ,将 Adafruit 的 ST7735 库移植到了 STM32 上.
作者原文链接 : https://eax.me/stm32-st7735/ ,在使用之前推荐阅读一下.

在st7735.h文件中,修改句柄以及引脚定义

同样的,在该文件中,作者提供了一些屏幕参数预设,可以根据描述,找到符合你的屏幕模块对应参数,取消注释使用.

对于我购买的这款屏幕,参数应为:

这个宏定义表示当前使用的是160×128分辨率的屏幕。值为1表示启用此配置。
这两个宏定义了屏幕的实际显示区域尺寸:宽度为128像素,高度为160像素。
这两个宏定义了显示内容的起始偏移量:
注意坐标轴原点为左上角的像素点,向右向下为正。
这个宏定义了屏幕的旋转方向和颜色顺序,它是通过组合以下几个控制位实现的:
文件中还定义了其他MADCTL控制位,虽然当前配置未使用,但它们提供了更多显示选项:
void ST7735_Init(void)
void ST7735_DrawPixel(uint16_t x, uint16_t y, uint16_t color)
x:X坐标,范围0~ ST7735_WIDTH - 1y:Y坐标,范围0~ ST7735_HEIGHT - 1color:像素颜色,16位RGB565格式使用示例
void ST7735_FillRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color)
x:矩形左上角X坐标y:矩形左上角Y坐标w:矩形宽度h:矩形高度color:填充颜色,16位RGB565格式void ST7735_FillRectangleFast(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color)
x:矩形左上角X坐标y:矩形左上角Y坐标w:矩形宽度h:矩形高度color:填充颜色,16位RGB565格式void ST7735_FillScreen(uint16_t color)
color:填充颜色,16位RGB565格式void ST7735_FillScreen(uint16_t color)
color:填充颜色,16位RGB565格式 void ST7735_WriteString(uint16_t x, uint16_t y, const char* str, FontDef font, uint16_t color, uint16_t bgcolor)
x:字符串起始X坐标y:字符串起始Y坐标str:要显示的字符串font:字体定义,可选值为Font7x10、Font11x18等(在fonts.h中定义)color:文本颜色,16位RGB565格式bgcolor:背景颜色,16位RGB565格式 void ST7735_DrawImage(uint16_t x, uint16_t y, uint16_t w, uint16_t h, const uint16_t* data)
x:图像左上角X坐标y:图像左上角Y坐标w:图像宽度h:图像高度data:图像数据指针,16位RGB565格式的数组void ST7735_WriteString(uint16_t x, uint16_t y, const char* str, FontDef font, uint16_t color, uint16_t bgcolor)
invert:是否反转颜色,true表示反转,false表示正常显示void ST7735_WriteString(uint16_t x, uint16_t y, const char* str, FontDef font, uint16_t color, uint16_t bgcolor)
gamma:伽马值,可选值为:
图中是我使用ST7735_DrawImage( )函数将一个128*160的图片显示到lcd屏幕上
推荐的图片取模软件:【硬件图片取模软件!支持单色与彩色,图片编辑与裁剪以及阈值调整!】

#define ST7735_IS_160X128 1
#define ST7735_WIDTH 128
#define ST7735_HEIGHT 160
#define ST7735_XSTART 2
#define ST7735_YSTART 1
#define ST7735_ROTATION
(ST7735_MADCTL_MX | ST7735_MADCTL_MY | ST7735_MADCTL_RGB)
// 在坐标(10, 20)处绘制一个红色像素点
ST7735_DrawPixel(10, 20, ST7735_RED);
// 绘制一个蓝色填充矩形,左上角坐标(10, 20),宽50,高30
ST7735_FillRectangle(10, 20, 50, 30, ST7735_BLUE);
// 快速绘制一个绿色填充矩形
ST7735_FillRectangleFast(10, 20, 50, 30, ST7735_GREEN);
// 将整个屏幕填充为黑色
ST7735_FillScreen(ST7735_BLACK);
// 快速将整个屏幕填充为白色
ST7735_FillScreenFast(ST7735_WHITE);
// 在坐标(0, 0)处显示白色文本、黑色背景的"Hello World"
ST7735_WriteString(0, 0, "Hello World", Font_11x18, ST7735_WHITE, ST7735_BLACK);
// 定义一个16x16的图像数据
const uint16_t image_data[16*16] = { /* 图像数据 */ };
// 在坐标(10, 20)处显示图像
ST7735_DrawImage(10, 20, 16, 16, image_data);
// 反转显示颜色
ST7735_InvertColors(true);
// 恢复正常显示
ST7735_InvertColors(false);
// 设置伽马值为2.2
ST7735_SetGamma(GAMMA_22);