找回密码
 注册
关于网站域名变更的通知
查看: 531|回复: 1
打印 上一主题 下一主题

Micropython实例之TPYBoardv102位数码管显示实验

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-29 10:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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: `

该用户从未签到

2#
发表于 2019-1-29 16:23 | 只看该作者
学习一下,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-15 21:11 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表