搜索
查看: 1057|回复: 0

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

[复制链接]

该用户从未签到

24

主题

26

帖子

0

蝴蝶豆

中级会员

最后登录
2020-9-29
发表于 2020-8-24 10:19:43 | 显示全部楼层 |阅读模式
键词:
51 ; STM32 ;Arduino ;Stduino单片机; Stduino UNO和Nano;四位数码管

从大部分开始,我们将介绍更多的电子元件。其中大多数大家可能并不熟悉,但是如果你把前面的 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

实验目的:
点亮数码管,并实时显示程序运行的时间(秒)。

器材:
Stduino纳米/ UNO; 4 位数码管;杜邦线;面包板; 220 Ω电阻

电路连接:
A01连线图带水印.png

代码展示:
  1. int second = 0;
  2. void setup()
  3. {
  4.   // put your setup code here, to run once:
  5.     pinMode(1,OUTPUT);//A
  6.     pinMode(2,OUTPUT);//B
  7.     pinMode(3,OUTPUT);//C
  8.     pinMode(4,OUTPUT);//D
  9.     pinMode(5,OUTPUT);//E
  10.     pinMode(6,OUTPUT);//F
  11.     pinMode(7,OUTPUT);//G
  12.     pinMode(8,OUTPUT);//DP
  13.    
  14.     pinMode(19,OUTPUT);//1
  15.     pinMode(18,OUTPUT);//2
  16.     pinMode(17,OUTPUT);//3
  17.     pinMode(16,OUTPUT);//4
  18.    
  19.    
  20.     digitalWrite(19,LOW);
  21.     digitalWrite(18,LOW);
  22.     digitalWrite(17,LOW);
  23.     digitalWrite(16,LOW);

  24. }


  25. //void SevSegInit()
  26. void showNum(int num, bool point=false)
  27.     {   if(point)
  28.         {
  29.             digitalWrite(8,HIGH);//DP,TRUE
  30.         }else{
  31.             digitalWrite(8,LOW);//DP,FALSE
  32.             }
  33.         switch(num)
  34.         {
  35.             case 0:
  36.                 digitalWrite(1,HIGH);
  37.                 digitalWrite(2,HIGH);
  38.                 digitalWrite(3,HIGH);
  39.                 digitalWrite(4,HIGH);
  40.                 digitalWrite(5,HIGH);
  41.                 digitalWrite(6,HIGH);
  42.                 digitalWrite(7,LOW);
  43.                 break;
  44.                
  45.             case 1:
  46.                 digitalWrite(1,LOW);
  47.                 digitalWrite(2,HIGH);
  48.                 digitalWrite(3,HIGH);
  49.                 digitalWrite(4,LOW);
  50.                 digitalWrite(5,LOW);
  51.                 digitalWrite(6,LOW);
  52.                 digitalWrite(7,LOW);
  53.                 break;
  54.                
  55.             case 2:
  56.                   //2
  57.                 digitalWrite(1,HIGH);//A
  58.                 digitalWrite(2,HIGH);//B
  59.                 digitalWrite(3,LOW);//C
  60.                 digitalWrite(4,HIGH);//D
  61.                 digitalWrite(5,HIGH);//E
  62.                 digitalWrite(6,LOW);//F
  63.                 digitalWrite(7,HIGH);//G
  64.                 break;
  65.                
  66.             case 3:
  67.                   //3
  68.                 digitalWrite(1,HIGH);//A
  69.                 digitalWrite(2,HIGH);//B
  70.                 digitalWrite(3,HIGH);//C
  71.                 digitalWrite(4,HIGH);//D
  72.                 digitalWrite(5,LOW);//E
  73.                 digitalWrite(6,LOW);//F
  74.                 digitalWrite(7,HIGH);//G

  75.         
  76.                 break;
  77.                
  78.             case 4:
  79.                 digitalWrite(1,LOW);//A
  80.                 digitalWrite(2,HIGH);//B
  81.                 digitalWrite(3,HIGH);//C
  82.                 digitalWrite(4,LOW);//D
  83.                 digitalWrite(5,LOW);//E
  84.                 digitalWrite(6,HIGH);//F
  85.                 digitalWrite(7,HIGH);//G
  86.                 break;
  87.                
  88.             case 5:
  89.                 digitalWrite(1,HIGH);//A
  90.                 digitalWrite(2,LOW);//B
  91.                 digitalWrite(3,HIGH);//C
  92.                 digitalWrite(4,HIGH);//D
  93.                 digitalWrite(5,LOW);//E
  94.                 digitalWrite(6,HIGH);//F
  95.                 digitalWrite(7,HIGH);//G
  96.                 break;
  97.             case 6:
  98.                 digitalWrite(1,HIGH);//A
  99.                 digitalWrite(2,LOW);//B
  100.                 digitalWrite(3,HIGH);//C
  101.                 digitalWrite(4,HIGH);//D
  102.                 digitalWrite(5,HIGH);//E
  103.                 digitalWrite(6,HIGH);//F
  104.                 digitalWrite(7,HIGH);//G
  105.                 break;
  106.             case 7:
  107.                 digitalWrite(1,HIGH);//A
  108.                 digitalWrite(2,HIGH);//B
  109.                 digitalWrite(3,HIGH);//C
  110.                 digitalWrite(4,LOW);//D
  111.                 digitalWrite(5,LOW);//E
  112.                 digitalWrite(6,LOW);//F
  113.                 digitalWrite(7,LOW);//G
  114.                 break;
  115.             case 8:
  116.                 digitalWrite(1,HIGH);//A
  117.                 digitalWrite(2,HIGH);//B
  118.                 digitalWrite(3,HIGH);//C
  119.                 digitalWrite(4,HIGH);//D
  120.                 digitalWrite(5,HIGH);//E
  121.                 digitalWrite(6,HIGH);//F
  122.                 digitalWrite(7,HIGH);//G
  123.                 break;
  124.             case 9:
  125.                 digitalWrite(1,HIGH);//A
  126.                 digitalWrite(2,HIGH);//B
  127.                 digitalWrite(3,HIGH);//C
  128.                 digitalWrite(4,HIGH);//D
  129.                 digitalWrite(5,LOW);//E
  130.                 digitalWrite(6,HIGH);//F
  131.                 digitalWrite(7,HIGH);//G
  132.                 break;
  133.         }
  134.     }

  135. void setNum(int num)
  136.     {
  137.         
  138.         int d0=num%10;
  139.         int d1=(num%100)/10;
  140.         int d2=(num/100)%10;
  141.         int d3=num/1000;
  142.         
  143.         
  144.         int add=250;
  145.         
  146.         digitalWrite(19,LOW);
  147.         for(int i=add;i--;i<0)
  148.         {
  149.         showNum(d3);
  150.         }
  151.         digitalWrite(19,HIGH);
  152.         
  153.         digitalWrite(18,LOW);
  154.         for(int i=add;i--;i<0)
  155.         {
  156.         showNum(d2);
  157.         }
  158.         digitalWrite(18,HIGH);
  159.         
  160.         digitalWrite(17,LOW);
  161.         for(int i=add;i--;i<0)
  162.         {
  163.         showNum(d1);
  164.         }
  165.         digitalWrite(17,HIGH);
  166.         
  167.         digitalWrite(16,LOW);
  168.         for(int i=add;i--;i<0)
  169.         {
  170.         showNum(d0);
  171.         }
  172.         digitalWrite(16,HIGH);
  173.         
  174.     }
  175.    
  176. void loop()
  177. {
  178.   // put your main code here, to run repeatedly:
  179.     setNum(second);
  180.     second=millis()/1000;
  181.    
  182. }
复制代码
实验效果:
A01效果图.png


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







  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)

  • USB HID程序下载方式(待验证)

  • maple DFU程序下载方式(待验证)

  • maple DFU2程序下载方式(待验证)

  • MassStorage程序下载方式(待验证)

    更多功能细节请前往www.stduino.com
    进行了解

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


    • 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

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




回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 03:30 , Processed in 1.170876 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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