|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Micropython实例之TPYBoardv102位数码管显示实验
7 a7 W6 _& ]7 }2 I1 @# u* j! d所需原器件
( A0 P6 z* r; w 1 TPYBoard V102 一块 2 四位数码管一个 3 杜邦线若干 4 面包板一块(为了接线方便,可不用)
6 Q9 o! w4 G" C( Z! ]1 o1 d$ x" ^ 接线图
0 _6 [. B1 s6 m+ s8 i. l$ Y
; `! h/ p7 n4 c5 Q3 D/ Z* j4 \ 四位数码管引脚图) p8 I: g7 a# W7 N
8 H( j' {5 r" m9 f 开发板与四位数码管针脚对应:6 l5 g1 P# m$ f; S- W& X
1 v: G& A& D% I; [9 \. T 程序源代码:
/ h, p, @$ B- r% Vimport pyb- y# _/ v6 R+ Y' ?2 M1 N+ ]
from pyb import Pin
1 g7 H- L7 D2 R0 q' U1 @9 w j z
" P) ^: t7 O. A9 k' m: w; I#数码管a~g dp对应的开发板引脚( @: E1 |- D. Z9 S5 z5 |
d_Pins=[Pin(i,Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
% E( f3 `# K$ h( K, j9 k; e' {#数码管位段1 2 3 4对应的引脚; w1 [8 k2 W' D, T4 `
w_Pins=[Pin(i,Pin.OUT_PP) for i in ['Y9','Y10','Y11','Y12']]5 B5 E; f! p8 G1 X4 X9 h
1 ]3 g, |! C" b- I, Tnumber={& v: r* k3 J( ~9 U/ H, }9 \
'0':
/ T" e' k" L' n$ A) D5 S[0,0,0,0,0,0,1,1],#00 R8 q( {0 ]' Z. S: R% T. ^. S* A
'1':
- |0 h) e4 r- X6 T. z+ p[1,1,1,1,0,0,1,1],#1
0 [' f& ^0 ?! I4 w1 k7 Q'2':$ B9 v2 O$ r( I: ]3 a
[0,0,1,0,0,1,0,1],#2* B4 i) \9 l9 Y7 l. f$ a* w
'3':
9 W9 [$ g% W) f6 v' P# A1 t[0,0,0,0,1,1,0,1],#3# Y# t' ?& m. i
'4':+ Y3 P2 T, B6 I! R9 T- C
[1,0,0,1,1,0,0,1],#4
. |1 F2 b7 O* a/ v* A x6 i$ G2 u'5':/ b) s$ M+ J5 ]: t) Q3 ]
[0,1,0,0,1,0,0,1],#54 Y+ e6 q4 H' [' c
'6':0 b( I9 G( E; U" w
[0,1,0,0,0,0,0,1],#65 w2 o" N9 _+ d4 j. R# k7 c
'7':
( { N/ b& R& J" B! _) M. e" F2 [[0,0,0,1,1,1,1,1],#7
5 b+ T: g- r% K'8':
5 D2 V/ _) p% s& H+ B0 n[0,0,0,0,0,0,0,1],#8
' h7 t: ^- {$ t( A( P'9':( O. `1 G. y8 a% x- H1 H& W
[0,0,0,0,1,0,0,1],#9
M! b( h; Q e' H! F! n}
, x b+ ]" k2 S) }$ Q2 z# r, O+ C0 Y+ m; F7 W! q& A$ }% o
def display(num,dp):
% |/ U8 E% g: N# r/ u global number8 F" q5 K0 N- V" K. w
count=0( X z, \( {, X5 u/ A6 u
for pin in d_Pins:#显示num的值! Y! @3 T( x, B' J* @ B/ u
pin.value(number[num][count]) m1 K, k- ^4 t5 }
count+=1
- M( ?" [! l% p- Q. C if dp==1:
, _1 }1 }# l2 ~! H7 R8 l3 V* S d_Pins[7].value(0)! P" y; z: a0 B8 _, Y, I
def clear():/ ?7 M3 t. w5 P: a
for i in w_Pins:
' M' ]1 s0 L! ]+ W A { i.value(0)
3 ]! i) n4 }: S for i in d_Pins:- \/ D' i) Z( n! [3 J- t" q( L
i.value(1)
, n' D j* a3 U& g+ u1 L. {- Edef showData(num):. W7 w1 ?- s" p6 O
#分割出数值的百位、千位、个位和小数位的值
5 u. r; e$ d% U d_num=num7 ?$ Q* T; M4 U+ W1 e# T( J7 j
location=d_num.find('.'); L% ~# F, f+ U6 k% V
if location>0:
! c0 q4 `+ M& K- D4 e d_num=d_num.replace('.','')
0 b2 `! _6 R, P' X8 T while len(d_num)<4:1 [3 x5 F |' P) m' W5 I2 O- E) k( {8 t
d_num='0'+d_num# x* k: ^/ G' t. K, ]$ k
for i in range(0,4):% ~! Z7 S* P" }' Z3 }
pyb.udelay(2000)
0 t; T, n; W4 ] t clear()5 z8 |. Z+ g6 j$ }4 |. B# M' s
w_Pins[3-i].value(1)& N( ^# W0 {7 d8 ]! ^, W
if i==location-1:7 p# @+ i. h8 V2 |0 n7 C
display(d_num,1)
' Y) Y' Z2 C' `5 _2 I else:
% D, [* O2 @/ X/ v y3 q display(d_num,0)2 E: }5 w3 b a$ @2 _! S
if location<0:
' h0 j' [$ J* P$ L! z for i in range(0,4):
/ }" l5 g* \! ?' Q pyb.udelay(2000)
/ U& R1 }9 l1 k+ ?( q: T clear()3 h+ M+ |) a/ o, M
w_Pins[3-i].value(1)+ d" N: z% a7 P9 z }* N8 v- F
display(d_num,0)) U/ V, R+ @! l5 |5 a. p) T
while True:6 u8 Y9 I$ y2 e; h7 x
; e: `& P( i5 P* {4 l" C/ `5 T7 @
num='9016'
O9 L" E8 B5 f8 }4 o0 K showData(num)
# L E% l% q4 F- [
. S. R8 n8 n( |$ n. | |
|