/* * 模块名称:ST7735S LCD驱动 * 模块功能:提供128x160 RGB TFT屏幕的初始化、画点、画线、填充、显示字符串等功能 * 适用平台:STM32F103C8T6 + SPI2 * 作者:王建锋 * 创建日期:2026-07-13 * 修改记录: * 2026-07-13 王建锋 创建初始版本 */ #ifndef __ST7735S_H #define __ST7735S_H #ifdef __cplusplus extern "C" { #endif #include "main.h" #include /* 屏幕参数 */ #define LCD_WIDTH 128 /* 屏幕宽度 */ #define LCD_HEIGHT 160 /* 屏幕高度 */ /* 颜色定义 (RGB565) */ #define COLOR_BLACK 0x0000 #define COLOR_WHITE 0xFFFF #define COLOR_RED 0xF800 #define COLOR_GREEN 0x07E0 #define COLOR_BLUE 0x001F #define COLOR_YELLOW 0xFFE0 #define COLOR_CYAN 0x07FF #define COLOR_MAGENTA 0xF81F #define COLOR_ORANGE 0xFD20 #define COLOR_DARK_BLUE 0x0010 #define COLOR_DARK_GREEN 0x0200 #define COLOR_DARK_RED 0x8000 /* 颜色转换宏 */ #define RGB565(r, g, b) ((uint16_t)(((r) & 0xF8) << 8 | ((g) & 0xFC) << 3 | ((b) >> 3))) /* LCD控制引脚定义 - 根据CubeMX配置修改 */ #define LCD_CS_PORT LCD_CS_GPIO_Port #define LCD_CS_PIN LCD_CS_Pin #define LCD_DC_PORT LCD_DC_GPIO_Port #define LCD_DC_PIN LCD_DC_Pin #define LCD_RST_PORT LCD_RST_GPIO_Port #define LCD_RST_PIN LCD_RST_Pin #define LCD_SCL_PORT GPIOB #define LCD_SCL_PIN GPIO_PIN_13 #define LCD_SDA_PORT GPIOB #define LCD_SDA_PIN GPIO_PIN_15 /* LCD命令定义 */ #define LCD_CMD_SWRESET 0x01 /* 软件复位 */ #define LCD_CMD_SLPOUT 0x11 /* 退出睡眠 */ #define LCD_CMD_DISPON 0x29 /* 显示开启 */ #define LCD_CMD_DISPOFF 0x28 /* 显示关闭 */ #define LCD_CMD_CASET 0x2A /* 列地址设置 */ #define LCD_CMD_RASET 0x2B /* 行地址设置 */ #define LCD_CMD_RAMWR 0x2C /* 写入显存 */ #define LCD_CMD_MADCTL 0x36 /* 存储器访问控制 */ #define LCD_CMD_COLMOD 0x3A /* 像素格式设置 */ #define LCD_CMD_FRMCTR1 0xB1 /* 帧率控制1 */ #define LCD_CMD_FRMCTR2 0xB2 /* 帧率控制2 */ #define LCD_CMD_FRMCTR3 0xB3 /* 帧率控制3 */ #define LCD_CMD_INVCTR 0xB4 /* 显示反转控制 */ #define LCD_CMD_PWCTR1 0xC0 /* 功率控制1 */ #define LCD_CMD_PWCTR2 0xC1 /* 功率控制2 */ #define LCD_CMD_PWCTR3 0xC2 /* 功率控制3 */ #define LCD_CMD_PWCTR4 0xC3 /* 功率控制4 */ #define LCD_CMD_PWCTR5 0xC4 /* 功率控制5 */ #define LCD_CMD_VMCTR1 0xC5 /* VCOM控制1 */ #define LCD_CMD_GMCTRP1 0xE0 /* Gamma正向校正 */ #define LCD_CMD_GMCTRN1 0xE1 /* Gamma反向校正 */ /* 字体定义 */ #define FONT_WIDTH_8 8 /* 8x16字体宽度(含间距) */ #define FONT_HEIGHT_16 16 /* 8x16字体高度 */ /* * 函数功能:LCD初始化 * 入口参数:无 * 返回值:无 * 函数说明:初始化ST7735S屏幕,包括SPI、GPIO、显示参数配置 */ void st7735s_init(void); /* * 函数功能:设置显示窗口 * 入口参数:x1 - 起始列 * y1 - 起始行 * x2 - 结束列 * y2 - 结束行 * 返回值:无 * 函数说明:设置后续写入操作的窗口区域 */ void st7735s_set_window(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2); /* * 函数功能:填充矩形区域 * 入口参数:x1 - 起始列 * y1 - 起始行 * x2 - 结束列 * y2 - 结束行 * color - 填充颜色 (RGB565) * 返回值:无 * 函数说明:用指定颜色填充矩形区域 */ void st7735s_fill_rect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); /* * 函数功能:全屏填充 * 入口参数:color - 填充颜色 (RGB565) * 返回值:无 * 函数说明:用指定颜色填充整个屏幕 */ void st7735s_fill_screen(uint16_t color); /* * 函数功能:画点 * 入口参数:x - 列坐标 * y - 行坐标 * color - 颜色 (RGB565) * 返回值:无 * 函数说明:在指定位置画一个点 */ void st7735s_draw_pixel(uint16_t x, uint16_t y, uint16_t color); /* * 函数功能:画线 * 入口参数:x1 - 起始列 * y1 - 起始行 * x2 - 结束列 * y2 - 结束行 * color - 颜色 (RGB565) * 返回值:无 * 函数说明:画一条直线(Bresenham算法) */ void st7735s_draw_line(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color); /* * 函数功能:画矩形 * 入口参数:x - 左上角列 * y - 左上角行 * width - 宽度 * height - 高度 * color - 颜色 (RGB565) * 返回值:无 * 函数说明:画一个空心矩形 */ void st7735s_draw_rect(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color); /* * 函数功能:画圆 * 入口参数:x0 - 圆心列 * y0 - 圆心行 * radius - 半径 * color - 颜色 (RGB565) * 返回值:无 * 函数说明:画一个空心圆(Bresenham算法) */ void st7735s_draw_circle(uint16_t x0, uint16_t y0, uint16_t radius, uint16_t color); /* * 函数功能:显示字符 * 入口参数:x - 列坐标 * y - 行坐标 * ch - 字符 (ASCII 32-126) * color - 字符颜色 (RGB565) * bg_color - 背景颜色 (RGB565) * 返回值:无 * 函数说明:在指定位置显示一个8x16 ASCII字符 */ void st7735s_draw_char(uint16_t x, uint16_t y, char ch, uint16_t color, uint16_t bg_color); /* * 函数功能:显示字符串 * 入口参数:x - 列坐标 * y - 行坐标 * str - 字符串指针 * color - 字符颜色 (RGB565) * bg_color - 背景颜色 (RGB565) * 返回值:无 * 函数说明:在指定位置显示字符串 */ void st7735s_draw_string(uint16_t x, uint16_t y, const char *str, uint16_t color, uint16_t bg_color); /* * 函数功能:设置屏幕方向 * 入口参数:rotation - 方向 (0-3) * 返回值:无 * 函数说明:设置屏幕显示方向 * 0: 竖屏 * 1: 横屏 * 2: 竖屏反转 * 3: 横屏反转 */ void st7735s_set_rotation(uint8_t rotation); /* * 函数功能:设置背光 * 入口参数:state - 1:开 0:关 * 返回值:无 * 函数说明:控制LCD背光(如有硬件背光控制) */ void st7735s_backlight(uint8_t state); #ifdef __cplusplus } #endif #endif /* __ST7735S_H */