#动手做4—3 四位共阳极数码管动态显示00:00
from machine import Pin
from time import sleep
#显示驻留时间:秒
dtime=0.001
#定义段码管脚
seg_a = Pin(28,Pin.OUT)
seg_b = Pin(27,Pin.OUT)
seg_c = Pin(26,Pin.OUT)
seg_d = Pin(22,Pin.OUT)
seg_e = Pin(21,Pin.OUT)
seg_f = Pin(20,Pin.OUT)
seg_g = Pin(19,Pin.OUT)
dp= Pin(18,Pin.OUT)
seg_all = [seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g, dp]
#定义共阳极Anode字形码
num={
0:[0,0,0,0,0,0,1,1],
1:[1,0,0,1,1,1,1,1],
2:[0,0,1,0,0,1,0,1],
3:[0,0,0,0,1,1,0,1],
4:[1,0,0,1,1,0,0,1],
5:[0,1,0,0,1,0,0,1],
6:[0,1,0,0,0,0,0,1],
7:[0,0,0,1,1,1,1,1],
8:[0,0,0,0,0,0,0,1],
9:[0,0,0,0,1,0,0,1]
}
#定义数码管位码管脚
dig_1=Pin(0,Pin.OUT) #千位
dig_2=Pin(1,Pin.OUT) #百位
dig_3=Pin(2,Pin.OUT) #十位
dig_4=Pin(3,Pin.OUT) #个位
dig_all=[dig_1,dig_2,dig_3,dig_4]
#在(cs+1)位显示数字n:cs,0~3;n,0~9
def display(cs,n):
for seg in seg_all: seg.value(1) #段码置1
for i in dig_all: i.value(0) #位码置
dig_all[cs].value(1) #选择dig_1
for seg in seg_all: #显示数字0
i=seg_all.index(seg)
seg.value(num[n][i])
sleep(dtime)
#显示00:00
second =0 #秒计数
minute=0 #分计数
while True:
second +=1
display(3,second%10) #个位dig-4
display(2,second//10) #个位dig-3
display(1,minute%10) #个位dig-2
display(0,minute//10) #个位dig-1
sleep(0.075) #定时
if second==59:
second=0
minute+=1 #分加一
if minute==23:
minute=0
second=0