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

2.6 KiB
Raw Blame History

模块拆分 - AMOLED 显示与无障碍渲染 (Docs/50_module-breakdown/mod-lcd.md)

本模块管理 Truly 0.95寸 AMOLED 屏的底层 SPI 通信、窗口控制、以及无障碍A11y超大字体和图标的渲染。

1. 模块职责说明

  • 职责范围
    1. 管理 RM69310 控制器通信,提供单向 SPI 指令/数据写操作。
    2. 提供 SGM_CTRL(引脚 P3.4)控制,配合低功耗模块实现屏幕 PMIC 的上电与彻底断电。
    3. 物理窗口偏置处理Truly 120x240 AMOLED 屏的 GRAM X 轴起始位置有 +4 像素的偏置,设置显示窗口时必须进行偏移修正:LCD_SetWindow(x1 + 4, x2 + 4, y1, y2)
    4. 无障碍大字排版A11y渲染
      • 取消任何小于 16x32px 的微缩文本。
      • 时间显示使用 32x64px 超大点阵。
      • 防区图标使用 48x48px64x64px 超大单色位图。
      • 在 120 像素宽的屏幕内,应用水平居中公式:X_start = (120 - len * char_width) / 2
    5. 单页集中展示逻辑:控制各菜单页面和子修改页面在屏幕中只显示单焦点,避免多行小字杂乱堆叠。

2. 接口与函数说明

  • void LCD_Init(void):配置 P1.1~P1.6 控制线为推挽输出模式,并在拉高 SGM_CTRL 稳定后,发送 RM69310 初始化寄存器指令序列。
  • 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):清屏为指定底色(常态使用全黑以节省功耗)。
  • void LCD_ShowChar16x32(u16 x, u16 y, char c, u16 fc, u16 bc)在指定坐标绘制标准无障碍大字符16x32点阵
  • void LCD_ShowChar32x64(u16 x, u16 y, char c, u16 fc, u16 bc)在指定坐标绘制超大数字字符32x64点阵
  • void LCD_ShowImage(u16 x, u16 y, u16 w, u16 h, const u8 *img, u16 fc, u16 bc):渲染指定单色位图(支持 32x32/48x48/64x64/80x80 图标规格)。
  • void LCD_ShowStringCentered(u16 y, char *str, u16 fc, u16 bc)16x32 规格字符串居中渲染,单行限制最多 7 个字符。
  • void LCD_ShowString32x64Centered(u16 y, char *str, u16 fc, u16 bc)32x64 规格超大字符串居中渲染(如时钟显示)。