|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Micropython实例之TPYBoardv102位数码管显示实验
% \- S' q) Q4 k- o4 ~- c) K2 D所需原器件& }7 v* H1 W) N
1 TPYBoard V102 一块 2 四位数码管一个 3 杜邦线若干 4 面包板一块(为了接线方便,可不用)
6 ]9 [" ^, m# ~. b 接线图* i0 U, \/ ^0 z! N; }
' e4 T* A4 G! s, X8 b
四位数码管引脚图; D. E# {* _9 i
* K# J4 H: y* H) S+ y; A! _5 P
开发板与四位数码管针脚对应:
, v/ b% U1 A- r% T
* f; N1 G% O1 U! a T
程序源代码:) z" u: L! E% Y2 [, ?" }
import pyb3 t; u8 t0 D$ z3 U3 A/ K
from pyb import Pin
, n% P! t$ u7 C& Q0 \
/ B2 l/ V3 h M8 i" _#数码管a~g dp对应的开发板引脚, D8 T1 i/ J& F
d_Pins=[Pin(i,Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
# p5 L5 j4 R+ X4 d# T, _#数码管位段1 2 3 4对应的引脚2 I8 }4 ^8 P6 R& J9 w+ u/ V; `+ A
w_Pins=[Pin(i,Pin.OUT_PP) for i in ['Y9','Y10','Y11','Y12']]5 ~. {" }+ I; `4 @
) x5 P; M+ B' Z' C) _: _) t: q+ O
number={/ K" v$ q A" O: U& n9 d& M
'0':
% S- \$ U# M. B- z8 T0 q[0,0,0,0,0,0,1,1],#0
: ^+ x6 g( N9 E; L, v: p5 u'1':# J* D& J+ T* L' [" @
[1,1,1,1,0,0,1,1],#1
6 t& S9 Z3 x; i: u, R. v'2':2 K7 {* @8 M/ z
[0,0,1,0,0,1,0,1],#2* S/ o: S4 L- ?0 O: g2 m0 `
'3':
8 p: k6 W. g1 `7 G1 n) U" n5 G& u G[0,0,0,0,1,1,0,1],#3) e* ]( Z/ H! P9 v, }
'4': k' o' e5 x6 }! |& w ^+ k- s3 ~
[1,0,0,1,1,0,0,1],#4& p9 ^" ]1 r- t p
'5':
4 B" f6 R x5 E1 B0 Y- l[0,1,0,0,1,0,0,1],#51 A- T$ T& |" x& J
'6':8 r4 T" _. T1 B1 L8 N# `% g
[0,1,0,0,0,0,0,1],#6
5 N* }1 i% H7 s( {'7':
) C7 ?8 k* U2 m% Z8 Q[0,0,0,1,1,1,1,1],#70 x) Q, V- }8 D
'8':2 r6 b1 ]3 t5 Q' t, }6 J# g0 n
[0,0,0,0,0,0,0,1],#8' T% y, P# a# m3 w
'9':( J1 F8 O s" z; {
[0,0,0,0,1,0,0,1],#9
6 y6 R& f; H! I U& k0 s( I}' k/ y( [# o3 V
) A3 y$ y7 q: c o5 V% hdef display(num,dp):( X3 s0 o' s; s4 {1 S- N6 E5 n3 `
global number4 Z ~" ?4 V6 i
count=0
6 G# w3 `3 R4 D3 C6 t# O for pin in d_Pins:#显示num的值
k0 M+ A- A: x pin.value(number[num][count])
' E* p, e, y) N" r count+=1
& a- [! t8 q$ M+ {( l if dp==1:# @7 ]- Y% J2 _ O( r8 _
d_Pins[7].value(0)
" p# U; B8 B6 ?' ~( Bdef clear():! w+ p' l) u0 Q8 b# p+ y
for i in w_Pins:9 d5 P4 ?) s, _' t
i.value(0)
9 U# r8 p0 g1 ^, |: g for i in d_Pins:" L0 O( [! `3 l6 `
i.value(1)
4 t% z6 r: G$ U* P& m7 e q" F6 Ndef showData(num):. [+ S1 j ?) @- x, X
#分割出数值的百位、千位、个位和小数位的值
6 E$ ~: |4 ~) N0 m d_num=num' M" r2 X. L! }2 ?9 R
location=d_num.find('.')
3 y* E j8 z9 D6 M if location>0:5 {, k* _- M' u( u+ u3 a7 ]
d_num=d_num.replace('.','')
0 y( A E- v/ ]# @ b/ Z8 @ while len(d_num)<4:
3 _2 o9 @, X1 u" C* l d_num='0'+d_num
# H* K0 P# w2 z3 D! R4 D& T for i in range(0,4):
; S: W' F/ n/ ^( z pyb.udelay(2000)
$ ^7 U& P; O) J2 N clear()$ |3 }8 |7 m% O! n* d
w_Pins[3-i].value(1)+ S) C1 L( t7 `& i
if i==location-1:4 H) u( b# Z/ f8 Y. `0 G$ _
display(d_num,1)6 i! h# q: a7 m3 Y$ f' X1 ^& [
else:# ?0 b# D$ g7 r5 ]
display(d_num,0)# ]5 c* j3 \: T0 ]
if location<0:
: B' {; [+ T: h0 i9 Y/ O for i in range(0,4):
8 P; [: [) y7 x; u# i% i' f pyb.udelay(2000)
/ ?& S7 |3 x- l# b ?5 |% ^ clear(), }% v) u1 A& Y9 `: z) J7 l+ S
w_Pins[3-i].value(1)' y: N: ]4 O9 a9 Y- J& W
display(d_num,0)
) L$ P' {9 i2 b; C& N, g4 ?/ Bwhile True:
+ B: [: L. Z6 Y }- @: |% i1 \% _% r7 O7 l) a4 Q
num='9016'; H3 E4 p" o: B1 q
showData(num)
% g' x" [7 X1 B( a! d
" S h8 z) U! J! h/ U: ` |
|