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

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

[复制链接]
stduino 发布时间:2020-8-24 10:19
键词:
51 ; STM32 ;Arduino ;Stduino单片机; Stduino UNO和Nano;四位数码管

# Z+ u4 S8 G+ t' ~
从大部分开始,我们将介绍更多的电子元件。其中大多数大家可能并不熟悉,但是如果你把前面的 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
+ [* }/ i2 R* f/ h: D# T' g" N! N
实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。
4 d# e( ]  N$ m" Y5 }
器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻

6 V( g3 y. P, i1 m- [
电路连接:
A01连线图带水印.png
% F' j' X8 k  |- ?6 P2 o& |
代码展示:
  1. int second = 0;
    + a. L8 K  Z6 R/ h0 h4 |4 Y& ^
  2. void setup()
    ' }: ?$ V5 E( G0 a8 e+ }
  3. {, h, I% H0 `; M4 D
  4.   // put your setup code here, to run once:) A4 v; E6 U7 N; e; [1 K
  5.     pinMode(1,OUTPUT);//A" v2 c/ m; X# k8 N0 Q6 Z2 M
  6.     pinMode(2,OUTPUT);//B
    ! T. `# T3 B% H) {/ g% l  Z
  7.     pinMode(3,OUTPUT);//C1 s! v3 t5 S& J+ {. Y0 J
  8.     pinMode(4,OUTPUT);//D
    2 z0 g5 v$ |+ c! V& r
  9.     pinMode(5,OUTPUT);//E' D$ x5 q3 _; \& l
  10.     pinMode(6,OUTPUT);//F1 `& Q- u, s6 l6 g
  11.     pinMode(7,OUTPUT);//G7 O% w. S7 w  R7 K
  12.     pinMode(8,OUTPUT);//DP
    3 [, X) e9 _2 h  @; U
  13.     $ o; \4 r, F# U  Z' N* a. B
  14.     pinMode(19,OUTPUT);//1
    , c6 z0 @. M* R( M8 C4 L" s0 C
  15.     pinMode(18,OUTPUT);//2' C) k  X0 u! w6 c# m! W6 N6 w
  16.     pinMode(17,OUTPUT);//3
    - s% E' p3 U# v+ V# Y) t9 W! U
  17.     pinMode(16,OUTPUT);//46 X9 n" p- V8 C% ]
  18.     ( h+ F0 h% h! }) X8 D' Y* d
  19.     # f7 L* w$ V# t+ n+ M3 o- Y) s
  20.     digitalWrite(19,LOW);0 Y4 Q* a* p  q+ @. \+ D
  21.     digitalWrite(18,LOW);( V& e! P7 |- ~5 w9 y7 F: K
  22.     digitalWrite(17,LOW);2 {! w# |$ |, \8 d4 k8 G$ x; @
  23.     digitalWrite(16,LOW);
    9 R! y; b6 q3 o* Q4 u7 y
  24. ( Y3 w3 o& b  N5 m) j- [+ B% l: L
  25. }
    5 G5 F. O0 ]# `

  26. / R  D, q. C5 Q7 e

  27. 4 p# P- s1 v, k, R# ~$ l! [
  28. //void SevSegInit(). _' F- X% H/ P+ j/ T  I
  29. void showNum(int num, bool point=false)+ H9 A8 @1 v: u+ ~
  30.     {   if(point)0 x* n3 ?9 _9 c+ R0 S9 u: ]3 L
  31.         {6 p4 @$ f/ q7 ~- y8 q/ s9 i# p
  32.             digitalWrite(8,HIGH);//DP,TRUE6 p6 y4 b  w. ]  n% A
  33.         }else{
    - P$ L: r1 Y2 X/ _: j
  34.             digitalWrite(8,LOW);//DP,FALSE
    7 P* h' n4 K1 }/ a( K& U' ]6 U; ^
  35.             }
    . @8 m2 l3 o. R" k$ `+ U4 h  I
  36.         switch(num)
    0 @3 a8 ?# }& _6 M' ~8 I' P
  37.         {0 L3 f5 t( F0 e2 t4 [% u/ j) f
  38.             case 0:
    % G9 U2 ?2 R; ^0 P7 s4 X! k7 n
  39.                 digitalWrite(1,HIGH);
    ( H  S. A# g0 o) n9 J; f) P
  40.                 digitalWrite(2,HIGH);
    9 j% @) e- L8 Q( H* b
  41.                 digitalWrite(3,HIGH);
    $ t1 C+ x7 \) _: q1 @
  42.                 digitalWrite(4,HIGH);
    9 i1 M* @- A2 p
  43.                 digitalWrite(5,HIGH);
    & Z; i3 Z5 w5 D8 L
  44.                 digitalWrite(6,HIGH);/ S5 W$ f" A+ R
  45.                 digitalWrite(7,LOW);4 ^1 O8 v6 X" A, Z2 U. Q8 M
  46.                 break;' z) C) N7 _# ?5 q% L7 d( F4 B
  47.                
    2 }  E, i6 z/ R( G  q( Y- [5 [2 C" S
  48.             case 1:/ G* b7 j: ^* t
  49.                 digitalWrite(1,LOW);
    ' w1 M7 _+ ?1 Z
  50.                 digitalWrite(2,HIGH);
    3 j8 B+ s" {; ^" c1 e) z: d
  51.                 digitalWrite(3,HIGH);
    . l/ s, W/ \  e" F1 I
  52.                 digitalWrite(4,LOW);  _& h  W  H; `. U3 L" @% Z3 d
  53.                 digitalWrite(5,LOW);
    ( l7 T/ I1 H  `8 J- \9 @: S
  54.                 digitalWrite(6,LOW);& {0 D' ?9 b% p, H
  55.                 digitalWrite(7,LOW);+ D6 G- t; d& m. p: d
  56.                 break;
    , d3 o6 o+ J! `/ Y$ \
  57.                 8 O( R; e( ~' d9 Z
  58.             case 2:
    9 q$ j: J) q  {) z) q
  59.                   //2) }" [% {6 C( K! a
  60.                 digitalWrite(1,HIGH);//A
    # c5 `" d# n9 `7 I1 C' d
  61.                 digitalWrite(2,HIGH);//B
    $ r/ d; e/ |) @% m2 K0 s! U
  62.                 digitalWrite(3,LOW);//C7 }, q5 c( }5 X0 P
  63.                 digitalWrite(4,HIGH);//D
    ) O  W- o1 V3 k) t) t; I6 m
  64.                 digitalWrite(5,HIGH);//E" ]! Y% I4 e! A! E
  65.                 digitalWrite(6,LOW);//F- _& F& V" E3 u* C9 _
  66.                 digitalWrite(7,HIGH);//G
    $ Q" r0 C6 B; p7 O$ c
  67.                 break;4 c8 \% Q& a. S! d1 c1 T0 X! y
  68.                
    : g1 H; G. S8 [0 ~# i2 U
  69.             case 3:
    . D/ U, ?" `* S' w3 s9 ~2 a6 l/ K; b
  70.                   //3
    ; k$ p4 Y( A! P5 |5 O
  71.                 digitalWrite(1,HIGH);//A
    6 S1 d- U; V- g6 Y" B
  72.                 digitalWrite(2,HIGH);//B' @! N4 _7 b4 N: W. W/ B& @- I' d3 ]0 e
  73.                 digitalWrite(3,HIGH);//C' n6 y; g: l, K# \4 a1 H
  74.                 digitalWrite(4,HIGH);//D
    % I! E. `7 }) ]' V0 T
  75.                 digitalWrite(5,LOW);//E6 B3 E. s, l: N0 Y- k* F* U( E, h" F
  76.                 digitalWrite(6,LOW);//F3 W4 L; d: N1 n) L) e
  77.                 digitalWrite(7,HIGH);//G4 J. f; A4 l& Q. I) O* Y5 Y0 {4 D7 x

  78. $ O3 }6 b" ]9 H) s8 \- }/ j
  79.         0 C- i5 N0 j+ }5 h2 P% R. E
  80.                 break;
    ' ]+ I: S; E' Z8 ?8 e+ t
  81.                
    2 k! z: C2 e5 K2 p
  82.             case 4:
    9 u8 ^; ~' l6 [
  83.                 digitalWrite(1,LOW);//A
    ; l, s* C3 I; Q
  84.                 digitalWrite(2,HIGH);//B" v( c) {; P3 v7 I$ i/ p/ w  u
  85.                 digitalWrite(3,HIGH);//C% X0 D/ M+ c/ ~' q
  86.                 digitalWrite(4,LOW);//D
    ) w0 v) T2 ^* r
  87.                 digitalWrite(5,LOW);//E
    % z, x' q( O: K9 W, X$ `* X
  88.                 digitalWrite(6,HIGH);//F
    % K; f. o6 G* N6 I
  89.                 digitalWrite(7,HIGH);//G
    7 `' B0 R3 \3 S
  90.                 break;( _0 A7 H8 G3 k' d5 O! i
  91.                
    6 s: G& U# G, o0 c4 m" K" H. C
  92.             case 5:
    - u9 X& r2 ~1 y& Q
  93.                 digitalWrite(1,HIGH);//A
    9 X8 f. t0 Z$ m, V6 k/ C$ k
  94.                 digitalWrite(2,LOW);//B
    & b* \9 r6 x1 U+ n) e
  95.                 digitalWrite(3,HIGH);//C6 h0 Z" ?/ G, F6 {+ g" {+ I
  96.                 digitalWrite(4,HIGH);//D
      j0 M- e/ r- B. A. k6 R) @; o
  97.                 digitalWrite(5,LOW);//E7 |* I2 f- b. M* _3 J
  98.                 digitalWrite(6,HIGH);//F
    " ^& N3 m" Q* ^3 s: c
  99.                 digitalWrite(7,HIGH);//G( J0 _- r* c4 r  p" L0 u
  100.                 break;- J5 f: q3 u" P: A: [" {) o# }
  101.             case 6:1 W; O" z! Q" ?5 t  `& ^) {6 V
  102.                 digitalWrite(1,HIGH);//A
    7 p9 S- J: \* y/ S! @
  103.                 digitalWrite(2,LOW);//B( d0 f6 L4 g4 P1 d6 ]
  104.                 digitalWrite(3,HIGH);//C1 `) A* ?2 J! f8 B4 J  T
  105.                 digitalWrite(4,HIGH);//D7 _- f: n7 o; p7 `) Z; K
  106.                 digitalWrite(5,HIGH);//E; ]: _* M6 m6 _8 \, ?
  107.                 digitalWrite(6,HIGH);//F
    / N' }7 z% @( I7 v6 d
  108.                 digitalWrite(7,HIGH);//G
    0 X9 ?4 A- I2 F5 j2 x
  109.                 break;
    ! d( w7 a( M( b6 {. y
  110.             case 7:
    & Y& O/ N- q9 ]+ f
  111.                 digitalWrite(1,HIGH);//A
    1 s3 D! c- v) s$ J5 D" ~
  112.                 digitalWrite(2,HIGH);//B
    6 g" S: C3 F2 G  a2 k
  113.                 digitalWrite(3,HIGH);//C1 T9 r' t0 k$ j% Q" q
  114.                 digitalWrite(4,LOW);//D- E  |, ^- L& Q( `( a  ?
  115.                 digitalWrite(5,LOW);//E
    : d. {' ^8 n$ M
  116.                 digitalWrite(6,LOW);//F$ b' N, D2 R- y
  117.                 digitalWrite(7,LOW);//G1 Y6 V$ {) Y8 y
  118.                 break;
    + ~7 \* N; p" R2 m& T( c2 ]* j
  119.             case 8:0 P5 m4 S" I3 O! }8 O
  120.                 digitalWrite(1,HIGH);//A+ M6 K" ?5 f# D( C/ g
  121.                 digitalWrite(2,HIGH);//B& Q$ w' T# T' \$ R( L8 ?
  122.                 digitalWrite(3,HIGH);//C: v) m( W2 u1 K+ i( H
  123.                 digitalWrite(4,HIGH);//D
    ; ~; C4 e8 `7 E
  124.                 digitalWrite(5,HIGH);//E
    + H% F  P6 ]- q; |# v+ K4 I; O; f
  125.                 digitalWrite(6,HIGH);//F
      }0 P, T; T, n1 t! t( k. N
  126.                 digitalWrite(7,HIGH);//G
      [) t) s! ~; _) Q$ S3 [
  127.                 break;
    : j2 S! ?! z1 p$ W* B1 z+ W
  128.             case 9:* d: L/ s7 z1 h2 A
  129.                 digitalWrite(1,HIGH);//A# j/ Q! c( d. l
  130.                 digitalWrite(2,HIGH);//B, D& B. `3 R  R
  131.                 digitalWrite(3,HIGH);//C
      B( d0 g" U4 [: t4 c
  132.                 digitalWrite(4,HIGH);//D( `  K0 h  A7 p( h
  133.                 digitalWrite(5,LOW);//E  g& S2 Z- p. C+ |% n3 @
  134.                 digitalWrite(6,HIGH);//F; _+ M3 Q0 i* ~8 ?0 @8 N% H0 t) h
  135.                 digitalWrite(7,HIGH);//G
    5 h( x3 E  x* n6 Y. p
  136.                 break;( h4 j% a7 l3 G. s4 E
  137.         }
    ; ^. E; o7 p- b* [
  138.     }( t5 t1 X/ t: G( |5 g

  139. # ~  R$ T8 ]8 V  t1 G
  140. void setNum(int num)4 d1 X9 J' K/ A9 {0 c5 l
  141.     {" l* C2 Y' _0 {  g4 g
  142.         
    9 a, B  ^5 u1 m! ~+ g3 e
  143.         int d0=num%10;2 q- Q6 h5 {2 p% D) D
  144.         int d1=(num%100)/10;9 I' f0 O3 @! k4 ]4 U7 `+ ]' l
  145.         int d2=(num/100)%10;
    5 }+ P9 c3 v+ Q2 g! }; b2 N
  146.         int d3=num/1000;* U$ b* k8 W, T# t8 S
  147.         2 @$ @5 {; ~4 S! B, \% Q* G
  148.         5 A& o; z) [& {! I8 o" h0 ^) S
  149.         int add=250;
    4 Y! r: E/ L$ R' y8 Z5 J4 y
  150.         
    8 n  H: p: |5 E& X
  151.         digitalWrite(19,LOW);
    9 l; {* V& D  X
  152.         for(int i=add;i--;i<0): [2 N3 y/ Y- o& ^& U2 ]
  153.         {
    " ?, C7 C% g. F' {6 U
  154.         showNum(d3);
    7 O! ~3 G- i7 i3 Y6 q
  155.         }
    8 ~, ~: ^7 ]7 k5 @- r
  156.         digitalWrite(19,HIGH);+ Y" g6 H9 X. i4 I8 y
  157.         
    $ l' v5 l0 u- P; @) i
  158.         digitalWrite(18,LOW);
    / K5 z8 g$ q/ E. U0 t" Y  g) P
  159.         for(int i=add;i--;i<0)  {' U* I: ~4 S
  160.         {1 l0 A+ T4 q# [; n. s( M9 m" R8 |
  161.         showNum(d2);3 f6 x4 a3 z  \# w6 M" L6 m
  162.         }
    3 l6 e- U& G- |0 o( ]  W5 M! q
  163.         digitalWrite(18,HIGH);
    $ r9 j3 ?9 ^$ j# X
  164.         
    0 b# q4 ?9 ?+ N7 ], c
  165.         digitalWrite(17,LOW);
    8 d" A: f  b0 U4 H9 e
  166.         for(int i=add;i--;i<0)
    % |5 y: e! f& @( l; s6 W  ]" q% A6 j
  167.         {2 X: P. A5 k& V" P$ d
  168.         showNum(d1);
    + P/ ]4 @! f1 z8 o3 N- G! e
  169.         }
    7 s# R1 F8 l' ~  j# d* \
  170.         digitalWrite(17,HIGH);: |6 n& c0 ^5 _: L4 c' Y: \* J
  171.         0 h* w  p( n; A( y2 b3 G+ K
  172.         digitalWrite(16,LOW);
    ' R; z. t4 b- a+ P
  173.         for(int i=add;i--;i<0)
    7 `1 B8 G5 }7 J* }5 ~- A* Q4 S4 o( |
  174.         {
    # C! ^, ~2 A, A" B7 t2 n0 L
  175.         showNum(d0);
    - H1 }( @( T* G4 c' M' |* ]0 M
  176.         }# x# R# b. Z$ a; t% {& Z
  177.         digitalWrite(16,HIGH);" Z) y+ K, m; e9 S9 a
  178.         
    8 V. A  o$ U( V# f% k9 D( F& T) `: }
  179.     }9 Y/ b7 r9 S5 ?( F
  180.     6 l- ]1 s0 }& f* p+ b' }
  181. void loop()
    % N0 S' V- n2 o9 N* j9 i
  182. {
    ! t' N6 q% l. T* l
  183.   // put your main code here, to run repeatedly:
    $ o/ X" e/ P6 Q5 O& Y" U4 v
  184.     setNum(second);9 K9 Q2 p. f* N$ U6 i0 h, g/ \
  185.     second=millis()/1000;  u1 G* M+ b/ X  g6 R2 w
  186.     8 n' K( I5 t9 s9 U
  187. }
复制代码
实验效果:
A01效果图.png
" Z  p& l  k  n% ]9 }

0 q! L3 a, w8 U

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
! a" B/ f. x) C  |$ M7 \: r% TIDE当前支持的功能有:

    ) T3 e  K# f0 e2 f: x% o3 R9 j
    % ]/ ^: w0 h9 m9 S* \2 @

    - n. N7 \- }4 c
    0 W5 l+ X  _& i8 O& w" U
    3 C+ {4 \) m6 E7 e+ e2 p5 w( M1 L; u) Y4 @0 n; E" X
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化9 C9 e) w' d8 R& C
  • SWD\串口程序下载&调试(已验证)
    ; h: B8 C! q4 O+ F6 G
  • DFU程序下载方式(待验证)
    , p4 c( X+ N" o7 E
      e0 p; T$ V  {
  • USB HID程序下载方式(待验证)
    3 r6 T' d# L4 z. N" L. v+ q
    ! I- E9 @* S) l, Y; \' Z- _% Z
  • maple DFU程序下载方式(待验证)
    1 q5 b. ?6 W$ R$ D8 H9 W
    $ l8 F' @7 |4 M3 _% e
  • maple DFU2程序下载方式(待验证)1 w7 K3 N* o5 J2 h: G0 g
    * g6 r* ^( i. F7 \2 F/ Z- h
  • MassStorage程序下载方式(待验证)
    ' J' C* ]: @9 N8 q" k  a$ j! a  h1 n% r7 e, u
    更多功能细节请前往www.stduino.com
    进行了解/ ~* `; r" D+ J: N$ q9 ?, X! `, X

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


    1 {4 @1 P# z( l8 h) ~( |
    • 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
      - C% @7 i; ]% A% D( ?$ e3 s* D8 z6 q* A8 L; G: k: B+ r" c

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


      1 X1 g2 g) U) _* ]. c; Z- c

    0 B; O4 Y# d  T; G
' t9 [* G' ~5 `9 L& F, ?" O" X( |
收藏 评论0 发布时间:2020-8-24 10:19

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版