Micropython 8ビット共陰デジタルチューブ駆動モジュール共有
26724 ワード
まずこの作者は西安交通大学の电気の16级のある陈姓の学友で、先生がネット上で同じコードを调べて私がすり取ったと思っていることを防止します.の
最近、学校では電子設計の任務があり、Micropythonを学ぶ過程で8人の共陰7段デジタルチューブ駆動モジュールを書き、クラスパッケージに少し時間を費やし、他の初心者たちに参考にして共有してほしいと思っています.デジタルチューブの原理はネット上にたくさんあり、デジタルブックにもあります.
最近、学校では電子設計の任務があり、Micropythonを学ぶ過程で8人の共陰7段デジタルチューブ駆動モジュールを書き、クラスパッケージに少し時間を費やし、他の初心者たちに参考にして共有してほしいと思っています.デジタルチューブの原理はネット上にたくさんあり、デジタルブックにもあります.
'''
/ /
Y10~Y12 ___ A~C
X1~X8 ___ H~A
numberpros()
, display() “self.numberpros(self.number)”,
8 self.smg_display。
:self.smg_display=['0.','A','1','2','C','non','.','1']
'''
import pyb
from pyb import Pin
def get_bit( num ):
res=[]
for temp in range( 8 ):
res.append(num>>(7-temp)&1)
return res
#
num2d={
#0~9
'0' : get_bit(0x3F) ,
'1' : get_bit(0x06) ,
'2' : get_bit(0x5B) ,
'3' : get_bit(0x4F) ,
'4' : get_bit(0x66) ,
'5' : get_bit(0x6D) ,
'6' : get_bit(0x7D) ,
'7' : get_bit(0x07) ,
'8' : get_bit(0x7F) ,
'9' : get_bit(0x6F) ,
#0.~9.
'0.' : get_bit(0x3F+0x80) ,
'1.' : get_bit(0x06+0x80) ,
'2.' : get_bit(0x5B+0x80) ,
'3.' : get_bit(0x4F+0x80) ,
'4.' : get_bit(0x66+0x80) ,
'5.' : get_bit(0x6D+0x80) ,
'6.' : get_bit(0x7D+0x80) ,
'7.' : get_bit(0x07+0x80) ,
'8.' : get_bit(0x7F+0x80) ,
'9.' : get_bit(0x6F+0x80) ,
#10~15
'10' : get_bit(0x77) ,
'11' : get_bit(0x7C) ,
'12' : get_bit(0x39) ,
'13' : get_bit(0x5E) ,
'14' : get_bit(0x79) ,
'15' : get_bit(0x71) ,
#A~F
'A' : get_bit(0x77) ,
'B' : get_bit(0x7C) ,
'C' : get_bit(0x39) ,
'D' : get_bit(0x5E) ,
'E' : get_bit(0x79) ,
'F' : get_bit(0x71) ,
#A.~F.
'A.' : get_bit(0x77+0x80) ,
'B.' : get_bit(0x7C+0x80) ,
'C.' : get_bit(0x39+0x80) ,
'D.' : get_bit(0x5E+0x80) ,
'E.' : get_bit(0x79+0x80) ,
'F.' : get_bit(0x71+0x80) ,
'.' : get_bit(0x80) ,
'non' : get_bit(0x00)
}
#
num2w={
'0' : get_bit(0) ,
'1' : get_bit(1) ,
'2' : get_bit(2) ,
'3' : get_bit(3) ,
'4' : get_bit(4) ,
'5' : get_bit(5) ,
'6' : get_bit(6) ,
'7' : get_bit(7)
}
class CAT_8_Smg(object):
def __init__(self,number=0,w_pins=['Y10','Y11','Y12'],d_pins=['X1','X2','X3','X4','X5','X6','X7','X8']):
self.number=number
self.wx_pins= [Pin(temp,Pin.OUT_PP) for temp in w_pins]
self.dx_pins= [Pin(temp,Pin.OUT_PP) for temp in d_pins]
self.smg_display=[]
def numberpros(self,number):
self.smg_display=[]
#
self.smg_display.append(number//10000000%10)#
self.smg_display.append(number//1000000%10)
self.smg_display.append(number//100000%10)
self.smg_display.append(number//10000%10)
self.smg_display.append(number//1000%10)
self.smg_display.append(number//100%10)
self.smg_display.append(number//10%10)
self.smg_display.append(number//1%10) #
'''
#
import math
self.smg_display.append(int(number//math.pow(16,7)%16)) #
self.smg_display.append(int(number//math.pow(16,6)%16))
self.smg_display.append(int(number//math.pow(16,5)%16))
self.smg_display.append(int(number//math.pow(16,4)%16))
self.smg_display.append(int(number//math.pow(16,3)%16))
self.smg_display.append(int(number//math.pow(16,2)%16))
self.smg_display.append(int(number//math.pow(16,1)%16))
self.smg_display.append(int(number//math.pow(16,0)%16)) #
'''
def display(self):
self.numberpros(self.number) ##
for num in range(8): # num
temp=0
for pin in self.wx_pins: #3 pin pin1 Y10 A
pin.value(num2w[str(num)][7-temp])
temp+=1
temp=0
for pin in self.dx_pins: #
pin.value(num2d[str(self.smg_display[num])][temp])
temp+=1
pyb.delay(2)
temp=0
for pin in self.dx_pins: #
pin.value(num2d['non'][temp])
temp+=1
#
if __name__ == "__main__":
smg=CAT_8_Smg(number=87654321)
while 1:
smg.display()