第14章 数码管显示实验

第十四章 数码管显示实验

1. 数码管简介

数码管是一种半导体发光器件, 其基本单元是发光二极管。 数码管也称 LED数码管。 数码管按段数可分为七段数码管和八段数码管, 八段数码管比七段数码管多一个发光二极管单元, 也就是多一个小数点(DP) , 这个小数点可以更精确的表示数码管想要显示的内容。

按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。 共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管, 共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。 不同位数的数码管实物图如下所示

屏幕截图 2024 08 10 093229

TM1637 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路,内部集成有 MCU 数字接口、 数据锁存器、 LED 高压驱动、 键盘扫描等电路。支持共阳数码管输出, 辉度调节电路(占空比 8 级可调) 。 主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。

TM1637 管脚图如下所示:

屏幕截图 2024 08 10 093330

2. 硬件设计

本实验使用到硬件资源如下:

  • TM1637数码管模块

  • ESP32 GPIO

TM1637数码管模块电路如下:

屏幕截图 2024 08 10 093601

由图可知, J2 端子的 CLK、 DIO 脚为 TM1637 控制口, 可将该引脚与 ESP32的 GPIO 连接。

本章实验使用 ESP32 的 IO16、 17 引脚, 接线如下所示:

屏幕截图 2024 08 10 094119

3. 软件设计

3.1 MicroPython函数使用

MicroPython 固件库内并没有集成 TM1637 模块, 因此需要我们自己实现, 对于不了解 TM1637 底层寄存器命令和时序的用户来说, 要编写出驱动是困难的。MicroPython 拥有着庞大的用户群, 自然 TM1637 模块也有开源的代码, 直接拿过来使用即可, 这就是使用 MicroPython 开发的高效之处。

屏幕截图 2024 08 10 094304

使用方法如下:

屏幕截图 2024 08 10 094404

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 第一次修订,后期不再维护

posted @ 2024-08-22 08:48  hazy1k  阅读(3)  评论(0编辑  收藏  举报