|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Micropython实例之TPYBoardv102位数码管显示实验
, W) M4 I: `1 }8 z2 \# s所需原器件
, ?0 i6 t6 B4 \ \3 s 1 TPYBoard V102 一块 2 四位数码管一个 3 杜邦线若干 4 面包板一块(为了接线方便,可不用)6 I3 t; X; `, U+ n
接线图+ v1 Y$ w/ s" |5 H
8 X3 g/ j" ^$ S( E 四位数码管引脚图
+ j" A1 w! k* Q2 D# B
7 m# e9 B2 `$ X- x 开发板与四位数码管针脚对应:6 s u2 @& s0 F* D' P5 G2 y
) ~) G/ [% r1 W4 P! [9 F$ Q
程序源代码:
0 V+ r6 p: \2 }. T* Jimport pyb( m& l' ~2 \+ @7 {4 V: i
from pyb import Pin
) q8 z6 Z; u% D2 W' g) W: t& Q7 @
& Z, z+ q( z$ [/ { L( @! m$ u#数码管a~g dp对应的开发板引脚: B3 Z3 [+ H& y7 _3 C( Y
d_Pins=[Pin(i,Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
( ^" n( Q/ n( ]9 }8 R/ ]#数码管位段1 2 3 4对应的引脚
0 N) a8 D. q/ o- \, \" _w_Pins=[Pin(i,Pin.OUT_PP) for i in ['Y9','Y10','Y11','Y12']]. ^+ e3 ]0 z6 A4 W
" W+ S! S+ Z. O
number={
" _5 ]' `2 V+ N: V$ z6 t'0':* a: n! `; ^6 @
[0,0,0,0,0,0,1,1],#04 p& G# ^' F! F; g% ?4 E/ @
'1':: z- ^7 h( N: M4 V9 o1 j% T$ g
[1,1,1,1,0,0,1,1],#1+ w+ U3 d/ F0 H6 a r
'2':: z5 e) n6 H4 {# g+ E* o4 z. r& ?5 c
[0,0,1,0,0,1,0,1],#2+ [2 z d) i" e+ V5 I
'3':$ j2 V7 O8 ~# u2 H2 e* {
[0,0,0,0,1,1,0,1],#3
8 I% y/ L& K' w. @1 w$ E0 ['4':
* Z. I3 Z, a/ H* D W[1,0,0,1,1,0,0,1],#4
. C) Y) g: Z$ H! V& [3 G'5':
: L& Y, Q) c' l- D[0,1,0,0,1,0,0,1],#5
0 V+ _: O1 d: W0 G0 E/ L! @'6':
2 e+ n" L8 S2 v$ @: i* ^[0,1,0,0,0,0,0,1],#67 S: `& A5 j* |/ K* t
'7':. }+ U! E% ^3 P4 _& K* ^# I, _
[0,0,0,1,1,1,1,1],#7
" O5 A6 w9 y) Y# V'8':0 p; L) U7 \/ t# g
[0,0,0,0,0,0,0,1],#8/ ^3 ?7 M7 F/ e4 [, u' |
'9':# P y4 E# U& j0 j0 F# Z+ f
[0,0,0,0,1,0,0,1],#9
8 K5 T7 U1 {1 G9 v9 Y3 \( B8 t}/ U, I2 c8 U0 v2 l# u
3 E6 H' }6 w: S
def display(num,dp):# x7 T2 A/ P8 K% b2 ~
global number* d) n* Z0 w/ _2 ^* G; |& j
count=0/ ~; W; R/ Q4 G( {. }5 `
for pin in d_Pins:#显示num的值 ]# G5 {1 G9 h, W1 G. z& h
pin.value(number[num][count])
% H S+ B" L: u# ^3 b6 Q count+=1
7 a6 f% ]0 N0 w- k1 r# D7 u if dp==1:4 h3 s+ J/ y( y
d_Pins[7].value(0)- T" c& e8 I& \! d2 ?2 _% K
def clear():
& k& m3 f, O3 @ for i in w_Pins:
* J3 H; }! o* Q2 l8 n7 q i.value(0)
. D. Y% e6 i R3 r for i in d_Pins:7 v, |" `( @. j- O0 V$ j7 M, D* A
i.value(1)) @ ]& B3 M$ E6 X$ y% [9 F3 m5 H
def showData(num):
, z- b# r. e* k$ d. s #分割出数值的百位、千位、个位和小数位的值
- O! B2 e6 k$ V- ^- S d_num=num
- V! ^) u4 Z @: @: ~ location=d_num.find('.')! F: t+ a0 l( d( _, T3 l1 j
if location>0:
8 |$ z d) V: F4 c+ p @ d_num=d_num.replace('.','')
+ J0 m) E. s- [ X5 |( \( { while len(d_num)<4:7 {5 Z2 s5 v2 x, v8 t" e$ T
d_num='0'+d_num0 |0 P f7 \8 t
for i in range(0,4):2 ]6 O5 F. e* l8 R
pyb.udelay(2000)( k3 X* a2 I$ M6 f9 P( R/ v) ~ O
clear()
# g7 B9 O! l5 `; N; Y# ~ w_Pins[3-i].value(1)9 ?+ a# C' B) M1 A- C/ z
if i==location-1:
* o6 z x! a* i2 U5 Q$ c- f5 B display(d_num,1)
. D9 R K: U8 r3 f( T$ m else:
9 h8 @( d* G( t( a8 d3 n; a display(d_num,0). r4 g4 [$ m9 v; }1 n& j7 m# o
if location<0:
% T7 O! f; u1 \9 G% w for i in range(0,4):
5 o) J) J$ q% L! I: t; r& h1 @ pyb.udelay(2000)
; x$ \7 O" P5 d7 ~' k clear()5 ^ E$ s2 q$ p9 Z2 y$ R+ a
w_Pins[3-i].value(1)
& R' X/ j3 E% X( K; _ display(d_num,0)
4 `, }2 v3 ^1 s, c9 J1 wwhile True:
- ^7 `5 |" k$ E! }7 [* Z3 O/ H- w8 Q5 m l3 ^4 g0 Z0 V: I
num='9016'
4 l; d5 M4 G3 D( ^# a) c showData(num)
: E% i; n! n+ f/ v& q* |* j8 L, ^6 ]/ F6 m! N+ u6 e8 a
|
|