30 lines
1.8 KiB
Markdown
30 lines
1.8 KiB
Markdown
# 模块拆分 - LCD 显示与字模驱动 (docs/50_module-breakdown/mod-lcd.md)
|
||
|
||
本模块管理 AMOLED 屏幕引脚、SGM3833 电源使能、SPI 传输和界面图文渲染。
|
||
|
||
## 1. 模块职责说明
|
||
|
||
* **职责范围**:
|
||
1. 提供底层的 SPI 单向命令/数据通道。
|
||
2. 控制 SGM_CTRL 供电管脚。
|
||
3. 支持屏幕窗口配置,实现底层清屏与局部像素写入。
|
||
4. 读取 `lcd_font.h` 库,在指定坐标绘制 8x16 字符与自定义大小位图。
|
||
5. 实现各业务状态屏幕画面绘制。
|
||
|
||
## 2. 底层显示接口
|
||
|
||
* `void LCD_Init(void)`:初始化 LCD 引脚,置 `SGM_CTRL = 1` 使能正负高压供电,并发送 RM69310 的初始化 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_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)`:渲染时钟待机页面,并根据布撤防状态在状态栏绘制相应锁状态图标。
|
||
* `void UI_ShowAlarmPage(char *sensor_name, u8 zone)`:渲染防区告警页面,显示对应的传感器位图和法语名称。
|
||
* `void UI_ShowPairMenuPage(u8 selected_index)`:渲染对码选择菜单。
|