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);