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: "11111100",
1: "01100000",
2: "11011010",
3: "11110010",
4: "01100110",
5: "10110110",
6: "10111110",
7: "11100000",
8: "11111110",
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)
# print("此时显示的数码管的LED段是", i) # 打印出为a, b, c, d, e, f, g, h # 此处打印会导致4位数码管闪烁
i += 1
# 定义数码管的亮灭状态
def led_light_on(i):
# 全部数码管设置为1,即全灭的状态
for led in number_led_list:
led.value(0)
# 将指定数码管设置为0,即亮的状态
number_led_list[i].value(1)
# 定义显示数字的函数
def show_4_number(number):
if 0 <= number <= 9999: # 判断显示数字的范围
i = 0 # 定义一个变量i,用于控制不同的数码管。
for num in "%04d" % number: # 循环显示4位数字,即一个数字一个数字的依次显示。动态刷新
print(num)
show_number(int(num)) # 调用show_number函数显示数字,注意num为字符格式要转为整型格式
led_light_on(i) # 调用led_light_on函数,点亮指定的数码管
time.sleep_ms(2) # 设置刷新的时间,此处可以根据实际情况调节
print("此时数码管是", i) # 打印出为0,1,2,3
i += 1
# 显示4位数字
for i in range(0001, 10000):
for j in range(20): # 调节每个数字的显示频率
time.sleep_ms(5)
show_4_number(i) # 显示指定数字