🩺 血氧仪·驱动与UI实战
📘 30章 从入门到项目
01
血氧仪项目概述
↗
工作原理、硬件架构(MCU+OLED+传感器)、UI设计目标与用户体验原则
02
开发环境搭建
↗
Keil/IAR环境配置、Python脚本辅助工具链、模拟器与真机调试流程
03
OLED显示驱动基础
↗
SSD1306/SSH1106驱动芯片、I2C/SPI通信协议、像素与显存映射
04
驱动层封装
↗
初始化序列、写命令/写数据函数、清屏与全屏填充、区域刷新
05
基本图形绘制
↗
画点、画线(Bresenham算法)、画矩形、画圆
06
字符与字体引擎
↗
ASCII字模提取、中文字库(GB2312/UTF-8)加载、自定义小字库
07
字符串显示函数
↗
坐标定位、字符串长度计算、自动换行与滚动显示
08
图片与图标显示
↗
BMP取模工具使用、1位/2位色图标显示、动画帧切换
09
UI框架设计思想
↗
状态机驱动UI、事件驱动UI、分层架构(App/Page/Widget)
10
页面管理器
↗
页面栈结构、切换动画(左滑/淡入淡出)、生命周期回调
11
控件库开发(上)
↗
标签(Label)、按钮(Button)、进度条(ProgressBar)
12
控件库开发(下)
↗
列表(ListView)、菜单(Menu)、数值调节器(Stepper)
13
触摸与按键输入
↗
物理按键扫描、去抖算法、长按/短按/双击识别
14
血氧传感器驱动
↗
MAX30102/AFE4490初始化、红光与红外光采集、FIFO读取
15
信号处理基础
↗
滑动平均滤波、中值滤波、去除基线漂移
16
血氧饱和度算法
↗
AC/DC比值法、查表法SpO2计算、心率计算(PPG峰值检测)
17
数据显示页面
↗
实时波形绘制(PPG)、数值大字体显示、状态图标(低电量/报警)
18
菜单与设置页面
↗
菜单列表、亮度调节、屏幕翻转、恢复出厂设置
19
报警与提示系统
↗
阈值设置(SpO2<90%报警)、蜂鸣器驱动、振动马达控制
20
低功耗设计
↗
OLED休眠模式、MCU睡眠模式、传感器间歇采样、动态调频
21
数据存储与历史记录
↗
内部Flash读写、EEPROM模拟、历史数据列表显示
22
蓝牙通信(选配)
↗
BLE GATT服务定义、心率/血氧特征值通知、手机APP联动
23
UI动画与特效
↗
进度条平滑动画、数值滚动效果、页面切换粒子特效
24
多语言支持
↗
中英文菜单切换、Unicode字库管理、语言资源文件
25
单元测试与调试
↗
模拟器UI测试、传感器数据回放、日志输出与断言
26
性能优化
↗
帧率优化(FPS)、DMA加速刷屏、局部刷新策略
27
代码重构与模块化
↗
驱动层/中间件/应用层分离、接口标准化、依赖注入
28
项目实战
↗
从零搭建完整血氧仪固件(需求分析→编码→调试→发布)
29
常见问题与避坑
↗
I2C死锁、传感器初始化失败、屏幕花屏、算法精度不足
30
课程总结与扩展
↗
RTOS移植(FreeRTOS)、LVGL图形库移植、产品认证(FDA/CE)入门