3.1 KiB
3.1 KiB
模块拆分 - AMOLED 显示与字模驱动 (Docs/50_module-breakdown/mod-lcd.md)
本模块管理 0.95寸 Truly AMOLED 屏幕引脚、电平控制、SPI 传输和无障碍大字/大图标渲染(分辨率为 120x240 像素)。
1. 模块职责说明
- 职责范围:
- 提供底层的 SPI 单向命令/数据通道。
- 控制
SGM_CTRL供电管脚以使能 SGM3833 PMIC。 - 支持屏幕窗口配置,实现底层清屏与局部像素写入。
- 读取
lcd_font.h库,在指定坐标绘制 16x32 大字符、32x64 超大字符与 48x48/64x64 超大单色位图。 - 实现各业务状态屏幕无障碍(A11y)画面绘制与水平垂直居中对齐。
2. 底层显示接口
void LCD_Init(void):初始化 LCD 引脚,置SGM_CTRL = 1使能 SGM3833 供电,并发送 RM69310 AMOLED 控制器的初始化寄存器配置序列。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):设置局部像素绘制范围,适配 Truly 120x240 竖屏对齐(处理 X 轴偏移量 +4)。void LCD_Clear(u16 color):将整块屏幕刷写为特定背景色。
3. 图文绘制与 UI 渲染
void LCD_ShowChar(u16 x, u16 y, char c, u16 fc, u16 bc):绘制字符。void LCD_ShowStringCentered(u16 y, char *str, u16 fc, u16 bc):在 120 像素宽屏幕上水平居中绘制 16x32px 宽的大字符串。void LCD_ShowString32x64Centered(u16 y, char *str, u16 fc, u16 bc):在 120 像素宽屏幕上水平居中绘制超大 (32x64px) 数字。void LCD_ShowImage(u16 x, u16 y, u16 w, u16 h, const u8 *img, u16 fc, u16 bc):在指定区域绘制单色位图(支持 32x32, 48x48, 64x64 格式)。void UI_ShowClockPage(SystemState state, u8 hour, u8 min):渲染时钟待机页面(120 宽大字版布局,32x64 走时时间,电量大图标)。void UI_ShowMenuPage(u8 selected_item):渲染无障碍主选择菜单,单页单大图标(48x48px)与大文字(16x32px)。void UI_ShowSetTimePage(u8 editing_field, u16 current_value):渲染大字单参数设定页面(如调整HEURE时的超大数值显示)。void UI_ShowArmDisarmSelectPage(u8 current_selection):渲染大图文布撤防手动切换界面。void UI_ShowAlarmPage(char *sensor_name, u8 zone):渲染防区告警页面,显示 64x64px 超大传感器图标、16x32px 闪烁文字与 4px 粗警告边框。void UI_ShowPairSearchPage(void):渲染对码等待搜索状态(含 64x64px 雷达图标)。void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix):渲染对码序号微调页。类型与 48x48px 图标只读,序号[ selected_suffix ]以 32x64px 超大字模闪烁显示。void UI_ShowBindingPage(void):渲染与 IPC 绑定对码界面,含 48x48px 摄像头大图标与 16x32px 发送提示,底部显示 Factory ID。