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

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

[复制链接]
stduino 发布时间:2020-8-24 10:19
关键词:
51 ; STM32 ;Arduino ;Stduino单片机; Stduino UNO和Nano;四位数码管
9 O4 L! R; k1 j6 X7 ?
从大部分开始,我们将介绍更多的电子元件。其中大多数大家可能并不熟悉,但是如果你把前面的 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
- b! n& Y; I# S7 [2 o% p: y
实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。

. `$ L- p2 {/ W: h# l
器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻
' O! k! g+ h0 ^1 T0 G" Q$ ]
电路连接:
A01连线图带水印.png

+ _; @" X( {( w% s' w
代码展示:
  1. int second = 0;
    ' C: t4 l3 j4 E2 M4 w, |5 _
  2. void setup()
    8 Z# e" X0 X! u& \6 W$ b0 s
  3. {
    & R/ @1 t( e3 D
  4.   // put your setup code here, to run once:6 P4 m% x+ `3 S4 j: ]
  5.     pinMode(1,OUTPUT);//A
    ! i$ o9 n: G- o! r5 m
  6.     pinMode(2,OUTPUT);//B
    $ f7 G7 R/ N: W, p% I
  7.     pinMode(3,OUTPUT);//C
    + ^& v/ C4 g" w6 ]- l
  8.     pinMode(4,OUTPUT);//D
    . P4 m7 Y- r; j! n
  9.     pinMode(5,OUTPUT);//E5 Z' ?' L9 m( d  w9 [7 S
  10.     pinMode(6,OUTPUT);//F% I2 m! f8 Q( q: b7 w
  11.     pinMode(7,OUTPUT);//G' N$ C3 |/ N# _% v, P
  12.     pinMode(8,OUTPUT);//DP
    ; I0 C6 @; |: N1 {; y: Q: o. X
  13.     / b' z: U: r6 _1 Z
  14.     pinMode(19,OUTPUT);//1
    4 R: V" z) @  g% i+ w7 Q
  15.     pinMode(18,OUTPUT);//2
    - N/ v* b4 Q: A' ~5 T" p% P$ W
  16.     pinMode(17,OUTPUT);//3
    5 X, I' V; {7 z7 ~
  17.     pinMode(16,OUTPUT);//4
    0 A, J$ u( y5 ?
  18.     $ N( C+ A3 Q9 @8 D. t! R
  19.    
    # m4 E7 r% k3 H$ [+ N2 ^
  20.     digitalWrite(19,LOW);
    : C9 S' ~+ n' J2 L- F8 ~+ p
  21.     digitalWrite(18,LOW);2 ?* G6 T' ]! g% D; y1 {
  22.     digitalWrite(17,LOW);+ O' I6 ~5 g8 S3 Q8 d* l5 @
  23.     digitalWrite(16,LOW);
    ' o. ?$ E) l9 i/ D

  24. & ]; U+ Q+ r, U6 x# b. Y0 L
  25. }0 c/ W; p" `" |5 q; Y5 B

  26. 6 l9 ~; o3 L6 ]7 @- z+ o1 O* U4 o

  27. 3 z8 q! O7 Q1 I3 m0 \' _
  28. //void SevSegInit()
    ! m  w+ g1 P) M% x2 R. \% r
  29. void showNum(int num, bool point=false)- S: P  \" {/ e
  30.     {   if(point)0 _2 O" V, }! {# M8 `" K3 P% E
  31.         {
    8 u5 l. c! A1 t  e5 L) E0 H
  32.             digitalWrite(8,HIGH);//DP,TRUE. T! Q& P3 x: a. V7 c
  33.         }else{
    4 }' ?5 y3 H, I( N
  34.             digitalWrite(8,LOW);//DP,FALSE
    4 k% p' o9 o5 b: z5 Z* r+ L
  35.             }" d" K% y8 {; B: i* l. L
  36.         switch(num)
    * d; M$ j# O# J( B9 u
  37.         {
    ' ?: ~% L+ _' C5 x2 n) T2 q
  38.             case 0:
    - }! E) i8 l' t/ T2 \
  39.                 digitalWrite(1,HIGH);
    * w4 s( Y  c+ C$ G5 c, }
  40.                 digitalWrite(2,HIGH);
    6 y6 z! C! r$ x! L3 k, q
  41.                 digitalWrite(3,HIGH);8 o! l) \1 v/ N
  42.                 digitalWrite(4,HIGH);2 r8 d- ]/ K7 ?& M* K# ^- j
  43.                 digitalWrite(5,HIGH);5 j/ w! L* \! w7 ?7 u
  44.                 digitalWrite(6,HIGH);4 A$ B. y, m( v4 s9 ?
  45.                 digitalWrite(7,LOW);. ^5 E' u( N4 @' t! S7 Y
  46.                 break;7 D3 x* ^" ^1 `+ z
  47.                 " B4 l5 }% R# F+ J. V& ^, f0 h
  48.             case 1:! s& o4 d8 b5 q5 i/ t
  49.                 digitalWrite(1,LOW);1 f4 D9 v: s8 N9 h/ o
  50.                 digitalWrite(2,HIGH);1 T$ m9 U3 a5 S$ ~; r: z
  51.                 digitalWrite(3,HIGH);9 d0 f9 x+ Y+ W) u6 d! s" {& H
  52.                 digitalWrite(4,LOW);+ x8 Y1 `) v4 s0 Y9 i
  53.                 digitalWrite(5,LOW);: O2 m  @- h# I; y2 a  B+ o+ A0 R
  54.                 digitalWrite(6,LOW);
    ! u; S) Q5 C" u- R- F+ A. i
  55.                 digitalWrite(7,LOW);
    . S' O; R- w; r2 @- ~
  56.                 break;
    8 Y/ s! ^6 U% K1 _
  57.                 5 g2 z8 m) ?  Q- K8 G9 p
  58.             case 2:
    - d5 ^/ a2 Y1 V& G! A
  59.                   //2
    2 q, J  q) W5 [5 W$ v
  60.                 digitalWrite(1,HIGH);//A
    9 Q. y, C& P, q9 x6 `; k
  61.                 digitalWrite(2,HIGH);//B
      b  o3 [. i$ K
  62.                 digitalWrite(3,LOW);//C
    9 y& ?! O; H' ?" w1 V
  63.                 digitalWrite(4,HIGH);//D
    & U) {% a" t: p/ J( g: C
  64.                 digitalWrite(5,HIGH);//E
    9 a: f4 d6 Y6 ~5 X8 E. _* Z  ]5 z
  65.                 digitalWrite(6,LOW);//F( f6 o6 J' \7 W2 ?2 \. t
  66.                 digitalWrite(7,HIGH);//G3 T; E5 r5 O, @9 I! N6 j& i- S
  67.                 break;7 g5 Z: H" _& m4 M, Z8 x/ h
  68.                
    ' ]/ p6 J% ~% ?
  69.             case 3:" B5 X2 q6 ]0 E& O1 \
  70.                   //3
    1 K6 r  i$ Z& w$ l- K
  71.                 digitalWrite(1,HIGH);//A$ I7 W, v- |( E/ P) K
  72.                 digitalWrite(2,HIGH);//B# n2 @- m/ i% |( `
  73.                 digitalWrite(3,HIGH);//C
    - i  B1 p9 |( k( {2 g" `# j% m
  74.                 digitalWrite(4,HIGH);//D
    . c: o# g. }, L! M7 c! ]
  75.                 digitalWrite(5,LOW);//E
    4 _# h+ x( ]+ W9 x4 r
  76.                 digitalWrite(6,LOW);//F; ]' U. @4 i9 J- l1 N4 ]: U
  77.                 digitalWrite(7,HIGH);//G
    % X7 u7 I4 ?; c

  78. 6 a7 ~1 b, y4 r9 E# x
  79.         
    2 i3 e, h6 K( k1 {
  80.                 break;
    ; _1 d: u5 e4 Q$ P1 k
  81.                 ) f9 |) i3 ?6 \! C, U. n
  82.             case 4:4 D" Y. ~* a2 Q1 w. ?% N. t. }: J
  83.                 digitalWrite(1,LOW);//A- r: J7 Z6 \5 v4 \8 F6 f
  84.                 digitalWrite(2,HIGH);//B. c8 V: ~1 [" r( t# b7 B2 x
  85.                 digitalWrite(3,HIGH);//C) Y5 D- X1 t7 H! K
  86.                 digitalWrite(4,LOW);//D
    ; q7 k, |0 ~& G: O+ S4 [* B$ s7 \) v4 _
  87.                 digitalWrite(5,LOW);//E6 `, a+ p- B5 ?- f* N7 G
  88.                 digitalWrite(6,HIGH);//F0 R! b, n$ S+ i" ]% ~7 l1 b
  89.                 digitalWrite(7,HIGH);//G
    ; [* Z% D: L" x; ~
  90.                 break;" z; C6 C* @& e) E4 a
  91.                
    6 C  M/ q1 ?  ?2 a
  92.             case 5:
    ; k  T6 ~4 c; i6 S' i
  93.                 digitalWrite(1,HIGH);//A# B4 F* l0 y; k4 j- ]; P1 L7 q
  94.                 digitalWrite(2,LOW);//B2 {7 X9 k. V  X+ {% W
  95.                 digitalWrite(3,HIGH);//C3 S  U  }/ k5 i1 z/ J1 d" q  s
  96.                 digitalWrite(4,HIGH);//D/ }9 f8 q+ @% {( Q0 [( v1 s7 F
  97.                 digitalWrite(5,LOW);//E
    ( t( Z# k. @, y
  98.                 digitalWrite(6,HIGH);//F  r9 L$ T8 |+ E* ?6 Z  a; B& E. |, m
  99.                 digitalWrite(7,HIGH);//G
    1 m) m9 I- g. c
  100.                 break;4 i' p9 C: i" U
  101.             case 6:
    1 x  k. g" h" {% ?: T2 U
  102.                 digitalWrite(1,HIGH);//A0 z0 J) _* i3 b. Q3 k" K
  103.                 digitalWrite(2,LOW);//B
    # n1 \' W+ E: @4 {
  104.                 digitalWrite(3,HIGH);//C) k. ^$ k+ [) u( f5 f' y+ y7 b- t
  105.                 digitalWrite(4,HIGH);//D0 \) u/ C0 `5 `/ l% }* X) c
  106.                 digitalWrite(5,HIGH);//E
    6 I4 @9 E: _/ o" Z1 r
  107.                 digitalWrite(6,HIGH);//F
    9 `$ O- Q( X; G$ S) R
  108.                 digitalWrite(7,HIGH);//G/ P0 t8 ]# z  ^! n
  109.                 break;7 x, u2 x+ Y. Y- ~/ S+ ^
  110.             case 7:$ ]+ Y; T: t2 e$ \. Z2 [
  111.                 digitalWrite(1,HIGH);//A% F1 e8 u- a3 d2 l$ J7 O9 ?
  112.                 digitalWrite(2,HIGH);//B9 h' A9 s2 B& p# j8 ~, y
  113.                 digitalWrite(3,HIGH);//C
    . u* K; _4 q/ E
  114.                 digitalWrite(4,LOW);//D
    ' V! L0 z; a3 I: d- y6 M: \
  115.                 digitalWrite(5,LOW);//E
    ) o- `6 q/ c* a2 _8 D/ D2 F
  116.                 digitalWrite(6,LOW);//F
    # O( C7 i( S  y  E" I2 z$ L
  117.                 digitalWrite(7,LOW);//G
    7 q5 F8 O; S9 ]3 u! C
  118.                 break;1 H) Z& t4 d) _9 P- Q- }
  119.             case 8:! n% M7 t! p+ l5 |/ ~! Q
  120.                 digitalWrite(1,HIGH);//A! z) i# x3 h+ C+ y, q
  121.                 digitalWrite(2,HIGH);//B5 s, y, g% S+ E# o7 |: b0 W+ l
  122.                 digitalWrite(3,HIGH);//C
    9 d- D; Y+ f! s- `8 c
  123.                 digitalWrite(4,HIGH);//D
    7 s8 @; G7 E6 s* S
  124.                 digitalWrite(5,HIGH);//E
    4 w+ S, a. F* x' G8 z
  125.                 digitalWrite(6,HIGH);//F
    + O& Z$ Q0 V; l+ ]) t: W* D
  126.                 digitalWrite(7,HIGH);//G9 w# k- ]+ G( R( p' Y/ u
  127.                 break;
    # s$ V5 l( `7 a0 A: y; c
  128.             case 9:: {- n& m) C% O  a' @1 c
  129.                 digitalWrite(1,HIGH);//A
    ) b# }8 O2 I9 W  u7 w. M+ J
  130.                 digitalWrite(2,HIGH);//B
    ! S, S8 A1 z* B: r. c* k. U
  131.                 digitalWrite(3,HIGH);//C
      X, a. |% V& B& }. C
  132.                 digitalWrite(4,HIGH);//D
    & A1 a6 z  k* @6 K" t
  133.                 digitalWrite(5,LOW);//E
    * g/ k- [3 L' @! R/ m
  134.                 digitalWrite(6,HIGH);//F
    / X0 O' L) j( I4 m
  135.                 digitalWrite(7,HIGH);//G
    ) u6 {6 O8 a! E/ J
  136.                 break;5 a2 @6 M9 _, s: R& @0 e  ^$ D0 p
  137.         }
      I8 t4 }# a0 |# E
  138.     }3 k7 v1 z: m7 T* w4 x5 x8 d

  139. 4 Y1 I4 D2 R  U+ u6 z" A
  140. void setNum(int num)
    1 U" x; D9 F& b
  141.     {
    ) y: g% u& Y; B; y- K3 v9 s
  142.         ' G: w8 n% \& {8 w+ L  c* g
  143.         int d0=num%10;
    7 w$ j& m. C* I0 h
  144.         int d1=(num%100)/10;
    + L3 D- r- r$ U6 j
  145.         int d2=(num/100)%10;
    : z" m3 R, J  \. x! ]3 q
  146.         int d3=num/1000;
    9 Q' Q8 X- R& l% ]6 L* ?0 y
  147.         ' A6 N5 g* K/ g3 u* r1 S
  148.         " k4 J; {" |4 h8 W
  149.         int add=250;, \& t1 i, t5 ?! C! b' n
  150.         - g# s- Y8 C- h% N1 M
  151.         digitalWrite(19,LOW);- e( k+ ^; c' e* ^
  152.         for(int i=add;i--;i<0)" k+ w6 U, Y% v1 V" ~3 U
  153.         {
    5 J% r( y4 ?0 N1 R
  154.         showNum(d3);7 }$ D0 B& f- j2 R
  155.         }
    ( J3 v0 p, Y0 \0 d
  156.         digitalWrite(19,HIGH);( N+ v9 B+ P* }9 ]  U  B& K% _
  157.         
    9 `0 z/ x) Z8 ?
  158.         digitalWrite(18,LOW);
    " ^( k* W  b( v1 h  l6 J2 _
  159.         for(int i=add;i--;i<0)! C+ I# r/ U% K) e
  160.         {& [% X& U% V9 U$ d# ?( ?) x- v% f
  161.         showNum(d2);1 b! ]7 w3 H( m* g' H
  162.         }
    * ]' c* H1 [1 K* W, x
  163.         digitalWrite(18,HIGH);; P; q4 _2 H  Q  z5 R8 O- ~- t% J# y
  164.         
    ( Q$ t3 y4 Y  d1 M
  165.         digitalWrite(17,LOW);
    , ^' s2 K% {$ Z; c
  166.         for(int i=add;i--;i<0)
    6 D) x1 Q3 T. s$ f3 e
  167.         {
    8 C% E# e% P# r" G  u: V
  168.         showNum(d1);& S$ U) x9 m& h/ m$ M
  169.         }. A/ l+ u! ~  R9 W- q' z
  170.         digitalWrite(17,HIGH);! @; {2 m  v1 H
  171.         : f9 c9 v0 s7 h( u
  172.         digitalWrite(16,LOW);4 [: w; P- o% R4 z- S6 P
  173.         for(int i=add;i--;i<0)7 }6 V$ K0 s, j, x
  174.         {0 x. U, H5 d8 _8 C5 n
  175.         showNum(d0);
    2 P( P7 U- P! m. t5 J
  176.         }
    8 q% w2 _% J4 [6 E
  177.         digitalWrite(16,HIGH);
    " }, }) E% u; d3 a  b
  178.         
    + U3 z0 d3 F" n4 @! `/ i# m( _' E
  179.     }
      F; b9 ?# Z6 S  n/ K1 k* y
  180.    
    ' \* T. s+ p2 Y1 \6 I7 P1 W9 o
  181. void loop()2 _) V1 \' _% `
  182. {
    7 y5 E) c8 P8 t8 f
  183.   // put your main code here, to run repeatedly:  E5 l6 `! O7 [
  184.     setNum(second);- i; E9 i* n( @+ n+ a/ Q5 r+ B& c/ b' }
  185.     second=millis()/1000;2 y* j! @  m) u. N9 m+ {+ ]
  186.    
    / P9 t% J# \( `5 e; G4 ^" ?* V
  187. }
复制代码
实验效果:
A01效果图.png
. G' @' k! V8 C5 L

6 D- S+ W1 @+ s! E

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。6 B% V. e( k$ \1 ~* Z# b
IDE当前支持的功能有:

    : V3 n4 S7 ^  f( z8 Q0 z

    ( o5 E/ }4 @% l+ v2 b. l+ p7 E( I( O( W" {# f/ ]
    6 H, m# ]/ y: l2 Y, O5 |9 X

    4 f$ r+ T- l  S3 i: e
    ' O" K; y! i. V! p
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化% I" t- v4 K  ]  V
  • SWD\串口程序下载&调试(已验证): O3 v6 R: p4 `2 H' R' y' O% t, R
  • DFU程序下载方式(待验证)0 i: l, T$ b& f5 x* P" t/ m& Z  d7 s
    8 m0 y; }8 P/ j; n
  • USB HID程序下载方式(待验证)
    - {5 }4 B3 C, p' }0 o5 V( H
    - ]3 [, e6 S/ ~& z2 Z& S: L' v
  • maple DFU程序下载方式(待验证)
    6 z9 @( u6 S: Q! {  i

    * c5 l: i0 ]" F: ?) L2 h, @7 L! [- r+ J
  • maple DFU2程序下载方式(待验证)- G, k. v, e7 Z. d
    ' k$ Y! R( O4 W; ^% i* C
  • MassStorage程序下载方式(待验证)
    5 W3 y5 a0 V/ `* c1 W& E4 v% \; n7 l; M' Q; N
    更多功能细节请前往www.stduino.com
    进行了解
    $ O8 N( k- C: w1 j  T3 v5 g. f: f

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

    / H& ?5 t5 x7 I6 |
    • 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
        ]) Q. f/ ]' z5 w$ F
      ! t6 G2 q& U! [+ q" ]; i% A6 D

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

      1 Z, g: g6 \) c' j1 R& X0 {
    - ]. H6 A) B2 ~# I/ X

+ c& R0 i/ [$ F( ^
赞 收藏 评论0 发布时间:2020-8-24 10:19

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版