Arduino与7段显示器连接

原文地址:https://circuitdigest.com/microcontroller-projects/7-segment-display-interfacing-with-arduino

Arduino与7段显示器连接

ARDUINO的

经过**迪利普·拉贾(Dilip Raja)** 2015年6月6日8
在这里插入图片描述
在本教程中,我们将把一个七段显示器连接到ARDUINO UNO。显示屏从0-9开始计数,并将自身重置为零。在继续之前,让我们首先讨论七个分段显示。

七段显示器的得名是因为它具有七个照明段。这些段中的每一个都有一个LED(发光二极管),因此可以发光。LED的制造方式使得每个LED的照明都包含在自己的部分中。这里要注意的重要一点是,任何七段显示器中的LED都以共阳极模式(共正)或共阴极模式(共负)排列。
在这里插入图片描述
上图显示了共阴极和共阳极中LED的电路连接。在这里,可以观察到,在CC中,每个LED的负极都连接在一起,并作为GND引出。在CA中,每个LED的正极连接在一起并作为VCC输出。这些CC和CA在将多个单元复用在一起时非常方便。

所需组件

硬件: ARDUINO UNO,电源(5v),HDSP5503七段显示器(两块)(任何公共阴极都可以),47uF电容器(跨电源连接)。

软体: arduino IDE(Arduino每晚)

电路图和工作说明

在这里插入图片描述
7段显示的连接如下所示:

ARDUINO UNO的PIN1或E至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Ω电阻接地。

现在,要了解其工作原理,请考虑将七段显示器连接到端口,因此,我们已经将“显示器的一部分连接到PIN0”,“显示器的B部分连接到PIN1”,“显示器的一部分连接到PIN3”,“显示到PIN4的一段”,“显示到PIN5的一段”,“显示到PIN6的一段”。并为普通接地型,如图所示。
在这里插入图片描述
在这里,公共接地必须连接到地面,显示器才能正常工作。可以使用二极管模式的万用表检查显示的每个部分。每个段均不得使用大于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。最好在下面的C代码中逐步解释0-9计数器的工作 :

代码

#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);

  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值