零基础学ESP32:数码管显示数字,从0到9原来这么简单

0 阅读4分钟

前面几节课,我们学会了控制LED灯、连接WiFi、远程控制。这些都是基础输入输出,今天我们要玩点新花样——让数码管显示数字。

你肯定见过数码管:微波炉上的时间、电梯里的楼层、电子钟的数字……这些都是数码管在干活。它看起来比单颗LED复杂,但本质其实很简单——它就是8颗LED灯拼在一起,控制哪颗亮,就显示哪个数字。

今天就带大家从零开始,用ESP32驱动数码管,让数字从0到9依次显示出来。

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 “教程”,在 “硬件” → “ESP32 + MicroPython” 分类下,找到第六节课——数码管显示数字

在这里插入图片描述

打开课件,首先看到的是本节课的最终效果——数码管从0到9依次循环显示。

第二步:了解数码管的原理

课件中会详细介绍数码管的原理,这里给大家快速总结一下:

数码管里面就是8颗LED灯:

在这里插入图片描述

这8颗LED分别叫做a、b、c、d、e、f、g、dp(小数点)。通过控制哪几颗亮,就能组合出不同的数字。

比如显示数字 1,就让 b 和 c 亮;显示数字 8,就让 a、b、c、d、e、f、g 全亮。

数码管有两种类型:

  • 共阴极: 公共端接GND,给某段高电平(1)它就亮
  • 共阳极: 公共端接VCC,给某段低电平(0)它就亮

这两者的代码正好相反。课件里两种都提供了,大家可以根据自己手里的数码管类型选择。

第三步:看电路图——逗脑IDE内置交互式电路

这是逗脑IDE特别方便的一个功能——内置了电路图

在课件的顶部的 “电路” 菜单下,可以找到本节课的电路图。

在这里插入图片描述

打开电路图后,你会看到ESP32开发板和数码管之间的完整连线图:

  • 鼠标移动到引脚上,会显示该引脚的名称
  • 鼠标点击连线,会清晰的看到开发板和数码管相连的两个引脚

在这里插入图片描述

这个交互式电路图非常直观,对照着去接线,不用担心连错引脚。课件里还列出了需要用到的配件清单,每一步怎么连接都配有实拍图,新手照着做完全没问题。

在这里插入图片描述

第四步:一键打开代码,直接运行

接线完成了,接下来就是代码环节。

课件提供了两种代码——共阴极和共阳极,你可以根据自己手里数码管的类型选择。

我们以共阴极代码为例,找到对应的代码块,点击 “打开” 按钮,代码自动加载到编辑器中。

import machine
import time


a = machine.Pin(13, machine.Pin.OUT)
b = machine.Pin(12, machine.Pin.OUT)
c = machine.Pin(14, machine.Pin.OUT)
d = machine.Pin(27, machine.Pin.OUT)
e = machine.Pin(26, machine.Pin.OUT)
f = machine.Pin(25, machine.Pin.OUT)
g = machine.Pin(33, machine.Pin.OUT)
dot = machine.Pin(32, machine.Pin.OUT)

number_led = [a, b, c, d, e, f, g, dot]

number_dict = {
    0: "11111100",
    1: "01100000",
    2: "11011010",
    3: "11110010",
    4: "01100110",
    5: "10110110",
    6: "10111110",
    7: "11100000",
    8: "11111110",
    9: "11110110",
    "open": "11111111",
    "close": "00000000"
}

def show_number(number):
    if number_dict.get(number):
        i = 0
        for bit in number_dict.get(number):
            if bit == "1":
                number_led[i].value(1)
            else:
                number_led[i].value(0)
            i += 1

def main():
    # show_number("open")  # 全亮
    # show_number("close")  # 全灭

    for i in range(10):
        show_number(i)
        time.sleep(0.3)

if __name__ == "__main__":
    main()

整个代码不需要修改任何内容——引脚已经根据电路图配好了,数字字典已经定义好了,直接保存就能用。

第五步:保存到开发板,看效果!

Ctrl + S 保存,选择你的ESP32开发板设备,给文件命名(比如led_display.py),点击保存。

在这里插入图片描述

保存成功后,点击运行按钮。

数码管开始依次显示:0、1、2、3、4、5、6、7、8、9,然后循环。

在这里插入图片描述

从点灯到显示数字,你的技能在升级

回顾一下这一路走来的路径:

课程核心知识点成果
第一课GPIO输出点亮LED
第二课延时控制LED闪烁
第三课PWM模拟呼吸灯
第四课WiFi连接联网通信
第五课UDP控制远程遥控LED
第六课多引脚协同控制数码管显示0-9

这节课最大的突破是: 从控制一颗LED,升级到了同时控制8颗LED协同工作。这个思维转变很重要——以后控制RGB彩灯、点阵屏、LCD屏幕,原理都是一样的。

数码管的应用场景也非常广:

  • 电子钟、计时器
  • 温度湿度显示
  • 计数器、跑马灯
  • 智能家居面板

学会了这节课,你就掌握了多引脚协同输出的核心技能。

去官网(**www.dounao.cn**)下载逗脑IDE,准备好ESP32开发板和数码管,跟着第六节课走一遍。从接线到运行,一站式搞定。

有任何问题或建议,欢迎在评论区留言告诉我们。