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

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

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

4 I/ q" H/ z; k& D, L  f0 Q; Z
从大部分开始,我们将介绍更多的电子元件。其中大多数大家可能并不熟悉,但是如果你把前面的 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

4 @* n4 |$ I! ]$ ]
实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。

, g! f+ G" ?, b/ Q! M9 \& @) X
器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻
9 \9 x3 T/ O- U
电路连接:
A01连线图带水印.png

4 O4 _$ h" v6 o% v" h$ Q  w) _
代码展示:
  1. int second = 0;. x) j6 p+ H7 ?: V9 O( A; B
  2. void setup()
    / j% S6 _+ V  j3 m; M3 k
  3. {( I; J# p0 s" C4 `0 Y
  4.   // put your setup code here, to run once:
    % P* v: ~5 ?" {- g. b# Z2 g, q
  5.     pinMode(1,OUTPUT);//A
    $ I9 ]2 H& I% g" p& a2 S% V2 o
  6.     pinMode(2,OUTPUT);//B
    3 I  W2 O/ B1 @. f" n2 ^5 O3 m# _6 K6 V! B
  7.     pinMode(3,OUTPUT);//C) y8 @) K+ T  u& r8 I0 a+ Z* E
  8.     pinMode(4,OUTPUT);//D8 I* Q3 y" h& u3 Y/ n
  9.     pinMode(5,OUTPUT);//E
    1 |5 f6 c/ C( m6 ?& X0 z& Q
  10.     pinMode(6,OUTPUT);//F8 `3 v/ G! Z1 E' w* A7 C; Y
  11.     pinMode(7,OUTPUT);//G4 ~0 I3 ], o$ K2 ^: V8 g( g
  12.     pinMode(8,OUTPUT);//DP8 e7 U4 U  x- M
  13.    
    ) L/ \9 W! e  p8 @4 @; ^; V& C
  14.     pinMode(19,OUTPUT);//10 G8 L* \+ ?6 o) |7 F* J" c9 R9 L: R
  15.     pinMode(18,OUTPUT);//2
    , Y! e5 x& Y" C0 m' ~3 G- E
  16.     pinMode(17,OUTPUT);//3
    : k) |2 D( q+ D7 z" Q- i
  17.     pinMode(16,OUTPUT);//4
    % F6 r$ I# F' K& J$ o* y  l$ ~
  18.     + D! h" c4 G7 V4 p5 ?. D
  19.    
    1 v! C/ C' y9 ~4 N
  20.     digitalWrite(19,LOW);3 k1 K: H" X# c5 _/ X9 V4 k3 p
  21.     digitalWrite(18,LOW);
    2 ?3 h; i, p5 [+ s& i& B
  22.     digitalWrite(17,LOW);
    ) _/ f5 w+ L6 `. F% x
  23.     digitalWrite(16,LOW);
    " B( J' U& F/ X, i1 p% `# |# j
  24. , a! U; y# c) v  N7 h$ P, S1 s
  25. }# h2 B% j- O$ c

  26. " ~4 M& R1 B/ a: J7 Q9 \: _, C4 a
  27.   _: J$ C3 z# ?: m+ e
  28. //void SevSegInit()
    1 ~) @( f4 W# }" g( U
  29. void showNum(int num, bool point=false). F9 _# Z" v; C
  30.     {   if(point)) @4 Q# I0 p1 k6 y& g: P
  31.         {
    % q4 W6 l! ~& r" K3 k: {
  32.             digitalWrite(8,HIGH);//DP,TRUE: |) s" ]# E8 t7 W% L6 @
  33.         }else{
    & ]2 T) M2 E+ H* V9 M
  34.             digitalWrite(8,LOW);//DP,FALSE
    : G- b$ D% O* h
  35.             }; @6 x' g7 W& S' X0 C
  36.         switch(num)) D7 [6 m7 z- g# q: m- G
  37.         {  G2 ]+ g5 W! [
  38.             case 0:
    * F( q2 M5 `$ T. [' P5 v5 m4 F
  39.                 digitalWrite(1,HIGH);
    / I# f  H% ~8 U! R( |$ r
  40.                 digitalWrite(2,HIGH);; ?3 o1 M3 s2 t3 ^6 r
  41.                 digitalWrite(3,HIGH);) b/ s! P7 c, a8 c4 i3 g3 t( H2 ]
  42.                 digitalWrite(4,HIGH);
    $ D+ G. h+ f, D1 P& x7 v  x9 K2 i
  43.                 digitalWrite(5,HIGH);
    - j9 b1 r. t+ m
  44.                 digitalWrite(6,HIGH);
    ' @. {4 F2 K3 Z& x
  45.                 digitalWrite(7,LOW);% A7 i; j4 `& q! k/ f* W
  46.                 break;5 o: ^) ^2 }; y6 |) A1 d9 u* ^
  47.                 8 R$ E$ g3 t! q
  48.             case 1:& V2 n' ~- Q9 c3 R: ^( t8 {
  49.                 digitalWrite(1,LOW);6 \" v$ U) _. O2 R" @) }
  50.                 digitalWrite(2,HIGH);, O' }: L+ e6 U9 o7 e% j6 S
  51.                 digitalWrite(3,HIGH);
    3 X8 B/ w" {* P8 I
  52.                 digitalWrite(4,LOW);  ^; n: b& ~: c) f( E
  53.                 digitalWrite(5,LOW);
    : H# Z+ e, X. c
  54.                 digitalWrite(6,LOW);
    6 d! Y; n$ [  S4 \! Y
  55.                 digitalWrite(7,LOW);
    / g6 e5 ^. y$ n" g$ j: r, Z
  56.                 break;
    - t! G; i1 J3 R; V! e
  57.                 9 L8 a: P: {% @" \, Q
  58.             case 2:( Z* F% n+ p1 Z  k6 j% w$ ^
  59.                   //2
    ; p. k. c( ?3 L
  60.                 digitalWrite(1,HIGH);//A
    # v5 v9 e  }1 d% e& L
  61.                 digitalWrite(2,HIGH);//B
    3 S# }: b4 L' ~! B7 r# r5 g( d
  62.                 digitalWrite(3,LOW);//C
    9 B3 {# _' g+ K( k1 V
  63.                 digitalWrite(4,HIGH);//D) T9 c. E* N  G
  64.                 digitalWrite(5,HIGH);//E
    ! ^5 A/ k3 T: O9 F2 [
  65.                 digitalWrite(6,LOW);//F
    % b, x+ h" J/ T/ l- s
  66.                 digitalWrite(7,HIGH);//G% E# @2 C' G% p6 y* l/ V3 q1 v# ?' F
  67.                 break;: c% l5 M0 {% h3 s6 t/ s" ~7 ]
  68.                 # S5 {' Y0 X+ W6 @
  69.             case 3:! _6 ^6 C* F( _+ I' F* Z
  70.                   //3
    9 ]( {: }! a$ k" E4 Y  x' u
  71.                 digitalWrite(1,HIGH);//A5 G8 d, X9 T8 h" r% w
  72.                 digitalWrite(2,HIGH);//B# a$ k) g% D2 a0 l) ^/ V6 A5 U
  73.                 digitalWrite(3,HIGH);//C
    . S" L$ I. K; y* S: N
  74.                 digitalWrite(4,HIGH);//D
    ! Q$ i4 [! c9 Z4 A
  75.                 digitalWrite(5,LOW);//E
    ; U; {; @0 W: H0 o. Q7 u* N4 M
  76.                 digitalWrite(6,LOW);//F0 ~6 `( n1 C0 ]  X
  77.                 digitalWrite(7,HIGH);//G
    ) v- y% ]/ Q6 r0 z$ c$ K+ i
  78. ( E9 R& [$ Z4 \, l) I4 O
  79.         
    4 y3 h/ [- e+ v2 t+ H8 U
  80.                 break;
    8 }* {6 g% T  l( a. m, O
  81.                 + }" c$ N, M1 O! Y6 b6 F7 A
  82.             case 4:$ P" O: [5 G# M, s
  83.                 digitalWrite(1,LOW);//A
    . I" N) x8 x. C* {
  84.                 digitalWrite(2,HIGH);//B/ r9 w  {/ W- q% g# Z/ g2 ]5 E
  85.                 digitalWrite(3,HIGH);//C4 n0 T7 K/ p: V1 m7 W
  86.                 digitalWrite(4,LOW);//D$ W- O6 Q7 r; F& i$ H
  87.                 digitalWrite(5,LOW);//E
    . Q7 C& [* ~0 Y, L8 J$ R
  88.                 digitalWrite(6,HIGH);//F/ e$ A7 N3 Y- z, D; _
  89.                 digitalWrite(7,HIGH);//G
    ' w2 E: Y) |- S, f
  90.                 break;& C* `% p  \& S+ ]/ t; n
  91.                 ! x+ p6 {, }3 R0 w; D
  92.             case 5:3 N+ c* C! \. k. u
  93.                 digitalWrite(1,HIGH);//A
    + _/ d. R3 h9 Z+ z4 D
  94.                 digitalWrite(2,LOW);//B$ U( c7 G  A% L% v
  95.                 digitalWrite(3,HIGH);//C) F+ n2 p- H* w% a, X
  96.                 digitalWrite(4,HIGH);//D
    : @, M' y6 |' A, V
  97.                 digitalWrite(5,LOW);//E
    6 `* X& P$ A: W, G$ n
  98.                 digitalWrite(6,HIGH);//F5 P! ~# `6 \1 U/ l' A  K5 L/ Y
  99.                 digitalWrite(7,HIGH);//G: X" h: J+ |2 i8 H6 I7 j2 G
  100.                 break;6 ?# y* I/ ^5 n# G, t4 `
  101.             case 6:3 w6 n! b1 ~' ?
  102.                 digitalWrite(1,HIGH);//A3 W8 R) g; ]* V3 m
  103.                 digitalWrite(2,LOW);//B9 \& E$ q2 J" N" _
  104.                 digitalWrite(3,HIGH);//C; S' M1 c2 p+ z
  105.                 digitalWrite(4,HIGH);//D
    + k, Q2 G. Q. |5 z: y5 V! ]$ X. ?
  106.                 digitalWrite(5,HIGH);//E2 D( }3 A8 |% {" F  f  T5 w
  107.                 digitalWrite(6,HIGH);//F
    2 ]" _  q( q1 b; c& r
  108.                 digitalWrite(7,HIGH);//G1 X) p9 \$ |, f, y
  109.                 break;
    5 v& }$ H, q# D8 Q' F7 Y& w( v7 p
  110.             case 7:% p+ G6 g: ^% q' x$ k: @  O2 o  p
  111.                 digitalWrite(1,HIGH);//A; W$ o4 @1 f, t( ?7 [
  112.                 digitalWrite(2,HIGH);//B1 g, u" E* y' [; F( i- c; h9 E
  113.                 digitalWrite(3,HIGH);//C) ~& ~8 v5 A4 }! X1 {2 }; x
  114.                 digitalWrite(4,LOW);//D
    0 D6 x& s8 k* P, N: y
  115.                 digitalWrite(5,LOW);//E: ~+ f4 B0 e. H( T7 t# K$ f
  116.                 digitalWrite(6,LOW);//F
    - i: q/ b  b5 r% h3 C; q* H
  117.                 digitalWrite(7,LOW);//G
    * t8 L6 G$ B" C+ p# q7 J
  118.                 break;- Z7 h$ a6 t0 J/ t. K
  119.             case 8:
    , |# @) r5 O8 W; x. e! l2 C
  120.                 digitalWrite(1,HIGH);//A
    . G% f% T: K' ~$ d9 H
  121.                 digitalWrite(2,HIGH);//B, S  H$ t& J' `/ X! |, ]4 V
  122.                 digitalWrite(3,HIGH);//C
    : M* L. S  x5 W2 h0 A& f: u, g- S
  123.                 digitalWrite(4,HIGH);//D
    ) \# Q4 r4 J" e; c+ r; W3 T
  124.                 digitalWrite(5,HIGH);//E
    5 {# s# f+ l2 o) V1 ^1 G% Y. H  s
  125.                 digitalWrite(6,HIGH);//F
    ' s8 |/ k( }/ I2 S6 S9 X
  126.                 digitalWrite(7,HIGH);//G
    8 x5 S( F9 [* n, {4 g  v
  127.                 break;
    4 H8 q$ b+ i. [
  128.             case 9:
    1 q8 k9 U; @# ^& W; `& P
  129.                 digitalWrite(1,HIGH);//A
    7 ^2 R+ c" [" T8 o
  130.                 digitalWrite(2,HIGH);//B( o, y0 ]; _4 H  A
  131.                 digitalWrite(3,HIGH);//C% O+ h; L# q' s: X( a6 |
  132.                 digitalWrite(4,HIGH);//D4 K: B3 [! Q+ Y1 D& R
  133.                 digitalWrite(5,LOW);//E- K2 T- j" @, ?
  134.                 digitalWrite(6,HIGH);//F
    4 h- [) T* `/ y$ a9 i0 d
  135.                 digitalWrite(7,HIGH);//G0 j+ D( Q" C9 b8 x% u' J
  136.                 break;
    - v# s- _' e" _! g1 L8 f- `
  137.         }' P; y. M7 [6 l
  138.     }2 U% C: Y  b! ]4 k

  139. , B7 X5 {( i9 c) E1 k/ |
  140. void setNum(int num)$ _: {- Z% ], m; `4 S3 y
  141.     {  |2 Q  h2 A7 S6 Y) A
  142.         ( m3 ]0 K) A0 N  V$ o
  143.         int d0=num%10;
    4 \; s3 j3 u! S- g6 q! n4 e' q7 c
  144.         int d1=(num%100)/10;  a8 s8 ^5 H/ i, u4 u1 I. S/ Z
  145.         int d2=(num/100)%10;2 n' E/ I% a  Z( ?, ^
  146.         int d3=num/1000;
    # P2 [/ x+ z! C4 c, H, z
  147.         
    4 y8 j  b0 K" \0 o6 p
  148.         8 z; V+ H7 F3 l
  149.         int add=250;
    " M7 C( X, {# r! ^- k' v! u
  150.         
    0 b; K' |  g$ f5 m; _2 |- w. w! S' a
  151.         digitalWrite(19,LOW);9 y/ v. t1 L8 c& M. J# U" S
  152.         for(int i=add;i--;i<0)1 [6 [: U0 Q' d5 z, W+ x% G
  153.         {6 h5 h: s# V1 A) [$ j
  154.         showNum(d3);
    7 Y! s+ ?- s1 f4 P1 q! s& B; ~3 F2 K- Y
  155.         }" G! q, _6 w/ O& b% R7 ^# [; U4 @3 n
  156.         digitalWrite(19,HIGH);4 b& ]2 y5 J9 D; A9 S
  157.         ! X/ e, T0 @/ {( l" ]% N
  158.         digitalWrite(18,LOW);
    ) t) Y9 b2 ~+ K- x' U* U, T! D- N
  159.         for(int i=add;i--;i<0)
    " E4 `! T* }7 |- e5 x" K" x
  160.         {, Q- F: S( G) s9 j7 P2 I
  161.         showNum(d2);
    : U8 r  l( K7 e" {& Q2 S; I
  162.         }
    : Z/ z# B- C) q3 l" p
  163.         digitalWrite(18,HIGH);
    6 P6 y6 d, o# N2 [2 u8 G& s" w
  164.         % A8 w0 s4 B4 C  K! P. Y
  165.         digitalWrite(17,LOW);
    6 y: d- ]1 v! m2 s8 R
  166.         for(int i=add;i--;i<0)
    & ]. \9 l% q5 S& z
  167.         {: M2 B4 R7 b* _! n+ h$ h
  168.         showNum(d1);" n: M; k, p) ^$ ^2 i
  169.         }
      }; V6 E5 w1 b$ z" W1 x
  170.         digitalWrite(17,HIGH);
    ) \  ^1 e9 Y* ~: v. M- x
  171.         3 j. t) a1 {. s6 u7 J; Y
  172.         digitalWrite(16,LOW);9 T2 A3 C  M/ \1 C/ O: T& a
  173.         for(int i=add;i--;i<0)
    3 Q+ M. F0 l- x- @" p
  174.         {
    % T* ^4 P+ }% e  {
  175.         showNum(d0);8 a: E! u+ ]( t* G
  176.         }% m9 R' q7 ?8 V7 e! @/ {
  177.         digitalWrite(16,HIGH);
    ! q2 {3 F  d" l* b; U: d7 x
  178.         
    ! f* `$ F# m, Y5 a8 b( v1 y
  179.     }
    6 c9 q- p. [, X
  180.     ) X  X* E7 E+ i+ [9 ~
  181. void loop()0 d0 ], w+ [. R+ ?' x  Q
  182. {. s1 _" P% L( I# M/ {6 z
  183.   // put your main code here, to run repeatedly:% }: y+ k, t& W0 D% o, O
  184.     setNum(second);
    ( X* \  h( a8 L. t1 T
  185.     second=millis()/1000;
    " G2 A1 p. {1 x7 C" K
  186.     4 I& j4 n6 x* T+ L; J$ N6 P
  187. }
复制代码
实验效果:
A01效果图.png

9 b* q- N: l0 E# Z& N; Q# q
  P) a& p0 B5 V9 |( V

Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
  Q) [7 s. O- x2 c* N1 fIDE当前支持的功能有:


    & U) x/ Q) |2 r' v6 W/ c) n8 k# M3 G* [; B# o1 U) \' |
    : I1 J5 W5 m8 `1 x5 ?$ \  W: z
    ; \3 m2 r: u7 n, l( R; T' z- L1 N
    & N' T5 J" L  y9 Z

    4 d( X. r$ ~1 ], K
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
    9 o* P" B" n; B
  • SWD\串口程序下载&调试(已验证)
    " p4 s4 j7 A' b# M) S6 E, \
  • DFU程序下载方式(待验证)' ~! Y& `+ y; W: l0 c0 v" s
    7 B4 g& x( J3 j
  • USB HID程序下载方式(待验证)7 M7 l% }8 S5 O$ |" X) V
    & ^8 ]9 P2 `1 M/ Z1 w% G$ V7 G
  • maple DFU程序下载方式(待验证)
    6 ^& ?4 H  K* i7 u+ k

    " i8 d& f7 h3 {) C2 ^, ~
  • maple DFU2程序下载方式(待验证)
    4 P% y- ?7 O  y6 ^+ G4 Q

    / G, J2 M! v* I* @/ m$ e, b
  • MassStorage程序下载方式(待验证)
    ' j+ e, v5 a5 C' z: b
    " f$ ^  E$ e$ s& Y
    更多功能细节请前往www.stduino.com
    进行了解% m8 U/ N5 v! |

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

      ^& P# b# f; g' c3 y, b# S
    • 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
      " E+ P# o4 w' D6 a; d/ }5 U/ f6 N2 M8 ^

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

      % t7 x) b1 F  y  A- p/ m0 t
    * F  N9 k) F6 w- P* Z
9 Y1 d  B( O4 T* q3 ~5 r
收藏 评论0 发布时间:2020-8-24 10:19

举报

0个回答

所属标签

相似分享

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