基础知识
数码管分类
- 按照显示数字的个数分为1位,3位,4位。。。
- 按连接方式分为共阳极(阳极接到一起形成公共阳极)和共阴极(阴极接到一起形成公共阴极)
 
SM410364引脚图,共阴极4位
74位数码管没有公共端,有4个位选线和公共端相连。
- 段选线 
- 位选线1234 
模块化
共阴极四位数码管公共类
| 1 | """ | 
- 调用 1 
 2
 3
 4
 5from common.seg import Seg 
 seg_object = Seg(a=32,b=25,c=27,d=12,e=13,f=33,g=26,dp=14,seg1=5,seg2=18,seg3=19,seg4=15)
 seg_object.display_number(3,8)
实验
循环所有数字和位
- 接线
 每个位选线串一个1k的电阻 
- 代码1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67import time 
 from machine import Pin
 # 定义位选线引脚对象
 seg1 = Pin(5,Pin.OUT)
 seg2 = Pin(18,Pin.OUT)
 seg3 = Pin(19,Pin.OUT)
 seg4 = Pin(15,Pin.OUT)
 # 定义位选线引脚对象的列表
 seg_list = [seg1,seg2,seg3,seg4]
 # 定义段选线引脚对象
 a = Pin(32,Pin.OUT)
 b = Pin(25,Pin.OUT)
 c = Pin(27,Pin.OUT)
 d = Pin(12,Pin.OUT)
 e = Pin(13,Pin.OUT)
 f = Pin(33,Pin.OUT)
 g = Pin(26,Pin.OUT)
 dp = Pin(14,Pin.OUT)
 # 定义短选线引脚对象的列表
 led_list = [a,b,c,d,e,f,g,dp]
 # 共阴极数码管不同数字对应的电平
 number_dict = {
 #:[a,b,c,d,e,f,g,dp]
 0:[1,1,1,1,1,1,0,0],
 1:[0,1,1,0,0,0,0,0],
 2:[1,1,0,1,1,0,1,0],
 3:[1,1,1,1,0,0,1,0],
 4:[0,1,1,0,0,1,1,0],
 5:[1,0,1,1,0,1,1,0],
 6:[1,0,1,1,1,1,1,0],
 7:[1,1,1,0,0,0,0,0],
 8:[1,1,1,1,1,1,1,0],
 9:[1,1,1,1,0,1,1,0],
 }
 # 清零操作
 def clear():
 # 初始化位选线
 for seg in seg_list:
 seg.on()
 # 初始化段选线
 for led in led_list:
 led.off()
 # display_number(第几位,显示什么数字)
 def display_number(order,number):
 # 定义当前数字对应的段选线电平列表
 logic_list = number_dict.get(number)
 if logic_list and 0<=order<4:
 # 清屏
 clear()
 # 显示位拉低电平
 seg_list[order].off()
 # 显示数字
 for i in range(len(logic_list)):
 led_list[i].value(logic_list[i])
 
 if __name__ == "__main__":
 for i in range(4):
 for j in range(10):
 display_number(i,j)
 time.sleep(0.2)