你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【基于STM32】Stduino拓展学习(一)四位数码管

[复制链接]
stduino 发布时间:2020-8-24 10:19
键词:
51 ; STM32 ;Arduino ;Stduino单片机; Stduino UNO和Nano;四位数码管
! v1 s8 L7 O- K
从大部分开始,我们将介绍更多的电子元件。其中大多数大家可能并不熟悉,但是如果你把前面的 37 个传感器都测试过了,这些对你来说不过是稍微复杂,繁琐一些。
学习这些扩展的电子元件,不需要从头到尾学习一遍。就是在你需要用到它的时候,知道有这么个东西,然后再来看看就好。原理很简单,会用就行。
说明:
数码管(七段显示器)能够显示 0〜9 十个字符,生活中进场在一些只需要显示数字的地方出现,例如电子秤,食堂刷卡终端,电梯楼层显示等等。数码管有多种型号,其中显示4 位数的为四位数码管。
A01-四位数码管展示图.png
在讲解四位数码管之前,我们先介绍一位数码管,也是最简单的一种。如下图:
A01-四位数码管单位说明.png
一位数码管的数字共有七段,每一段实际是一独立的 LED ,因此数码管也被称为七段数码管。通过控制LED 输入的高低电平控制亮灭,从而变化出0〜9 9 个字符(如下图)。
A01-四位数码管单位说明01.png
共阳极,即七段 LED 公共同一个阳极,那么通过控制每一段是否接地来控制亮灭(接地,则电路导通,点亮;反之交替)。共波长,即七段LED 共享同一个波导接地,然后通过控制每一段输入的高电平控制亮灭(如下图)。
A01-七段共共阴共阳说明图.png
有一些数码管带有 IC ,能够通过集成电路进行控制。但是这个数码管比较原始,一个七段数码管需要更长的IO 口,需要我们自己手动写每个一个字符的高配置。
四位数码管就是集合了四个单位的数码管,其也包括共阴型与共阳型两种。我们知道七段数码管需要插孔 IO 口,四位数码管每个数码管的数字不同,那么就需要进行单独控制。所以应该需要32 IO 口,显然这会占用过多的端口。
A01-四位数码管引脚说明.png
实际,四位数码管每只有一个数码管显示字形,其他三个数码管断电不显示。四个数码管依次循环显示,当频率足够大时,人眼由于视觉残留的缘故,就会觉得四个数码管是同时点亮的,看到连续的显示效果。这就好像,,每个帧都是不同的,但是播放的速度足够快( 24 帧每秒),人眼就会觉得画面动起来了。
这样,四位数码管只需要连接 12 个插座。其中有时用来控制单位数码管的8 LED ,称为段码;另外四个用来控制选择点亮和熄灭的数码管(每次只有一个点亮)。
A01四位数码管电路图.png

  ^  w# f* O: V- [
实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。

3 l# `4 P8 s; m7 M0 x9 P
器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻

3 p+ t% C" w0 S- t& \9 m
电路连接:
A01连线图带水印.png
' i3 a6 G4 f  i3 `; L9 E  }: H* n
代码展示:
  1. int second = 0;2 e6 h3 v% d% T9 N' ^+ G
  2. void setup() * q  e6 S4 \0 U. T; `
  3. {
    ( h& m8 T# T: p: |$ X7 H. T
  4.   // put your setup code here, to run once:
      u6 _3 W, [2 r8 M
  5.     pinMode(1,OUTPUT);//A
    * ~1 u6 T: m8 X7 q# j: ^
  6.     pinMode(2,OUTPUT);//B; M3 ]0 D: S7 e& Y5 Y, z: w# @
  7.     pinMode(3,OUTPUT);//C
    & |6 M- ]. h7 w+ G* d& M' {
  8.     pinMode(4,OUTPUT);//D
    ! Z" c0 k" ~" W. I6 [
  9.     pinMode(5,OUTPUT);//E  \4 v$ _6 y, h$ v
  10.     pinMode(6,OUTPUT);//F
    * ?" E9 }% Q. l
  11.     pinMode(7,OUTPUT);//G. C; {7 X- A# D9 r7 C) `
  12.     pinMode(8,OUTPUT);//DP
    6 _. G) ~0 Q8 Z* `
  13.    
    % y9 j  Z  ^: _; [5 X( |
  14.     pinMode(19,OUTPUT);//1( q8 M, k8 f: T* A- v
  15.     pinMode(18,OUTPUT);//2
    0 k. \6 `9 j6 C0 m  B
  16.     pinMode(17,OUTPUT);//3
    4 H' V# \# ]& f/ N! F' R3 }0 j6 R
  17.     pinMode(16,OUTPUT);//4
    . x. p) k  h; Y
  18.     + g( H+ x: H+ x  e! R) w
  19.       M+ |4 N3 N3 [& M; R: d
  20.     digitalWrite(19,LOW);
    . Z0 [1 N2 Y. Z1 P7 |
  21.     digitalWrite(18,LOW);
    # Q" {( E+ x/ {$ y( d/ t
  22.     digitalWrite(17,LOW);
    ' u: `' I7 Q  H4 W% C- v
  23.     digitalWrite(16,LOW);9 m' h. z0 M- {, C( D

  24. 2 ^7 W* U- z# u. }
  25. }
    % P& [3 W% x$ U0 N

  26. & q, B% M9 [- X
  27. ' y: p; o( Y9 J" @0 D& ]% @
  28. //void SevSegInit()
    ; k" v* D) }, H% @4 N! Z
  29. void showNum(int num, bool point=false)
    ! e& f6 X/ u! Z
  30.     {   if(point)% C" V0 o/ j) a, K( k. y# r
  31.         {* `% O( p$ A- g: b7 X1 K, [
  32.             digitalWrite(8,HIGH);//DP,TRUE: @! w; t# _: V4 a# S, t. d1 @
  33.         }else{
      ]. y) v( \  J' {3 _
  34.             digitalWrite(8,LOW);//DP,FALSE+ Q  ^: `2 X% T# y. a) i
  35.             }+ @# X  G7 @( K; A: J8 N$ b" V% e
  36.         switch(num)9 n1 k+ a& x: M1 I% D( m
  37.         {* p, @! T, X3 @- J
  38.             case 0:8 V7 F+ d  S$ u  ?
  39.                 digitalWrite(1,HIGH);
    $ r) H. u5 p! v& U# }  B5 w$ |5 l5 I
  40.                 digitalWrite(2,HIGH);
    : b4 U. U# ~; ~& g2 T2 l
  41.                 digitalWrite(3,HIGH);/ G2 U& q& f9 j, a# u
  42.                 digitalWrite(4,HIGH);% I, I2 c9 v# n# J; Q
  43.                 digitalWrite(5,HIGH);' \+ o! k7 W$ p3 V" [& |9 J  _
  44.                 digitalWrite(6,HIGH);: f7 r& {$ w' L$ A3 v
  45.                 digitalWrite(7,LOW);6 p5 R% B: r, |9 [. e! @$ C8 g* t
  46.                 break;
    " V5 ]9 G0 |- ~! O( z+ Z
  47.                
    8 x8 u9 O0 ?8 B, d
  48.             case 1:: U9 a6 L* V+ M+ I' T+ x4 R; O  f8 b
  49.                 digitalWrite(1,LOW);
    8 f* k  ~+ K8 N7 r: T1 P
  50.                 digitalWrite(2,HIGH);2 f" D  O$ }  F1 [, Z. f3 B
  51.                 digitalWrite(3,HIGH);
    " V) w# X$ A- _" g1 _
  52.                 digitalWrite(4,LOW);
    , |- g$ M7 Z* F  G& X" B$ }
  53.                 digitalWrite(5,LOW);+ R5 O+ S+ s0 Q3 L6 p
  54.                 digitalWrite(6,LOW);  w" I# p  o. u% u4 Y" l; f
  55.                 digitalWrite(7,LOW);
    ' }& S* ^4 l3 ~0 C! N6 w: q
  56.                 break;
    ' Q0 l; e9 Y2 K9 H/ k! R1 O0 [
  57.                
    2 ~9 m% [: g" s) B7 S* P
  58.             case 2:
    7 u) d6 c* _! ]
  59.                   //23 _5 d% e+ `" e
  60.                 digitalWrite(1,HIGH);//A
    ' f' W+ }. Y7 _4 S% c; h, ]
  61.                 digitalWrite(2,HIGH);//B( d; S9 T* W) R  Q+ H5 P& E3 Q4 T  A
  62.                 digitalWrite(3,LOW);//C
    ' d! n5 Z7 V; H
  63.                 digitalWrite(4,HIGH);//D
    9 d( k6 }0 u9 i  v/ g
  64.                 digitalWrite(5,HIGH);//E
      e7 b- z5 T* V
  65.                 digitalWrite(6,LOW);//F% ]) V+ s! U, ]! p+ Z9 E+ S  {' s( L
  66.                 digitalWrite(7,HIGH);//G
    : \9 O- j4 F" J# R. ^  e
  67.                 break;
    ! `9 Q. j/ d3 H3 s  g5 ?
  68.                 % U* f" B( N! c4 k6 F2 L
  69.             case 3:
    5 N" p: I! S6 Z; r1 e2 l
  70.                   //3+ L+ t2 u  W# q$ k% ]0 H
  71.                 digitalWrite(1,HIGH);//A- {. K  J' o0 V" ~0 V
  72.                 digitalWrite(2,HIGH);//B3 l6 R1 D* s7 U, C5 _0 p
  73.                 digitalWrite(3,HIGH);//C
    + X' f3 f! e# D' C
  74.                 digitalWrite(4,HIGH);//D! z: ?7 T# D! F9 ?: b
  75.                 digitalWrite(5,LOW);//E' F7 P1 Q# y: ^
  76.                 digitalWrite(6,LOW);//F
    # O% ]) F' K) h
  77.                 digitalWrite(7,HIGH);//G1 L) L, g, X2 Q) ?, d

  78. ) z* ^  a. _0 d: r
  79.         
    5 v# c5 U, r  J+ B* \6 |- M
  80.                 break;( v% I2 j: G2 X. \8 X: n$ c- M
  81.                
    ! _5 ?8 n* y3 ?; i
  82.             case 4:4 D2 }  m6 N4 t& u9 x# S" U" I
  83.                 digitalWrite(1,LOW);//A
    / m6 K; d' D) a
  84.                 digitalWrite(2,HIGH);//B
    * k/ m* a! B  K
  85.                 digitalWrite(3,HIGH);//C
    ( z, `# V$ g1 a0 z+ h$ [5 Y. }- T8 q
  86.                 digitalWrite(4,LOW);//D! x4 z/ ^) k% h! r$ g
  87.                 digitalWrite(5,LOW);//E
    1 e; q2 {, {& p. ?2 Z! n
  88.                 digitalWrite(6,HIGH);//F
    ! e- j% _3 T4 S" D4 l) K$ O. H
  89.                 digitalWrite(7,HIGH);//G
    $ Y* c8 z& D. K! g0 Y9 G
  90.                 break;8 A- H, b5 N/ s( }6 m. @
  91.                
    ( @& |) \) @9 T8 x5 I
  92.             case 5:
    & g6 L, W1 O4 Q
  93.                 digitalWrite(1,HIGH);//A
    $ }+ j) Z* y2 I2 O! v8 W3 l) x
  94.                 digitalWrite(2,LOW);//B
    $ A; @1 k% _) F5 Z5 S" p3 Y* o
  95.                 digitalWrite(3,HIGH);//C
    + t0 J" B$ ^0 I7 o
  96.                 digitalWrite(4,HIGH);//D
    ; e7 r3 Y, z; Q8 k! e# I
  97.                 digitalWrite(5,LOW);//E
    1 v8 n2 I( w% b( U3 i: A
  98.                 digitalWrite(6,HIGH);//F) B- @/ k5 w* Z! L1 f
  99.                 digitalWrite(7,HIGH);//G! f  I5 t( v( `1 X8 z8 e' w
  100.                 break;
    ' M. |, E( L0 v/ W8 N" q
  101.             case 6:
    ( ]7 O/ a6 U0 l) F; a* W: o) R2 G
  102.                 digitalWrite(1,HIGH);//A
    / b3 `9 l# Y, Z3 @5 b
  103.                 digitalWrite(2,LOW);//B
    # t' Z' X9 B. ]3 H0 v6 [. `" \
  104.                 digitalWrite(3,HIGH);//C
    1 j7 S7 `( M8 v% Y
  105.                 digitalWrite(4,HIGH);//D
    9 ^" v' |' K" ]/ G
  106.                 digitalWrite(5,HIGH);//E# d* x$ U+ S% O
  107.                 digitalWrite(6,HIGH);//F
    % s; S/ w5 \& p& `! f9 b
  108.                 digitalWrite(7,HIGH);//G
    9 Q5 {6 F  g8 {0 @
  109.                 break;# i+ Q# }* y/ p. I/ h! m. B; Y
  110.             case 7:
    " Q7 |' p. [# G9 S; L% Z, F& k2 d
  111.                 digitalWrite(1,HIGH);//A
    ! n9 @, T5 A3 ~, ~2 u+ t
  112.                 digitalWrite(2,HIGH);//B
    * z) l3 T5 E- d( O* X, j4 T( C
  113.                 digitalWrite(3,HIGH);//C6 g2 k5 J) x8 n2 E: _1 J
  114.                 digitalWrite(4,LOW);//D
    $ M8 g; y  y. i4 Y" G
  115.                 digitalWrite(5,LOW);//E& v# p+ A" _$ a3 G$ m
  116.                 digitalWrite(6,LOW);//F
    " T8 o& v, {5 q
  117.                 digitalWrite(7,LOW);//G
    1 I& h. o; r- Q3 n4 G
  118.                 break;# Y, D: g* ]4 p3 N% v, s
  119.             case 8:
    & O1 U) L+ {  T. ], d
  120.                 digitalWrite(1,HIGH);//A- P3 \8 [: X! {0 P4 g6 W8 s* t
  121.                 digitalWrite(2,HIGH);//B
    ( S8 q! f8 w+ E
  122.                 digitalWrite(3,HIGH);//C
    ' o# ?9 D$ T9 X) q# ^# Z4 C* ^
  123.                 digitalWrite(4,HIGH);//D1 N8 e, f2 o* R4 a$ N/ l
  124.                 digitalWrite(5,HIGH);//E
    ) w  V6 Z$ i, Z1 c' Y3 }
  125.                 digitalWrite(6,HIGH);//F
    $ C- i) p: q' w2 [$ p
  126.                 digitalWrite(7,HIGH);//G
    - K9 _; b4 E( U5 W7 A* N' M; q
  127.                 break;; _5 ?# s, e* t/ F* c3 H. |! }
  128.             case 9:, z1 J' D" v# E6 u
  129.                 digitalWrite(1,HIGH);//A, }: t4 I1 L+ f4 ^
  130.                 digitalWrite(2,HIGH);//B' O' a' e7 T, k; Z+ @  |6 T
  131.                 digitalWrite(3,HIGH);//C
    ) u: v% T8 d; |" f) r
  132.                 digitalWrite(4,HIGH);//D
    " I/ N+ p# q! H  C# d0 b$ e2 V
  133.                 digitalWrite(5,LOW);//E  e0 ?0 A, ?1 o& H' i& \2 a' j
  134.                 digitalWrite(6,HIGH);//F
    ( I& n+ ?6 j1 j: ~$ @
  135.                 digitalWrite(7,HIGH);//G
    * @+ @' f9 e1 l% [
  136.                 break;9 O2 V5 W- `) S) P
  137.         }) ^! {' w' F5 Y0 t: f/ C- u
  138.     }9 F8 a5 i; Y, d7 X+ X; |
  139. 6 P' \" r7 t- x& |* z' b3 g7 d3 D
  140. void setNum(int num)8 ], N" n& f6 y& K) j
  141.     {8 H+ s$ B! V+ d# s3 h
  142.         & s6 m% e; d! l
  143.         int d0=num%10;- }/ d# D9 R: q) v
  144.         int d1=(num%100)/10;0 {) G4 f  H! D" A, H' L9 r
  145.         int d2=(num/100)%10;
    7 a" |$ e' t3 E. Z) C7 e1 j9 D
  146.         int d3=num/1000;8 o% F$ n0 c/ T5 E- s
  147.         0 X9 Y3 ?. a. G& R& Z
  148.         
    5 K  z- _* q. U7 i3 G
  149.         int add=250;  h! Z1 r) V5 `& U* m  x, P  a
  150.         ; z6 R$ u! W5 Z8 ]# I( B/ w5 U
  151.         digitalWrite(19,LOW);
      k3 J4 _3 e3 W2 c& b
  152.         for(int i=add;i--;i<0)
    % e6 F1 c4 u8 [; a  ?. l9 Z
  153.         {1 |2 b. |" v- L, H* c; ^
  154.         showNum(d3);
    $ Y" G+ |5 u# X! {6 {
  155.         }
    $ `2 W) u! o4 B
  156.         digitalWrite(19,HIGH);# s+ I, g  D' T1 \5 ~  Q, {5 B( f
  157.           Y9 N  \' E  z+ L
  158.         digitalWrite(18,LOW);& C: h, G: g: B8 I4 r! M! Q
  159.         for(int i=add;i--;i<0)" q6 f  @% A! W
  160.         {
    ! ~$ l3 C3 T8 q% h# {
  161.         showNum(d2);
    5 `" M" O! u4 }4 l
  162.         }+ r9 q3 \, z0 _: t% f" e
  163.         digitalWrite(18,HIGH);; X, P; L: T8 U" z* `" U
  164.         
    9 z$ Y0 F+ |* r! q  g- x, A
  165.         digitalWrite(17,LOW);3 ^- F: k, K6 G
  166.         for(int i=add;i--;i<0)
    5 a: \8 L0 I8 ]6 I& Z0 `# N
  167.         {
    ! \" \3 X8 X/ R) I0 s5 Z- _
  168.         showNum(d1);
    " @. a4 v0 e" ?: M
  169.         }% }. V" y6 {7 O
  170.         digitalWrite(17,HIGH);! z- ~" v, T4 L% n* E# k
  171.         
    & U+ V8 i' U# B/ r) }, k
  172.         digitalWrite(16,LOW);# D+ i, u0 w3 v( W
  173.         for(int i=add;i--;i<0)  C- g( L4 S8 X+ c
  174.         {( a# k& L8 _5 `/ C0 G
  175.         showNum(d0);' J# n. O. w1 |$ T' u/ [3 b
  176.         }
    2 X( I* {9 K$ _/ Z; s
  177.         digitalWrite(16,HIGH);
    / r: L5 p* Z) {
  178.         
    * G2 Z2 a2 e3 q" z$ M
  179.     }( ]. o6 @! E6 s) Q
  180.    
    . c8 v0 Y" _! i4 c0 m( @
  181. void loop()2 d- C% p* V5 b: U2 p6 {  i! w! ]
  182. {3 k3 J- A) x6 A* A
  183.   // put your main code here, to run repeatedly:0 A3 `+ b2 c( ]3 Z7 J( e
  184.     setNum(second);
    - L5 [* D' `# h, i5 }& ]
  185.     second=millis()/1000;
    - g8 D& \( Y! a: R/ f
  186.    
    # A8 w6 R) L, `1 Z9 C
  187. }
复制代码
实验效果:
A01效果图.png
5 T3 l5 S, |' M& [* u
3 ?, |3 @( j/ s3 x3 D, j- P

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。6 \# D% u+ M2 d; l
IDE当前支持的功能有:

    5 o$ n- |, q3 W  t3 {3 l

    % |; D- T3 P% b% e/ E
    7 a2 g: a+ u4 `' W& w8 T2 m: ]3 I6 t
    2 C. v6 l% p1 ]$ E0 E
    6 I, W. J8 i& K0 L/ e: O
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化( Q7 J  `7 e( z3 a# Q9 N
  • SWD\串口程序下载&调试(已验证)
      F! Q0 H2 |2 m+ h2 o
  • DFU程序下载方式(待验证)8 \& Z1 J7 L+ O6 x

    ) M5 A) o" b* D4 ~1 N8 m1 r
  • USB HID程序下载方式(待验证)
    3 T& v' c9 I2 [+ @' P1 j

    2 V5 h8 e& x5 J% `$ A2 F& p
  • maple DFU程序下载方式(待验证)3 r6 i0 J7 B7 g0 O  r  u  _* C; L
    6 R9 R5 w) l! C& u/ t
  • maple DFU2程序下载方式(待验证)
    . k3 B3 @9 c: u, k) d# j0 N
    - D7 L+ j5 b" r( Z0 q) v
  • MassStorage程序下载方式(待验证)
    + ]5 Y% D$ }5 t/ N
    6 x! K8 R9 l! Q) J# ~8 g
    更多功能细节请前往www.stduino.com
    进行了解
    ; M& v- G" p% \

    已经支持的芯片&板型列表:


    % N/ k: P7 l+ i- |8 F
    • Stduino UNO&Nano
    • Nucleo 144 boards
    • Nucleo 64 boards
    • Nucleo 32 boards
    • Discovery boards
    • Eval boards
    • STM32MP1 series coprocessor boards
    • Generic STM32F0 boards
    • Generic STM32F1 boards
    • Generic STM32F3 boards
    • Generic STM32F4 boards
    • Generic STM32H7 boards
    • Generic STM32L0 boards
    • 3D printer boards
    • LoRa boards
    • Electronic Speed Controller boards
    • Generic flight controllers
    • Garatronics boards
    • Midatronics boards
      % x+ s$ r3 S$ w6 a$ ~2 P& m4 S0 z2 q" \) s" ~, e1 [7 g

      更多功能集成正在进行中~


      ' T! w2 C3 Y! o! R# h& O6 s. j
    0 j* W  o# _  P% Q. T
( \6 B* A. a, q6 W
收藏 评论0 发布时间:2020-8-24 10:19

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版