diff --git a/Docs/20_requirements-detail/main.md b/Docs/20_requirements-detail/main.md index ab78510..05a105d 100644 --- a/Docs/20_requirements-detail/main.md +++ b/Docs/20_requirements-detail/main.md @@ -7,9 +7,9 @@ 手环共配备 **5 个物理按键**:侧边 3 个(▲ 上移、▼ 下移、■ 确认/CONFIRM),上部 2 个(相同的 SOS1、SOS2,具备完全一致的并联电气逻辑)。 ### 1.1 页面与状态定义 -* **时钟待机状态 (STATE_CLOCK)**:正常显示时间、日期、电量及布撤防状态。 +* **时钟待机状态 (STATE_CLOCK)**:正常显示时间、日期、电量及布撤防状态(大字版)。 * **低功耗休眠状态 (STATE_SLEEP)**:无按键操作 10 秒后自动进入。屏幕完全关闭,拉低 `SGM_CTRL = 0` 关闭 SGM3833 供电,单片机进入 Power-Down 挂起状态。 -* **主选择菜单 (STATE_MENU)**:在 `STATE_CLOCK` 下长按 **■ 确认键** 3 秒进入。显示四个选项,通过 ▲/▼ 键进行滚动,CONFIRM 键确认进入: +* **主选择菜单 (STATE_MENU)**:在 `STATE_CLOCK` 下长按 **■ 确认键** 3 秒进入。单屏只显示 1 个功能,通过 ▲/▼ 键来回翻页,CONFIRM 键确认进入: 1. `1. DATE/HEURE` (进入时间日期修改界面 `STATE_SET_TIME`) 2. `2. APPAIRAGE` (进入对码配对搜索界面 `STATE_PAIR_SEARCH`) 3. `3. ARM/DISARM` (进入系统布撤防手动设定界面 `STATE_ARM_DISARM_SELECT`) @@ -21,8 +21,8 @@ | :--- | :--- | :--- | :--- | :--- | | **时钟待机 (STATE_CLOCK)** | 无动作 | 无动作 | 长按 3 秒:进入主选择菜单 | 短按/长按:立即跳转至发送 SOS 报警 (`STATE_SOS_EMITTED`) | | **低功耗休眠 (STATE_SLEEP)** | 短按:唤醒并恢复至时钟待机 | 短按:唤醒并恢复至时钟待机 | 短按:唤醒并恢复至时钟待机 | 短按/长按:唤醒系统并立即触发 SOS 报警 | -| **主选择菜单 (STATE_MENU)** | 短按:菜单项向上滚动 | 短按:菜单项向下滚动 | 短按:确认进入选中分支;长按 3 秒:退出菜单返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | -| **时间修改 (STATE_SET_TIME)** | 短按:增加当前选中数值 | 短按:减少当前选中数值 | 短按:保存并切换到下一个修改位;长按 3 秒:放弃修改返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | +| **主选择菜单 (STATE_MENU)** | 短按:上一个菜单条目(切换大图标与大字) | 短按:下一个菜单条目(切换大图标与大字) | 短按:确认进入选中分支;长按 3 秒:退出菜单返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | +| **时间修改 (STATE_SET_TIME)** | 短按:增加当前选中数值 | 短按:减少当前选中数值 | 短按:保存并切换到下一个修改参数;长按 3 秒:放弃修改返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | | **对码配对 (STATE_PAIR_SEARCH)** | 无动作 | 长按 2 秒:放弃对码返回主菜单 | 无动作 | 短按/长按:立即跳转至发送 SOS 报警 | | **对码确认微调 (STATE_PAIR_CONFIRM)** | 短按:自增后缀序号 (01->99) | 短按:自减后缀序号 (99->01) | 短按:确认保存配置并存入 Flash,返回时钟;长按 3 秒:放弃保存返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | | **布撤防手动设定 (STATE_ARM_DISARM_SELECT)** | 短按:切换布撤防高亮项 | 短按:切换布撤防高亮项 | 短按:保存选定状态返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 | @@ -34,13 +34,13 @@ > 1. **双 SOS 按键冗余**:上部的两个 SOS 键在电路与软件上完全等价。按下其中任意一个按键,均会触发相同的 SOS 信号采集与求救动作。 > 2. **一键报警优先级**:除了在报警状态和本地 SOS 发送状态下按 SOS 键为解除报警外,在其它任意状态下,短按或长按 SOS 键均拥有最高优先级,立刻强行中止当前业务并跳转至 SOS 呼救状态。 > 3. **对码自动类型识别与后缀选择**: -> * 手环在接收到 433MHz 射频对码信号时,**自动根据数据码(Data Code)识别传感器类型**(如门磁、红外、烟感等,无须用户手动选择类型),并直接跳转到对码微调页面。 -> * 在微调确认页面中,传感器类型和图标为只读显示,用户仅需通过 ▲/▼ 键增减微调该传感器的后缀序号(01~99)。按 CONFIRM 键即可一键保存并写入 Flash 数据库。 +> * 手环在接收到 433MHz 射频对码信号时,**自动根据数据码(Data Code)识别传感器类型**,并直接跳转到对码微调页面。 +> * 在微调确认页面中,传感器类型和图标以大字只读显示,用户仅需通过 ▲/▼ 键增减微调该传感器的超大数字后缀序号(01~99)。按 CONFIRM 键即可一键保存并写入 Flash 数据库。 > 4. **低功耗休眠与唤醒**:在待机、菜单或非报警页面下,若 **10秒内无任何按键操作**,系统将自动关闭 OLED 屏幕、切断 SGM3833 PMIC 电源,并将 MCU 挂起进入 Power-Down 停机模式。任何按键的按下或射频信号的接收都会通过中断将 CPU 瞬间唤醒。 ## 2. 传感器对码与报警映射矩阵 -手环接收到 433MHz 传感器射频数据后,通过匹配预设数据码(高 4 位为类型)和地址码,根据下表驱动多色 LED、马达振动波形并更新 LCD 显示。本系统支持 7 种不同的外部传感器类型,并预留了出厂预设的固定名称前缀。 +手环接收到 433MHz 传感器射频数据后,通过匹配预设数据码(高 4 位为类型)和地址码,根据下表驱动多色 LED、马达振动波形并更新 LCD 显示。为了方便视障及老年用户识别,显示均采用超大图标与闪烁红边框。 | 传感器类型 | 数据码标识 | 预设名前缀 | LED 颜色 | 默认防区类型 | 马达振动波形 (周期 5 秒) | | :--- | :--- | :--- | :--- | :--- | :--- | diff --git a/Docs/40_ui-design/main.md b/Docs/40_ui-design/main.md index 25db651..a2d8e57 100644 --- a/Docs/40_ui-design/main.md +++ b/Docs/40_ui-design/main.md @@ -1,116 +1,124 @@ -# UI 设计 (Docs/40_ui-design/main.md) - -本章节定义手环 120x240 Truly AMOLED 屏幕的画面布局、各页面坐标位置、中文字体/ASCII 字符对齐基线以及局部刷新逻辑。 - -## 1. 屏幕物理参数与刷新机制 - -* **屏幕规格**:0.95寸 Truly AMOLED 屏,物理分辨率 **`120x240`**。 -* **竖向屏规范**:屏幕窗口配置为 **`120` 像素宽,`240` 像素高**。页面中的时钟、菜单、报警元素均采用竖屏垂直居中排版(以 `X=60` 为几何中线)。 -* **坐标偏移修正**: Truly AMOLED 屏幕驱动芯片(RM69310)控制的 GRAM 存在偏置。为了使画面对齐,写屏窗口渲染必须应用 **X 轴偏移量 +4,Y 轴偏移量 +0**。即:`LCD_SetWindow(x1 + 4, x2 + 4, y1, y2)`。 -* **局部刷新防抖机制**:清除重绘标志(`Redraw`)的动作必须在具体的刷新绘制块结束时重置,防止因为主循环高速轮询而产生屏幕闪烁。 - ---- - -## 2. 页面布局与坐标坐标规范 - -### 2.1 时钟待机界面 (STATE_CLOCK) - -时钟页面作为常态显示,包括状态栏、数字时钟和日期行。 - -``` -+-----------------------------------------+ -| 🔒 ARME 🔋 85% | <- 状态栏 (Y=24~27) -| | -| | -| 10:35 | <- 中央时间 (Y=80~128) -| | -| | -| VEN. 07-10 | <- 底部日期 (Y=180) -| | -+-----------------------------------------+ -``` - -* **状态栏电量显示(极重要)**: - * **电池图标** 绘制在 `X=82, Y=27`。 - * **电量百分比** 绘制在 `X=76, Y=24`(以 `text-anchor="end"` 右对齐绘制)。如果处于充电状态,追加 `+` 号后缀显示为 `85%+`,起始绘制坐标向左偏置,以确保与电池图标之间依然有安全间距,不发生碰撞。 -* **安防状态显示**: - * **布防状态 (ARMED)**:状态栏左侧显示红色闭锁 `🔒` 图标,显示 `ARME`。 - * **撤防状态 (DISARMED)**:状态栏左侧显示绿色开锁 `🔓` 图标,显示 `DESARME`。 - -### 2.2 主选择菜单页面 (STATE_MENU) - -由时钟待机长按 CONFIRM 键 3 秒进入。显示四个功能条目,供滚动选择: -``` -+-----------------------------------------+ -| - MENU - | <- 标题 (Y=30) -| | -| 1. DATE/HEURE | <- 条目 1 (Y=80) -| > 2. APPAIRAGE < | <- 选中项高亮并加尖括号 (Y=115) -| 3. ARM/DISARM | <- 条目 3 (Y=150) -| 4. LIAISON IPC | <- 条目 4 (Y=185) -+-----------------------------------------+ -``` -* 当前所选中的菜单项前后加上闪烁的 `> <` 箭头或以高亮粗体形式渲染,其余非选中项正常亮度显示。 -* 短按 ▲ 键向上滚动,▼ 键向下滚动。短按 CONFIRM 键进入该项。 - -### 2.3 功能设定与子界面设计 - -#### 2.3.1 时间日期修改界面 (STATE_SET_TIME) -* **页面指示**:顶部大字 `REGLAGE HEURE`。 -* **数据列表**:居中分行显示当前编辑的 `HOUR`、`MIN`、`SEC`、`YEAR`、`MONTH`、`DAY`。 -* **光标与交互**:当前正在修改的数值行(如修改“小时”)闪烁或带有下划线高亮。按 ▲ 键增加数值,▼ 键减小数值,短按 CONFIRM 确认并跳转至下一项,全部设置完后自动保存返回时钟页。 - -#### 2.3.2 传感器对码等待与配对界面 (STATE_PAIR_SEARCH) -* **顶部标题**:显示 `APPAIRAGE`(配对)。 -* **中央图案**:绘制雷达搜索波纹动画 `SEARCHING...`,并闪烁提示 `DECLENCH. SENS`(触发传感器)。 - -#### 2.3.3 对码确认与序号微调界面 (STATE_PAIR_CONFIRM) -当手环解码到传感器对码信号后,系统自动依据 4-bit 数据码解析出传感器类型,直接切入此确认页进行序号编辑: -``` -+-----------------------------------------+ -| ✓ RECU (Y=40) -| -| PORTE (Y=90) <- 传感器类型 (只读显示) -| -| [ 🚪 ICON ] (Y=130) <- 对应位图图标 (32x32px) -| -| [ 01 ] (Y=180) <- 序号微调选框 (当前高亮可编辑,按 ▲/▼ 修改) -+-----------------------------------------+ -``` -* **交互逻辑**: - * 页面显示捕获到的传感器类型文字和 32x32px 对应的物理位图图标。该字段为只读,不允许修改。 - * 页面焦点默认并唯一停留在下方的序号选框 `[ 01 ]` 上。 - * 用户直接按 ▲/▼ 键增减数字序号(01~99)。 - * 短按 CONFIRM 键完成最终保存并写入数据库,退回到时钟待机。 - * *长按 CONFIRM 键 3 秒放弃保存并直接返回时钟待机*。 - -#### 2.3.4 系统布撤防手动选择界面 (STATE_ARM_DISARM_SELECT) -* **顶部标题**:显示 `REG. ALARME`。 -* **两个状态选项**: - * `[ ARME ]` - * `[ DESARME ]` -* 按 ▲ / ▼ 键在这两者之间切换高亮。按 CONFIRM 键确认生效,系统状态转入 ARMED 或 DISARMED 并返回时钟页。 - -#### 2.3.5 IPC 绑定发射界面 (STATE_IPC_BIND) -* **页面指示**:显示 `LIAISON IPC` (IPC 绑定)。 -* **发射中提示**:中央大字显示 `ENVOI EN COURS`(正在发送),绘制动态发射波形,系统使用 `bracelet_factory_id` 自动连续发射 EV1527 数据码为 `0x01` 的对码广播包。 -* **物理地址展示**:屏幕底部显示当前手环出厂唯一地址 `ID: 0xXXXXX`。 -* **退出/返回机制**: - 1. 自动退出:发射持续约 3 秒后,自动结束并退回时钟待机状态; - 2. 按键退出:**长按 CONFIRM 键 3 秒** 或 **长按 ▼ 键 2 秒** 立刻主动退出发射状态并返回时钟待机。 - -### 2.4 报警触发与本地 SOS 界面 (STATE_ALARMING / STATE_SOS_EMITTED) - -* **报警提示边框**:全屏闪烁的红色警告虚线/实线边框。 -* **中央图标**:根据触发的防区传感器类型,居中绘制对应的单色位图图标(32x32px)。 -* **主动 SOS 界面**:大字显示 `SOS EMIS`,居中显示 `🚨` 旋转警灯图标。 - ---- - -## 3. 文字居中对齐与字模基线规范 - -为保证排版美观,[Drivers/lcd_font.h](file:///c:/workfile/105/stc32g12k128/Drivers/lcd_font.h) 内的标准字模点阵需要满足如下基线对齐: -* **水平居中公式**: - * 对于标准 8px 宽字符:X 轴绘制起点为 `(120 - len * 8) / 2`。 - * 对于双倍放大 16px 宽时钟字符:X 轴绘制起点为 `(120 - len * 16) / 2`。 -* **百分号(%)符号基线修正**:百分号字符在 `lcd_font.h` 数组的索引 `0x25` 中,点阵数据需**向上平移 2 像素**,以和 `0~9` 数字的基线保持严格水平对齐,避免百分号整体下沉。 +# UI 设计 (Docs/40_ui-design/main.md) + +本章节定义手环 120x240 Truly AMOLED 屏幕的画面布局、各页面坐标位置、中文字体/ASCII 字符对齐基线以及局部刷新逻辑。 +针对**特殊人群(如视力障碍者、老年人)**的需求,本界面采取了**大字版与大图标无障碍(Accessibility / A11y)设计系统**。 + +--- + +## 1. 无障碍(A11y)大字设计系统规范 + +为确保特殊人群能清晰阅读,界面设计遵循以下准则: +1. **最小字号限制**:取消所有 8x16px 或更小的微缩文本。基础信息字号不小于 **16x32px**。 +2. **超大核心数据**:时间数字、设定参数、传感器序号等核心数据使用 **32x64px**(超大点阵字模)呈现。 +3. **大图标辅助**:所有页面均配备 **48x48px 或 64x64px 的超大单色位图图标**,结合高对比度色彩(红/绿/黄/黑),方便用户一眼识别功能。 +4. **单页单焦点排版**:避免多行数据堆叠。菜单、时间设定、对码等页面在屏幕中**每次只显示当前编辑或选中的一个条目**,把所有的屏幕空间留给最大化的字体和图标。 +5. **坐标偏移修正**: Truly AMOLED 屏幕写屏窗口渲染必须应用 **X 轴偏移量 +4,Y 轴偏移量 +0**。即:`LCD_SetWindow(x1 + 4, x2 + 4, y1, y2)`。 + +--- + +## 2. 页面布局与坐标坐标规范 + +### 2.1 时钟待机界面 (STATE_CLOCK) + +时钟页面作为常态显示,突出显示当前电量和超大时钟: + +``` ++-----------------------------------------+ +| [🔒 32x32] 🔋 85%+ | <- 状态栏 (Y=20~35) (电池图标与16x32px电量) +| | +| | +| 10:35 | <- 居中超大时间 (Y=70~134) (32x64px字模) +| | +| | +| VEN. 07-10 | <- 底部大日期 (Y=180~212) (16x32px字模) +| | ++-----------------------------------------+ +``` + +* **状态栏电量显示**: + * **电池图标** 放大绘制在 `X=80, Y=25` (大图标规格)。 + * **电量百分比** 采用 `16x32px` 字模,右对齐。充电时显示 `+` 号。 +* **安防状态显示**: + * 状态栏左侧绘制 **32x32px** 的超大布撤防锁图标:红色闭锁 `🔒`(布防),绿色开锁 `🔓`(撤防),不再显示小文字,使用户看图即懂。 + +### 2.2 主选择菜单页面 (STATE_MENU) + +为了将字体放大到极限,主菜单不再采用4行列表的形式,而是采用**单屏单条目循环切换**: +``` ++-----------------------------------------+ +| - MENU - | <- 标题 (Y=20) (16x32px) +| | +| [⏰ 48x48] | <- 选中项大图标 (Y=60~108) +| | +| 1. DATE/HEURE | <- 选中项大字文本 (Y=150~182) (16x32px) +| | +| ▲ / ▼ | <- 翻页提示符 (Y=205) (16x32px) ++-----------------------------------------+ +``` +* 屏幕中央显示当前选中功能的 **48x48px** 图标,下方以 **16x32px** 粗体显示功能名称。 +* 用户按 ▲ 或 ▼ 键时,页面以幻灯片形式切换: + 1. `1. DATE/HEURE` (对应 ⏰ 时钟图标) + 2. `2. APPAIRAGE` (对应 📡 雷达对码图标) + 3. `3. ARM/DISARM` (对应 🔒 防区盾牌图标) + 4. `4. LIAISON IPC` (对应 📷 摄像头图标) +* 短按 CONFIRM 键确认进入当前显示的功能。 + +### 2.3 功能设定与子界面设计 + +#### 2.3.1 时间日期修改界面 (STATE_SET_TIME) +为了避免小字,时间设置每次只微调一个数值: +* **页面指示**:顶部大字显示当前修改的字段,例如 `REGLAGE HEURE` (16x32px)。 +* **中央数值**:正中央显示正在修改的两位数值(如小时 `10`),字号采用 **32x64px** 超大号。数值上下有明显的闪烁三角箭头指示。 +* **交互**:按 ▲ / ▼ 调整该值。短按 CONFIRM 保存该值并切入下一项(分 $ ightarrow$ 秒 $ ightarrow$ 年 $ ightarrow$ 月 $ ightarrow$ 日)。 + +#### 2.3.2 传感器对码等待与配对界面 (STATE_PAIR_SEARCH) +* **顶部标题**:显示 `APPAIRAGE` (16x32px)。 +* **中央图案**:绘制占满屏幕中部的雷达搜索大图标(64x64px)并闪烁。 + +#### 2.3.3 对码确认与序号微调界面 (STATE_PAIR_CONFIRM) +当手环解码到传感器对码信号后,切入此确认页: +``` ++-----------------------------------------+ +| ✓ RECU | <- 状态提示 (Y=20) (16x32px) +| | +| [🚪 48x48] | <- 传感器大图标 (Y=55~103) +| | +| PORTE | <- 类型名称 (Y=120) (16x32px) +| | +| [ 01 ] | <- 序号微调框 (Y=170~234) (32x64px) ++-----------------------------------------+ +``` +* **元素布局**: + * **传感器图标** 使用 **48x48px** 超大单色位图。 + * **类型前缀** 使用 **16x32px**。 + * **数字序号选框** 使用 **32x64px** 超大数字。用户按 ▲/▼ 直接微调序号,CONFIRM 键保存。 + +#### 2.3.4 系统布撤防手动选择界面 (STATE_ARM_DISARM_SELECT) +* **页面显示**:屏幕正中央显示当前拟设定的状态: + * `[ ARME ]`(配 48x48px 盾牌图标) + * `[ DESARME ]`(配 48x48px 虚线开锁图标) + * 字体全部使用 **16x32px**。按 ▲/▼ 键来回切换,按 CONFIRM 键保存生效。 + +#### 2.3.5 IPC 绑定发射界面 (STATE_IPC_BIND) +* **图形指示**:正中央显示 **48x48px** 的摄像头绑定大图标,配合动态声波向外发射动画。 +* **大字提示**:上方显示 `LIAISON` (16x32px),下方显示 `EN COURS` (16x32px)。 +* **物理地址展示**:底部以 8x16px 显示手环地址 `ID: 0xXXXXX`。 +* **退出/返回**:长按 CONFIRM 键 3 秒 或 长按 ▼ 键 2 秒主动退出。 + +### 2.4 报警触发与本地 SOS 界面 (STATE_ALARMING / STATE_SOS_EMITTED) + +手环发生报警时的显示要具有极强的视觉冲击力: +* **警告框**:全屏外围红绿交替闪烁的 4 像素宽粗线警告框。 +* **中央图标**:根据传感器类型,居中绘制对应的 **64x64px** 的超大单色位图图标(如巨大的火苗 `🔥`、门锁 `🚪`)。 +* **主动 SOS 界面**:顶部显示 `SOS` (16x32px),中央显示巨大的 `🚨` 警灯图标 (64x64px)。 +* **底部文本**:大字显示 `PORTE 01` 或 `SOS EMIS` (16x32px)。 + +--- + +## 3. 文字居中对齐与字模基线规范 + +为保证排版美观,[Drivers/lcd_font.h](file:///c:/workfile/105/stc32g12k128/Drivers/lcd_font.h) 内的标准字模点阵需要满足如下基线对齐: +* **水平居中公式**: + * 对于大字符(16px宽):X 轴绘制起点为 `(120 - len * 16) / 2`。 + * 对于超大字符(24px或32px宽):X 轴绘制起点为 `(120 - len * 32) / 2`。 +* **百分号(%)符号基线修正**:百分号字符在 `lcd_font.h` 数组的索引 `0x25` 中,点阵数据需**向上平移 2 像素**,以和 `0~9` 数字的基线保持严格水平对齐,避免百分号整体下沉。 diff --git a/Docs/50_module-breakdown/mod-lcd.md b/Docs/50_module-breakdown/mod-lcd.md index 2bacc57..4c91417 100644 --- a/Docs/50_module-breakdown/mod-lcd.md +++ b/Docs/50_module-breakdown/mod-lcd.md @@ -1,6 +1,6 @@ # 模块拆分 - AMOLED 显示与字模驱动 (Docs/50_module-breakdown/mod-lcd.md) -本模块管理 0.95寸 Truly AMOLED 屏幕引脚、电平控制、SPI 传输和界面图文渲染(分辨率为 120x240 像素)。 +本模块管理 0.95寸 Truly AMOLED 屏幕引脚、电平控制、SPI 传输和无障碍大字/大图标渲染(分辨率为 120x240 像素)。 ## 1. 模块职责说明 @@ -8,31 +8,30 @@ 1. 提供底层的 SPI 单向命令/数据通道。 2. 控制 `SGM_CTRL` 供电管脚以使能 SGM3833 PMIC。 3. 支持屏幕窗口配置,实现底层清屏与局部像素写入。 - 4. 读取 `lcd_font.h` 库,在指定坐标绘制 8x16 字符与自定义大小位图。 - 5. 实现各业务状态屏幕(120x240 分辨率)及主选择菜单画面绘制与文字对齐。 + 4. 读取 `lcd_font.h` 库,在指定坐标绘制 16x32 大字符、32x64 超大字符与 48x48/64x64 超大单色位图。 + 5. 实现各业务状态屏幕无障碍(A11y)画面绘制与水平垂直居中对齐。 ## 2. 底层显示接口 -* `void LCD_Init(void)`:初始化 LCD 引脚,置 `SGM_CTRL = 1` 使能 SGM3833 供电,并发送 **RM69310** AMOLED 控制器的初始化寄存器配置序列。 +* `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_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)`:在 (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)`:在 120 像素宽屏幕上水平居中绘制 8 像素宽的字符串,水平起始坐标算法为 `(120 - len * 8) / 2`。 -* `void LCD_ShowString16x32Centered(u16 y, char *str, u16 fc, u16 bc)`:在 120 像素宽屏幕上水平居中绘制双倍大小 (16x32px) 的时钟字符,水平起始坐标算法为 `(120 - 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)`:渲染时钟待机页面(120 宽布局),并根据布撤防状态在状态栏绘制相应锁状态图标。 -* `void UI_ShowMenuPage(u8 selected_item)`:渲染主选择菜单(4个条目:`DATE/HEURE`、`APPAIRAGE`、`ARM/DISARM`、`LIAISON IPC`),高亮当前选中项。 -* `void UI_ShowSetTimePage(u8 edit_field, u8 hour, u8 min, u16 year, u8 month, u8 day)`:渲染日期时间微调设定界面。 -* `void UI_ShowArmDisarmSelectPage(u8 current_selection)`:渲染布撤防手动切换界面。 -* `void UI_ShowAlarmPage(char *sensor_name, u8 zone)`:渲染防区告警页面,显示对应的传感器位图和法语名称。 -* `void UI_ShowPairSearchPage(void)`:渲染对码等待搜索状态。 -* `void UI_ShowPairConfirmPage(u8 type, u8 selected_suffix)`:渲染对码序号微调页。其中传感器类型 `type` 文字和图标只读显示,后缀数字 `[ selected_suffix ]` 以高亮可编辑状态框形式闪烁展示。 -* `void UI_ShowBindingPage(void)`:渲染与 IPC 绑定对码界面,并在屏幕底部居中显示手环自身的唯一 `Factory ID`。 +* `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。 diff --git a/Docs/60_coding/mod-lcd.md b/Docs/60_coding/mod-lcd.md index 40bc19e..19bd58d 100644 Binary files a/Docs/60_coding/mod-lcd.md and b/Docs/60_coding/mod-lcd.md differ