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

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

[复制链接]
stduino 发布时间:2020-8-24 10:19
键词:
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

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




收藏 评论0 发布时间:2020-8-24 10:19

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

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