原理非常簡單,控制各個針腳的高低電平來顯示數字,這里我用的是共陽的數碼管。不過有一個問題,我第一次顯示的時候代碼輸入數字是9.876不過數碼管顯示9.875,剛開始我以為代碼錯了,仔細檢查了幾遍沒有問題。然后用putty跑了一下,打印出來的是9875999 。后來又試了幾組數字有的正常顯示有的最末尾會減一。求助各位大佬到底為什么?
所需原器件
1 TPYBoard v102
一塊
2
四位數碼管一個
3
杜邦線若干
4
面包板一塊(為了接線方便,可不用)
接線圖
四位數碼管引腳圖

開發板與四位數碼管針腳對應:
數碼管引腳
|
a
|
b
|
c
|
d
|
e
|
f
|
g
|
dp
|
1
|
2
|
3
|
4
|
TPYBoard
開發板
|
X1
|
X2
|
X3
|
X4
|
X5
|
X6
|
X7
|
X8
|
Y9
|
Y10
|
Y11
|
Y12
|
fritzing接線圖
程序源代碼:
import pyb
from pyb import Pin
#數碼管a~g dp對應的開發板引腳
d_Pins=[Pin(i,Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
#數碼管位段1 2 3 4對應的引腳
w_Pins=[Pin(i,Pin.OUT_PP) for i in ['Y9','Y10','Y11','Y12']]
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,dp):
global number
count=0
for pin in d_Pins:#顯示num的值
pin.value(number[num][count])
count+=1
if dp==1:
d_Pins[7].value(0)
def clear():
for i in w_Pins:
i.value(0)
for i in d_Pins:
i.value(1)
def showData(num):
#分割出數值的百位、千位、個位和小數位的值
d_num=num
location=d_num.find('.')
if location>0:
d_num=d_num.replace('.','')
while len(d_num)<4:
d_num='0'+d_num
for i in range(0,4):
pyb.udelay(2000)
clear()
w_Pins[3-i].value(1)
if i==location-1:
display(d_num[i],1)
else:
display(d_num[i],0)
if location<0:
for i in range(0,4):
pyb.udelay(2000)
clear()
w_Pins[3-i].value(1)
display(d_num[i],0)
while True:
num='9.601'
showData(num)