# main.py -- put your code here!
"""
四位数码管1.0
适用于:四位七段数码管,共阳
输入num类型:字符串str
马玉华,2019.12.28
"""
import pyb
from pyb import Pin
# 数码管a~g dp对应的开发板引脚'X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8',用于控制每一位上七个数码管加一个小数点的高低电平。
d_Pins = [Pin(i, Pin.OUT_PP) for i in ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8']]
# 数码管位段1 2 3 4对应的引脚'Y9','Y10','Y11','Y12' , 'Y9','Y10','Y11','Y12'对应个位十位百位千位。当1234中的一个为高电平,其他的为低电平时,高电平那一位的七段数码管可以进行编辑
w_Pins = [Pin(i, Pin.OUT_PP) for i in ['Y9', 'Y10', 'Y11', 'Y12']]
# 共阳数码管,每位上的七个数码管共一个阳极(1234中一个),控制的是负极的高低电平,给负极低电平点亮数码管。
# 要想亮四个数码管,就需要四位循环闪烁亮,人眼看不出来就相当于四个都亮了。也可用udelay让四个都亮
number = {
'0':
[0, 0, 0, 0, 0, 0, 1, 1], # 0
'1':
[1, 1, 1, 1, 0, 0, 1, 1], # 1
'2':
[0, 0, 1, 0, 0, 1, 0, 1], # 2
'3':
[0, 0, 0, 0, 1, 1, 0, 1], # 3
'4':
[1, 0, 0, 1, 1, 0, 0, 1], # 4
'5':
[0, 1, 0, 0, 1, 0, 0, 1], # 5
'6':
[0, 1, 0, 0, 0, 0, 0, 1], # 6
'7':
[0, 0, 0, 1, 1, 1, 1, 1], # 7
'8':
[0, 0, 0, 0, 0, 0, 0, 1], # 8
'9':
[0, 0, 0, 0, 1, 0, 0, 1], # 9
}
def display(num): # 用于显示一位上的七段数码管
count = 0
for pin in d_Pins: # 一个循环点亮七段中的一段,遍历完所有的pin以后就可以将一位上的七段数码管点亮。
pin.value(number[num][count]) # number[num]取出要显示数字的引脚高低电平,一次循环中设置一个电平,即点亮七段中的一段
count += 1
def clear(): # 在显示w位上的七段数码管时,先清除数字,熄灭数码管
for i in w_Pins:
i.value(0)
for i in d_Pins:
i.value(1)
def four_num_without_dot(num):
while len(num) < 4: # 如果不是四位数,在前面补上0
num = '0' + num
for i in range(0, 4):
clear() # 显示之前先所有位都不给电
w_Pins[-i - 1].value(1) # 然后再给对应的1234位上电,abc...才能在这一位上导通点亮对应位上的数码管 #通过循环显示个位、十位、百位、千位
display(num[i]) # 调用display显示一位上的七段数码管
pyb.udelay(2000) # 此处如果使用delay的话,就会先显示2然后0然后1然后9.使用udelay,可以延迟上一个程序,还可以进行下面的程序运行,udelay时间不超过2000微秒。
#如果不要这行延迟程序,相当于四个数码管闪烁着亮,要的话相当于都在亮
def display_dot(): #专门用于显示小数点
clear()
w_Pins[-location].value(1)
d_Pins[7].value(0)
pyb.udelay(1900)
def showData(num): # 确定是小数还是整数
global location
location = num.find('.') # 返回字符在字符串中的索引号,若找不到返回-1
#没有小数点
if location < 0:
four_num_without_dot(num) # 显示四个数字
#有小数点
if location > 0:
num = num.replace('.', '') # 用''替换小数点,相当于去掉小数点
four_num_without_dot(num) #显示四个数字
display_dot() #显示小数点
while True:
num = '2019'
showData(num)
来源:CSDN
作者:MaYuHuaw
链接:https://blog.csdn.net/qq_43328166/article/details/103897625