物联网开发笔记(23)- 使用Micropython开发ESP32开发板之控制4位数码管_4位数码管cln引脚
4位数码管可以同时显示4个数字或字母(A-F),我们知道单个数码管一般有10个针脚,那个4位数码管一般有12个针脚,除了a-g和DP(DotPoint)是一样的,还有四个针脚分别用来控制每个数码管。ESP32+数码管+Thonny IDE+电阻(200-300欧姆的色环电阻即可+面包板(非必须)+十几根杜邦线(母对母4个和母对公8个)4位数码管显示原理:利用到的是人的视觉暂留机制,对数码管进行动态
·
一、目的
使用MicroPython开发ESP32控制4位数码管
二、环境
ESP32+数码管+Thonny IDE+电阻(200-300欧姆的色环电阻即可+面包板(非必须)+十几根杜邦线(母对母4个和母对公8个)
此处建议使用真实硬件环境(当然WOKWI仿真也可,但是由于网络问题我没有看到成功的结果,你可以试下)
接线原理图:
我实际的接线图:
三、4位数码管介绍
4位数码管可以同时显示4个数字或字母(A-F),我们知道单个数码管一般有10个针脚,那个4位数码管一般有12个针脚,除了a-g和DP(DotPoint)是一样的,还有四个针脚分别用来控制每个数码管。
在Wokwi中的4位数码管,有14个针脚,多了CLN(时钟模式)和COM引脚:
4位数码管显示原理:利用到的是人的视觉暂留机制,对数码管进行动态扫描。
我找到了一个不错的博客介绍,大家可以看下,讲的比较清楚:
MicroPython-On-ESP8266——数码管的使用,四位数码管及动态扫描显示_fatway的博客-CSDN博客_esp8266驱动数码管
四、下面举个例子给大家演示一下4位数码管的使用方法
先上代码,使用Thonny IED开发
main.py
import machine
import time
# 定义每个数码管
led1 = machine.Pin(5, machine.Pin.OUT)
led2 = machine.Pin(18, machine.Pin.OUT)
led3 = machine.Pin(19, machine.Pin.OUT)
led4 = machine.Pin(21, machine.Pin.OUT)
# 数码管列表
number_led_list = [led1, led2, led3, led4]
# 定义数码管的8个LED段
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)
h = machine.Pin(32, machine.Pin.OUT)
# 将数码管对应的引脚对象存储到列表
led_list = [a, b, c, d, e, f, g, h]
# 定义每个数字的显示,此处为共阳(如果你连接的是共阴极的数码管,请改为注释的值)
number_dict = {
0: "00000011", # 0: "11111100",
1: "10011111", # 1: "01100000",
2: "00100101", # 2: "11011010",
3: "00001101", # 3: "11110010",
4: "10011001", # 4: "01100110",
5: "01001001", # 5: "10110110",
6: "01000001", # 6: "10111110",
7: "00011111", # 7: "11100000",
8: "00000001", # 8: "11111110",
9: "00001001", # 9: "11110110",
}
# 定义显示数字的函数
def show_number(number):
if number_dict.get(number): # 通过字典number_dict的键number获取到对应键的值
i = 0 # 定义一个变量i,用于控制显示不同的数字
for num in number_dict.get(number): # 此时就是对应的value,即类似的"01110111"
if num == "1": # 控制数码管8个LED段的显示
led_list[i].value(0)
else:
led_list[i].value(1)
更多推荐
已为社区贡献3条内容
所有评论(0)