0

如何使用 arduino 和 proteus 在双 7 段中显示不同的数字?

这是我的设置:

void setup() {
  pinMode(13,OUTPUT); //a
  pinMode(12,OUTPUT); //b
  pinMode(11,OUTPUT); //c
  pinMode(10,OUTPUT); //d 
  pinMode(9,OUTPUT);  //e
  pinMode(8,OUTPUT);  //f
  pinMode(7,OUTPUT);  //g

  pinMode(6,OUTPUT);  //power 1 (left)
  pinMode(5,OUTPUT);  //power 2 (left)
}

我使用这段代码(在 void 循环中)在 7 段中显示数字 0:

  digitalWrite(6, 0);  //power 1 (left)  
  digitalWrite(5, 0);  //power 2 (left)

  digitalWrite(13, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(7, LOW);

如果我在 proteus 中模拟这个,我得到这个输出:

在此处输入图像描述

如果我添加另一个数字,例如 8:


  digitalWrite(13, HIGH);
  digitalWrite(12, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(10, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(7, HIGH);


这将是输出: 在此处输入图像描述

代码在这两个 7 段上只会变为 0 和 8。

我希望它在右侧显示 0,在左侧显示 8,但我不知道如何控制这个双 7 段。我想创建一个倒数计时器,我还没有找到任何关于它的教程,这些教程是倒计时中的 2 个 7 段,而不是双 7 段显示。

注意:我没有在这个项目中使用任何寄存器。

4

1 回答 1

1

引脚 1 和 2 用于寻址七个段中的每一段。您需要将引脚 1 接地并提供要在前七个段中显示的值,然后通过将引脚 2 接地并提供要显示的值来切换到另一个。这必须非常快地发生,所以人眼不会注意到它。

参考这个电路

在此处输入图像描述

您可以使用一个库来帮助您摆脱这一切。

从这里下载库

要安装它,请打开 Arduino IDE,转到 Sketch > Include Library > Add .ZIP Library,然后选择您下载的 SevSeg ZIP 文件。

然后尝试以下代码它应该显示“80”

#include "SevSeg.h"
SevSeg sevseg; 

void setup(){
  byte numDigits = 2;
  byte digitPins[] = {6, 5};
  byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 4};

  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
    sevseg.setNumber(80, 1);
    sevseg.refreshDisplay(); 
}
于 2020-10-16T12:15:09.740 回答