第14章 数码管显示实验
第十四章 数码管显示实验
1. 数码管简介
数码管是一种半导体发光器件, 其基本单元是发光二极管。 数码管也称 LED数码管。 数码管按段数可分为七段数码管和八段数码管, 八段数码管比七段数码管多一个发光二极管单元, 也就是多一个小数点(DP) , 这个小数点可以更精确的表示数码管想要显示的内容。
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管, 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。 不同位数的数码管实物图如下所示
TM1637 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路,内部集成有 MCU 数字接口、 数据锁存器、 LED 高压驱动、 键盘扫描等电路。支持共阳数码管输出, 辉度调节电路(占空比 8 级可调) 。 主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。
TM1637 管脚图如下所示:
2. 硬件设计
本实验使用到硬件资源如下:
-
TM1637数码管模块
-
ESP32 GPIO
TM1637数码管模块电路如下:
由图可知, J2 端子的 CLK、 DIO 脚为 TM1637 控制口, 可将该引脚与 ESP32的 GPIO 连接。
本章实验使用 ESP32 的 IO16、 17 引脚, 接线如下所示:
3. 软件设计
3.1 MicroPython函数使用
MicroPython 固件库内并没有集成 TM1637 模块, 因此需要我们自己实现, 对于不了解 TM1637 底层寄存器命令和时序的用户来说, 要编写出驱动是困难的。MicroPython 拥有着庞大的用户群, 自然 TM1637 模块也有开源的代码, 直接拿过来使用即可, 这就是使用 MicroPython 开发的高效之处。
使用方法如下:
3.2 代码分析
from machine import Pin
import time
import tm1637
smg = tm1637.TM1637(clk=Pin(16), dio=Pin(17)) # 定义数码管控制对象
if __name__ == '__main__':
# smg.number(1, 24) # 显示小数01.24
# smg.hex(123) # 将十进制转换成16进制显示
# smg.brightness(7) # 设置亮度为7
# smg.temperature(25) # 显示温度符号,整数温度值
# smg.show("1234") # 字符串显示,显示整数
while True:
smg.scroll("1314-520", 500) # 滚动显示字符串,每秒500ms滚动一次
# n = 0
# while True:
# smg.number(n) # 显示数字
# n += 1
# time.sleep(1) # 等待1秒
2024.8.22 第一次修订,后期不再维护