手环端开发计划书 (V1.1)
STC32G12K128 核心手环系统开发及 UI 渲染方案说明
手环系统硬件接口与数据流拓扑图
📊 代码逻辑运行流程图
主循环与 Timer1 中断、RF 双模解码流程
📊 代码逻辑运行流程图
主循环与 Timer1 中断、RF 双模解码流程
一、 硬件引脚映射与电气特性
| 硬件功能分类 |
端口别名 |
STC32G 引脚 |
驱动电气逻辑说明 |
| 🔴 三色指示灯 (红) |
LED_R |
P0.0 |
共阳极,输出 0 点亮,输出 1 关闭。 |
| 🟢 三色指示灯 (绿) |
LED_G |
P2.7 |
共阳极,输出 0 点亮,输出 1 关闭。 |
| 🔵 三色指示灯 (蓝) |
LED_B |
P2.6 |
共阳极,输出 0 点亮,输出 1 关闭。 |
| 📳 振动驱动马达 |
MOTOR |
P2.5 |
直流控制,输出 1 开启马达,输出 0 停止。 |
| ▲ 方向按键 (上) |
KEY_UP |
P0.1 |
按下为 0,带内部上拉输入。 |
| ▼ 方向按键 (下) |
KEY_DOWN |
P0.3 |
按下为 0,带内部上拉输入。 |
| 🆘 紧急/对码按键 |
KEY_SOS |
P0.2 |
按下为 0,带内部上拉输入。 |
二、 核心设计决策 (Design Decisions)
💡 决策 1:安防常用汉字精简本地字库法 (优化首选方案 C)
由于手环 Flash(128KB)存不下全套字库(216KB),我们采用“常用安防汉字精简字库法”:手环本地代码空间固化约 200 个高频汉字(如:客厅、厨房、前门、阳台等,仅需 6.4KB 空间)。对码命名时,IPC 仅需通过射频向手环发送 16 字节的汉字 GBK/Unicode 编码即可,不需要发 256 字节点阵。手环在本地字库查表后显示。该方案使 433MHz 射频包缩减了 16 倍,极大提高了传输成功率和防干扰能力。如果出现极个别不在常用列表中的汉字,手环将显示 fallback 符号(如“□”)。
📡 决策 2:433MHz 射频双模解码器
手环的接收部分需要同时兼容普通遥控器报警数据(标准 24 位 EV1527 协议)和自研的 IPC 状态/名字同步数据(含 CRC8 校验的自定义射频协议)。我们将通过对 LR690L 输出的脉冲宽度进行动态测量与匹配,实现一套软件高效率的非阻塞双模解码器。
三、 UI 渲染引擎细节与坐标规划
1. 直流流式送数驱动 (`LCD_DrawMonoBitmap`)
基于硬件 SPI 接口,在写图前设置矩形窗口 (x, y) -> (x+w-1, y+h-1),然后从 Flash 字模中逐 Bit 扫描:如果是 1 则流式送入前景色,0 则送入背景色。此方案**零显存开销**,完全避开了单片机 RAM 资源瓶颈,且写屏速度极快。
2. 圆形视口安全区域划分
由于屏幕物理切边,有效显示区收拢在 X 坐标 [10, 110],Y 坐标 [30, 210] 的安全圆形范围内:
- 时钟待机页:状态栏 🔒 设在 $Y=20$。大时钟
10:35(80px宽,32px高)设在 $X=20, Y=90$ 居中。日期设在 $X=20, Y=140$。
- 配对菜单页:采用 3 行滚动布局,每行高 30px。选中行($Y=110$)画出 $100 imes 34$ 彩色粗边框,文字放大。
- 告警响应页:在 $X \in [10, 110], Y \in [40, 200]$ 绘制一圈闪烁虚线框(红白交替)。警报大图标(32x32)置于 $X=44, Y=70$,中文名字点阵(GBK查表)居中置于 $X=28, Y=130$。
四、 验证任务清单 (Task Checklist)