init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
# HT1621 段码屏显示时钟
|
||||
|
||||
## 一、功能模块介绍
|
||||
|
||||
### 1.1 核心主程序模块
|
||||
|
||||
1. **main.lua** - 主程序入口,负责系统初始化和任务调度
|
||||
2. **ui_main.lua** - 用户界面主控模块,管理时间显示、页面切换和事件处理
|
||||
|
||||
### 1.2 驱动模块
|
||||
|
||||
1. **ht1621_drv.lua** - HT1621 段码屏驱动模块,负责液晶屏硬件初始化
|
||||
2. **key_drv.lua** - 按键驱动模块,管理 BOOT 键和 PWR 键的 GPIO 中断和防抖处理
|
||||
|
||||
## 二、按键消息介绍
|
||||
|
||||
### 2.1 按键事件消息
|
||||
|
||||
1. **"KEY_EVENT"** - 按键事件消息,包含按键类型和状态
|
||||
- boot 键事件:`boot_down`(按下)、`boot_up`(释放)
|
||||
- pwr 键事件:`pwr_down`(按下)、`pwr_up`(释放)
|
||||
|
||||
### 2.2 按键功能定义
|
||||
|
||||
- **主页(时间显示)**:boot 键(按下)切换显示页面(时间 ↔ 日期)
|
||||
- **日期页面**:boot 键(按下)切换回时间页面
|
||||
- PWR 键在本演示中未定义特殊功能,仅作为按键状态示例
|
||||
|
||||
## 三、显示效果
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>时间-星期<br/></td><td>年月日<br/></td></tr>
|
||||
<tr>
|
||||
<td rowspan="2"><img src="https://docs.openluat.com/cdn/image/Air780EHM_ht1621显示时间.jpg" width="80" /><br/></td>
|
||||
<td><img src="https://docs.openluat.com/cdn/image/Air780EHM_ht1621显示日期.jpg" width="80" /><br/></td></tr>
|
||||
</table>
|
||||
|
||||
### 4.1 时间显示功能
|
||||
|
||||
1. **开机画面** - 显示1秒所有段码,以帮助理解每个段码的显示逻辑,更方便应用到其他场景以及与演示demo不同品牌的ht1621上
|
||||
|
||||
### 4.2 时间显示功能
|
||||
|
||||
1. **自动时间同步** - 从系统时间获取实时时间
|
||||
2. **冒号闪烁** - 每秒钟冒号状态切换,增强时间显示效果
|
||||
3. **星期显示** - 显示星期数字(1-7 对应星期一至星期日)
|
||||
4. **30 秒自动更新** - 每隔 30 秒自动刷新显示内容
|
||||
|
||||
### 4.3日期显示功能
|
||||
|
||||
1. **完整日期显示** - 显示年、月、日信息
|
||||
2. **格式化显示** - 统一为两位数字格式(如 01、12 等)
|
||||
|
||||
### 4.4 页面切换功能
|
||||
|
||||
1. **一键切换** - 按 BOOT 键在时间和日期页面间切换
|
||||
2. **状态记忆** - 保持当前显示页面状态
|
||||
|
||||
### 4.5 系统管理功能
|
||||
|
||||
1. **看门狗保护** - 防止程序死循环,自动重启
|
||||
|
||||
## 五、演示硬件环境
|
||||
|
||||
### 5.1 硬件清单
|
||||
|
||||
- Air780EPM 核心板 × 1
|
||||
- ht1621 液晶屏 × 1:[demo所使用的型号购链接]( https://e.tb.cn/h.72xbNqgE6wdTQzt?tk=xmuJfuxyH4z)
|
||||
- 母对母杜邦线 × 6,杜邦线太长的话,会出现 spi 通信不稳定的现象;
|
||||
- TYPE-C 数据线 × 1
|
||||
- Air780EPM 核心板和 ht1621 液晶屏的硬件接线方式为
|
||||
|
||||
- Air780EPM 核心板通过 TYPE-C USB 口供电(核心板正面开关拨到 ON 一端),此种供电方式下,VDD_EXT 引脚为 3.3V,可以直接给 ht1621 液晶屏供电;
|
||||
- 为了演示方便,所以 Air780EPM 核心板上电后直接通过 VDD_EXT 引脚给 ht1621 液晶屏供电;
|
||||
- 客户在设计实际项目时,一般来说,需要通过一个 GPIO 来控制 LDO 给配件板供电,这样可以灵活地控制配件板的供电,可以使项目的整体功耗降到最低;
|
||||
|
||||
### 5.2 接线配置
|
||||
|
||||
#### 5.2.1 显示屏接线
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Air780EPM 核心板<br/></td><td>ht1621 液晶屏<br/></td></tr>
|
||||
<tr>
|
||||
<td>22/GPIO1<br/></td><td>WR<br/></td></tr>
|
||||
<tr>
|
||||
<td>107/GPIO21<br/></td><td>CS<br/></td></tr>
|
||||
<tr>
|
||||
<td>20/GPIO24<br/></td><td>DATA<br/></td></tr>
|
||||
<tr>
|
||||
<td>VDD_EXT<br/></td><td>VCC<br/></td></tr>
|
||||
<tr>
|
||||
<td>GND<br/></td><td>GND<br/></td></tr>
|
||||
</table>
|
||||
|
||||
#### 5.2.3 接线图
|
||||

|
||||
|
||||
## 六、演示软件环境
|
||||
|
||||
### 6.1 开发工具
|
||||
|
||||
- [Luatools下载调试工具](https://docs.openluat.com/air780epm/luatos/common/download/) - 固件烧录和代码调试
|
||||
|
||||
### 6.2 内核固件
|
||||
|
||||
- [点击下载Air780EPM系列最新版本内核固件](https://docs.openluat.com/air780epm/luatos/firmware/version/),demo所使用的是LuatOS-SoC_V2018_Air780EPM 1号固件
|
||||
|
||||
### 6.3 脚本文件
|
||||
|
||||
1. **main.lua** - 主程序入口
|
||||
2. **ui_main.lua** - 用户界面主模块
|
||||
3. **ht1621_drv.lua** - HT1621 驱动模块
|
||||
4. **key_drv.lua** - 按键驱动模块
|
||||
|
||||
## 七、演示核心步骤
|
||||
|
||||
### 7.1 硬件准备
|
||||
|
||||
1. 按照硬件接线表连接所有设备
|
||||
2. 确保电源连接正确,通过TYPE-C USB口供电
|
||||
3. 检查所有接线无误,避免短路
|
||||
4. 确认核心板上的 BOOT 键和 PWR 键可用
|
||||
|
||||
### 7.2 软件配置
|
||||
在`main.lua`中加载对应的驱动模块:
|
||||
|
||||
```lua
|
||||
|
||||
-- 加载按键驱动模块
|
||||
require "key_drv"
|
||||
|
||||
-- 加载用户界面系统主模块
|
||||
require "ui_main"
|
||||
|
||||
```
|
||||
|
||||
### 7.3 软件烧录
|
||||
|
||||
1. 使用Luatools选择最新内核固件
|
||||
2. 下载本项目所有脚本文件
|
||||
3. 将固件和脚本一起烧录到设备
|
||||
4. 烧录成功后设备自动重启后开始运行
|
||||
|
||||
### 7.4 功能测试
|
||||
|
||||
#### 7.4.1 时间显示页面(默认页面)
|
||||
|
||||
1. 设备启动后默认显示时间页面
|
||||
2. 观察显示效果:小时:分钟 星期(如 12:34 星 5)
|
||||
3. 观察冒号每秒闪烁一次
|
||||
4. 等待 30 秒,观察时间自动更新
|
||||
|
||||
#### 7.4.2 页面切换测试
|
||||
|
||||
1. 按下核心板上的 BOOT 键
|
||||
2. 观察显示切换到日期页面(格式:年-月-日,如 25 12 11)
|
||||
3. 注意:日期页面没有冒号闪烁
|
||||
4. 再次按下 BOOT 键,切换回时间页面
|
||||
|
||||
#### 7.4.3 日期显示页面
|
||||
|
||||
1. 在日期页面,观察显示格式为 YY-MM-DD
|
||||
2. 所有数字都显示为两位(如 01、12 等)
|
||||
3. 等待 30 秒,观察日期自动更新
|
||||
|
||||
#### 7.4.4 按键功能测试
|
||||
|
||||
1. **BOOT 键**:按下切换时间和日期页面
|
||||
2. **PWR 键**:按下和释放会触发按键事件(本演示中无特殊功能)
|
||||
3. 观察日志输出,确认按键事件正常触发
|
||||
|
||||
### 7.5 预期效果
|
||||
|
||||
- **时间显示页面**:正常显示小时和分钟,冒号每秒闪烁,右下角显示星期数字
|
||||
- **日期显示页面**:正常显示年-月-日,所有数字为两位格式
|
||||
- **页面切换**:按 BOOT 键在时间和日期页面间流畅切换
|
||||
- **自动更新**:每 30 秒自动更新显示内容
|
||||
- **冒号闪烁**:仅时间页面有冒号闪烁,每秒切换状态
|
||||
- **按键响应**:BOOT 键切换页面,PWR 键触发按键事件
|
||||
|
||||
### 7.6 故障排除
|
||||
|
||||
1. **显示异常或无显示**:
|
||||
|
||||
- 检查 HT1621 接线是否正确(CS、DATA、WR、VCC、GND)
|
||||
- 确认 GPIO 引脚配置正确
|
||||
- 检查电源电压是否稳定(3.3V)
|
||||
2. **按键无响应**:
|
||||
|
||||
- 检查 BOOT 键和 PWR 键是否正常
|
||||
- 确认 key_drv.lua 中按键 GPIO 配置正确
|
||||
- 查看日志确认按键驱动初始化成功
|
||||
3. **冒号不闪烁**:
|
||||
|
||||
- 确认当前显示的是时间页面(日期页面无冒号)
|
||||
- 检查冒号闪烁定时器是否正常启动
|
||||
- 查看 ui_main.lua 中的冒号处理逻辑
|
||||
4. **时间显示错误**:
|
||||
|
||||
- 确认系统时间设置正确
|
||||
- 检查 os.date()函数返回值
|
||||
- 确认时间格式化逻辑正确
|
||||
5. **系统运行不稳定**:
|
||||
|
||||
- 检查内存使用情况,适当调整定时器频率
|
||||
- 确认看门狗功能正常启用
|
||||
- 查看错误日志分析具体问题
|
||||
|
||||
### 7.7 扩展功能建议
|
||||
|
||||
ht1621更多接口的使用可以查看[ht1621核心库说明](https://docs.openluat.com/osapi/core/ht1621/)
|
||||
Reference in New Issue
Block a user