Arduino点亮数码管
-
- 前言
- 所需组件
- 电路图及工作说明
- 代码
前言
在本教程中,我们将连接七段显示器 ARDUINO UNO。显示屏从 0 到 9 计数并将自己重置为零。在继续之前,让我们先讨论七段显示器。您还可以查看相关信息arduino 详细七段显示器的详细教程。
七段显示器的名称来源于它有七段照明。这些部分中的每一个都有一个 LED(发光二极管),所以是照明。LED 每一种制造方式 LED 所有的照明都包含在自己的段落中。这里需要注意的重要一点是,任何七段显示器中 LED 均以共阳极模式(共正极)或共阴极模式(共负极)排列。 共阴共阳LED如上图所示。这里可以观察到,在这里 CC 中,每个 LED 负极端子连接在一起并引出 GND。在 CA 中,每个 LED 正极作为正极连接在一起 VCC 引出。这些 CC 和 CA 多单元多路复用在一起非常方便。
所需组件
硬件: ARDUINO UNO,电源(5v),HDSP55037段显示器(两块)(任何共阴极都可以)uF电容器(跨接电源)。
软件: arduino IDE
电路图及工作说明
为 7 段显示器完成的连接如下:
PIN1 或 E 到 ARDUINO UNO 的 PIN 6
PIN2 或 D 转 PIN 5
PIN4 或 C 转 PIN 4
PIN5 或 H 或 DP 到 PIN 9 ////不需要,因为我们没有使用小数点
PIN6 或 B 转 PIN 3
PIN7 或 A 到 PIN 2
PIN9 或 F 转 PIN 7
PIN10 或 G 转 PIN 8
PIN3 或 PIN8 或 CC 通过 100Ω 电阻接地。
假设我们已经连接到一个端口,我们现在需要了解工作原理,假设我们已经连接到端口。A段显示器到PIN0”,“B段显示器到PIN1”,“A段显示器到PIN三、一段显示转PIN四、一段显示转PIN一段显示转PIN六、如图所示为共地型。
在这里,显示器必须接地才能工作。万用表可以用来检查二极管模式下显示的每一段。每段电源不得超过4v,否则,显示器将永久损坏。为了避免这种情况,公共电阻器可以在公共终端上提供,如电路图所示。
现在,如果我们想在这个显示中显示一个0,如下图所示。
我们需要打开A、B、C、D、EF”段的LED,所以我们需要给它PIN0、PIN1、PIN2、PIN3、PIN4和PIN5供电。所以每次我们需要一个0,我们都需要为所有提到的引脚供电。
现在,如果我们想展示1
我们需要B、C段供电,为使 B、C 段打开,我们需要为 PIN1、PIN2 供电。两个引脚都很高,我们显示了1。因此,如上所示,我们将为显示器上显示的数字对应的引脚供电。
在这里,我们将编写一个程序,打开和关闭每一段,计数为 0-9。0-9 工作计数器 最好在下面给出 C 逐步解释代码:
代码
#define segA 2//connecting segment A to PIN2 #define segB 3// connecting segment B to PIN3 #define segC 4// connecting segment C to PIN4 #define segD 5// connecting segment D to PIN5 #define segE 6// connecting segment E to PIN6 #define segF 7// connecting segment F to PIN7 #define segG 8// connecting segment G to PIN8 int COUNT=0;//count integer for 0-9 increment void setup() {
for (int i=2;i<9;i++)
{
pinMode(i, OUTPUT);// taking all pins from 2-8 as output
}
}
void loop()
{
switch (COUNT)
{
case 0://when count value is zero show”0” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 1:// when count value is 1 show”1” on disp
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 2:// when count value is 2 show”2” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 3:// when count value is 3 show”3” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 4:// when count value is 4 show”4” on disp
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 5:// when count value is 5 show”5” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 6:// when count value is 6 show”6” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 7:// when count value is 7 show”7” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 8:// when count value is 8 show”8” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 9:// when count value is 9 show”9” on disp
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
break;
}
if (COUNT<10)
{
COUNT++;
delay(1000);///increment count integer for every second
}
if (COUNT==10)
{
COUNT=0;// if count integer value is equal to 10, reset it to zero.
delay(1000);
}
}