Files
stc32g128k/Docs/50_module-breakdown/mod-lcd.md

2.7 KiB
Raw Blame History

模块拆分 - LCD 显示与字模驱动 (Docs/50_module-breakdown/mod-lcd.md)

本模块管理 1.14寸 TFT LCD 屏幕引脚、电平控制、SPI 传输和界面图文渲染(分辨率为 135x240 像素)。

1. 模块职责说明

  • 职责范围
    1. 提供底层的 SPI 单向命令/数据通道。
    2. 控制 SGM_CTRL 供电管脚。
    3. 支持屏幕窗口配置,实现底层清屏与局部像素写入。
    4. 读取 lcd_font.h 库,在指定坐标绘制 8x16 字符与自定义大小位图。
    5. 实现各业务状态屏幕135x240 分辨率)画面绘制与文字对齐。

2. 底层显示接口

  • void LCD_Init(void):初始化 LCD 引脚,置 SGM_CTRL = 1 使能供电,并发送屏幕控制器的初始化 SPI 寄存器序列。
  • void LCD_WriteCmd(u8 cmd):拉低 LCD_RS 发送 SPI 命令。
  • void LCD_WriteData(u8 dat):拉高 LCD_RS 发送 SPI 数据。
  • void LCD_SetWindow(u16 x1, u16 y1, u16 x2, u16 y2):设置局部像素绘制范围(强制处理 X 轴偏量 +4)。
  • void LCD_Clear(u16 color):将整块屏幕刷写为特定背景色。

3. 图文绘制与 UI 渲染

  • void LCD_ShowChar(u16 x, u16 y, char c, u16 fc, u16 bc):在 (x, y) 坐标处绘制 ASCII 字符 c
  • void LCD_ShowString(u16 x, u16 y, char *s, u16 fc, u16 bc):循环打印字符串。
  • void LCD_ShowStringCentered(u16 y, char *str, u16 fc, u16 bc):在 135 像素宽屏幕上水平居中绘制 8 像素宽的字符串,水平起始坐标算法为 (135 - len * 8) / 2
  • void LCD_ShowString16x32Centered(u16 y, char *str, u16 fc, u16 bc):在 135 像素宽屏幕上水平居中绘制双倍大小 (16x32px) 的字符串,水平起始坐标算法为 (135 - len * 16) / 2
  • void LCD_ShowImage(u16 x, u16 y, u16 w, u16 h, const u8 *img, u16 fc, u16 bc):在指定区域绘制单色位图。
  • void UI_ShowClockPage(SystemState state, u8 hour, u8 min)渲染时钟待机页面135 宽布局),并根据布撤防状态在状态栏绘制相应锁状态图标。
  • void UI_ShowAlarmPage(char *sensor_name, u8 zone):渲染防区告警页面,显示对应的传感器位图和法语名称。
  • void UI_ShowPairMenuPage(u8 selected_index):渲染对码选择菜单。
  • void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix):渲染对码确认页,显示捕获的类型图标、名字前缀及带选框的 [ selected_suffix ] 数字序号(支持按键调整)。
  • void UI_ShowBindingPage(void):渲染与 IPC 绑定对码界面,并在屏幕底部居中显示手环自身的唯一 Factory ID