1
电子说
课程目标
相关知识
数码管: 是由7个LED封装在一起组成的“8”字型的器件,再加上一位小数点,器件中就一共包含有8个LED灯。其他任何多位数码管也都是1位数码管集合而成。
四位数码管原理: 四位数码管一共8*4个发光二极管,包括四个数管,每个数管为a,b,c,d,e,f,g,h八段。共12个引脚,其中4个引脚控制标号1234的四个数管是否发光,8个引脚控制abcdefgh八段LED灯是否发光。
**控制方法:**多位数码管和前面所学习的单个数码管一样,都分为共阳和共阴两种。共阳即共阳极,共阴即共阴极。对于共阳数码管,因为阳极共用,因此各引脚实际上与阴极相连,因此需给予低电平方能触发,共阴极引脚则相反。
电路搭建
所需材料
ArduinoUNO * 1
共阳极四位数码管 *1
杜邦线若干
电路连接
数码管的abcdefg和dp接UNO的29号脚,数码管的1234接UNO的1013脚。
程序编写
练习一:点亮所有数码管
编写程序,让四个数码管全部显示数字8。
图形化方式:
代码方式:
/* 项目名称:点亮四位数码管
* 项目时间: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”!
代码方式:
/* 项目名称:显示数字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);
}
全部0条评论
快来发表一下你的评论吧 !