Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/sensor/tm1640
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00
..

TM1640 数码管驱动芯片演示

一、功能模块介绍

1.1 核心主程序模块

  1. main.lua - 主程序入口,负责项目初始化、版本定义和任务调度
  2. tm1640_demo.lua - TM1640 功能演示模块,包含数码管显示、亮度调节、综合展示等所有功能的演示用例

1.2 扩展库模块

  1. exs_tm1640 - TM1640 扩展库,提供数码管段码显示、亮度调节等 API

二、演示流程介绍

本 demo 按顺序演示 exs_tm1640 扩展库的 4 项功能:HELLO → [1/4] → [2/4] → [3/4] → [4/4] → End

2.1 功能演示项说明

  1. [1/4] 字符串显示 - 数码管逐项显示数字、带小数点数字、字母组合、指定位置显示(利用 16 位显示能力)
  2. [2/4] 亮度调节 - 展示 0~7 级亮度调节效果
  3. [3/4] 综合演示 - 倒计时、HELLO 闪烁、全亮全灭、亮度渐变
  4. [4/4] 日期/时钟/温度 - 日期展示(YY-MM-DD HH:MM 格式)、时钟模拟走时(HH-MM-SS)、温度展示(摄氏度°C 和华氏度°F)

三、显示效果

四、演示硬件环境

4.1 硬件清单

  • Air780EPM 核心板 × 1
  • TM1640 数码管模块(16 位数码管) × 1 demo所演示的TM1640数码管购买链接
  • 母对母杜邦线 × 4
  • TYPE-C 数据线 × 1

4.2 接线配置

4.2.1 TM1640 模块接线

Air780EPM 核心板
TM1640 模块
32/GPIO31
CLK
31/GPIO30
DIN
VDD_EXT
VCC
GND
GND

说明:接线时注意杜邦线不宜过长,以免通信不稳定。

五、演示软件环境

5.1 开发工具

5.2 内核固件

5.3 脚本文件

  1. main.lua - 主程序入口
  2. tm1640_demo.lua - TM1640 功能演示模块
  3. exs_tm1640 - TM1640 扩展库

六、演示核心步骤

6.1 硬件准备

  1. 按照接线表将 TM1640 模块连接到核心板
  2. 确保电源连接正确,通过 TYPE-C USB 口供电
  3. 检查所有接线无误,避免短路

6.2 软件配置

main.lua 中加载对应的演示模块:

-- 加载 tm1640_demo.lua 演示模块
require "tm1640_demo"

6.3 软件烧录

  1. 使用 Luatools 选择最新内核固件
  2. 下载本项目所有脚本文件
  3. 将固件和脚本一起烧录到设备
  4. 烧录成功后设备自动重启后开始运行

6.4 功能测试

6.4.1 字符串显示演示

  1. 设备启动后显示 "HELLO",随后自动进入 [1/4] 字符串显示
  2. 观察数码管依次显示:0123456789ABCDEF88.88 → 从第 3 位显示 AbCd → 从第 8 位显示 1234 → 从第 12 位显示 5678
  3. 检查字符显示是否正确,带小数点功能是否正常

6.4.2 亮度调节演示

  1. 自动进入 [2/4] 亮度调节演示,数码管显示 16 个 8
  2. 观察数码管亮度从 0 级到 7 级逐级变化
  3. 最终恢复到 4 级亮度

6.4.3 综合演示

  1. 自动进入 [3/4] 综合演示
  2. 观察倒计时效果:5 → 4 → 3 → 2 → 1 → 0
  3. 观察 "HELLO" 闪烁效果,重复 4 次
  4. 观察 16 位全 8 显示 + 亮度渐变
  5. 数码管全灭

6.4.4 日期/时钟/温度演示

  1. 自动进入 [4/4] 日期/时钟/温度演示
  2. 日期时钟展示:显示格式 "YY-MM-DD HH:MM"(如 "26-07-13 08:30"),停留 4 秒
  3. 时钟展示:模拟走时 "08-30-00" → "08-30-01" → ... → "08-30-09"
  4. 温度展示:
    • 摄氏度:25°C → 32°C 逐度变化,亮度随温度升高而增加
    • 华氏度:77°F → 90°F 逐度变化
  5. 演示结束后显示 "End" 并停留 3 秒

6.5 预期效果

  • 字符串显示:数字、字母、小数点均能正确显示,支持指定起始位置,16 位完整显示
  • 亮度调节0~7 级亮度逐级变化,效果明显
  • 日期/时钟/温度:格式显示正确,°C 和 °F 符号正常显示
  • 日志如下:
[2026-07-21 10:40:01.164][000000000.185] I/main LuatOS@Air780EPM base 26.04 bsp V2046 32bit
[2026-07-21 10:40:01.175][000000000.185] I/main ROM Build: Jul  7 2026 20:39:17
[2026-07-21 10:40:01.185][000000000.187] W/pins /luadb/pins_air780epm.json not exist!!
[2026-07-21 10:40:01.193][000000000.190] D/main loadlibs luavm 1048568 14784 14784
[2026-07-21 10:40:01.201][000000000.190] D/main loadlibs sys   2366664 82756 89356
[2026-07-21 10:40:01.210][000000000.190] D/main loadlibs psram 2366664 82756 89356
[2026-07-21 10:40:01.221][000000000.209] I/user.main TM1640_Demo 001.999.000
[2026-07-21 10:40:01.229][000000000.223] D/user.exs_tm1640 version -> 202607131200
[2026-07-21 10:40:01.237][000000000.250] I/user.exs_tm1640 初始化完成, clk=31 din=30 亮度=5
[2026-07-21 10:40:01.245][000000000.250] I/user.tm1640_demo TM1640 初始化成功,版本: 202607131200
[2026-07-21 10:40:01.745][000000001.273] I/user.tm1640_demo ===== [1/4] 字符串显示 =====
[2026-07-21 10:40:01.752][000000001.274] I/user.tm1640_demo 显示 0123456789ABCDEF
[2026-07-21 10:40:02.854][000000002.318] I/mobile sim0 sms ready
[2026-07-21 10:40:02.859][000000002.319] D/mobile cid1, state0
[2026-07-21 10:40:02.865][000000002.320] D/mobile bearer act 0, result 0
[2026-07-21 10:40:02.889][000000002.320] D/mobile NETIF_LINK_ON -> IP_READY
[2026-07-21 10:40:02.905][000000002.374] D/mobile TIME_SYNC 0 tm 1784601606
[2026-07-21 10:40:03.797][000000003.323] I/user.tm1640_demo 显示 88.88
[2026-07-21 10:40:05.337][000000004.870] I/user.tm1640_demo 从第 3 位开始显示 AbCd
[2026-07-21 10:40:06.878][000000006.416] I/user.tm1640_demo 偏移显示 1234 在第 8 
[2026-07-21 10:40:08.430][000000007.962] I/user.tm1640_demo 从第 12 位显示 5678
[2026-07-21 10:40:10.496][000000010.032] I/user.tm1640_demo ===== [2/4] 亮度调节 =====
[2026-07-21 10:40:11.041][000000010.579] I/user.tm1640_demo 设置亮度: 0
[2026-07-21 10:40:11.851][000000011.380] I/user.tm1640_demo 设置亮度: 1
[2026-07-21 10:40:12.644][000000012.181] I/user.tm1640_demo 设置亮度: 2
[2026-07-21 10:40:13.454][000000012.982] I/user.tm1640_demo 设置亮度: 3
[2026-07-21 10:40:14.252][000000013.783] I/user.tm1640_demo 设置亮度: 4
[2026-07-21 10:40:15.060][000000014.584] I/user.tm1640_demo 设置亮度: 5
[2026-07-21 10:40:15.854][000000015.385] I/user.tm1640_demo 设置亮度: 6
[2026-07-21 10:40:16.646][000000016.186] I/user.tm1640_demo 设置亮度: 7
[2026-07-21 10:40:17.983][000000017.510] I/user.tm1640_demo ===== [3/4] 综合演示 =====
[2026-07-21 10:40:27.394][000000026.923] I/user.tm1640_demo ---- 综合演示结束 ----
[2026-07-21 10:40:27.410][000000026.924] I/user.tm1640_demo ===== [4/4] 日期/时钟/温度 =====
[2026-07-21 10:40:27.421][000000026.924] I/user.tm1640_demo 日期时钟展示: 26-07-13 08:30
[2026-07-21 10:40:31.964][000000031.492] I/user.tm1640_demo 时钟展示: 08-30-00 ~ 08-30-09
[2026-07-21 10:40:52.715][000000052.244] I/user.tm1640_demo ===== [演示完毕] =====

6.6 故障排除

  1. 数码管无显示

    • 检查 TM1640 接线是否正确(CLK、DIN、VCC、GND
    • 确认 GPIO 引脚配置与接线一致
    • 检查电源电压是否稳定(3.3V
    • 确认 exs_tm1640 扩展库已正常加载
  2. 亮度无法调节

    • 确认调用 set_brightness() 时参数为 0~7
  3. 显示内容错乱

    • 检查杜邦线是否过长导致通信不稳定

6.7 扩展功能建议

exs_tm1640 更多接口的使用可以查看 exs_tm1640 扩展库说明