Arduino篇—多位数码管的应用

电子说

1.2w人已加入

描述

课程目标

  • 多位数码管的结构
  • 数码管的动态显示原理
  • 编程控制多位数码管

相关知识

数码管: 是由7个LED封装在一起组成的“8”字型的器件,再加上一位小数点,器件中就一共包含有8个LED灯。其他任何多位数码管也都是1位数码管集合而成。

四位数码管原理: 四位数码管一共8*4个发光二极管,包括四个数管,每个数管为a,b,c,d,e,f,g,h八段。共12个引脚,其中4个引脚控制标号1234的四个数管是否发光,8个引脚控制abcdefgh八段LED灯是否发光。

LED封装

LED封装

**控制方法:**多位数码管和前面所学习的单个数码管一样,都分为共阳和共阴两种。共阳即共阳极,共阴即共阴极。对于共阳数码管,因为阳极共用,因此各引脚实际上与阴极相连,因此需给予低电平方能触发,共阴极引脚则相反。

电路搭建

所需材料

ArduinoUNO * 1
共阳极四位数码管 *1
杜邦线若干

电路连接

数码管的abcdefg和dp接UNO的29号脚,数码管的1234接UNO的1013脚。

LED封装

程序编写

练习一:点亮所有数码管

编写程序,让四个数码管全部显示数字8。

图形化方式:

LED封装

代码方式:

/* 项目名称:点亮四位数码管
 * 项目时间:2022.03.01
 * 项目作者:MRX
 */
void setup() {
  for(int i = 2;i <= 13;i++){
    pinMode(i,OUTPUT);
  }
}
void loop() {
  for(int i = 2;i <= 9;i++){
    digitalWrite(i,LOW);
  }
  for(int i = 10;i <= 13;i++){
    digitalWrite(i,HIGH);
  }
}

练习二:四个数码管显示不同内容

通过程序编写,让数码管显示数字“1234”。

图形化方式:

按照数码管的工作原理,四个数管显示的内容始终相同啊。如果我想让数码管显示“5678”,应该怎么办呢?实验表明,如果我让数管1快速显示“1”然后关闭,数管2快速显示“2”然后关闭……所以只要速度够快,人眼看到的就是“1234”!

LED封装

代码方式:

/* 项目名称:显示数字1234
 * 项目时间:2022.03.01
 * 项目作者:MRX
 */
void setup() {
  for(int i = 2;i <= 13;i++){
    pinMode(i,OUTPUT);
  }
}
void num1(){
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
}
void num2() {
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,HIGH);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(10,LOW);
  digitalWrite(11,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);
}
void num3() {
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
  digitalWrite(12,HIGH);
  digitalWrite(13,LOW);
}
void num4() {
  digitalWrite(2,HIGH);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,HIGH);
}
void loop() {
  num1();
  delay(5);
  num2();
  delay(5);
  num3();
  delay(5);
  num4();
  delay(5);
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分