如何在Arduino + Protues中控制双7段显示

问题描述

如何在带有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中对此进行仿真,则会得到以下输出

enter image description here

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


  digitalWrite(13,HIGH);


这将是输出

enter image description here

在这7个段上,代码都将分别变为0和8。

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

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

解决方法

引脚1和2用于寻址七个段中的每个段。您需要将引脚1下沉到地面并提供您要在前七个段中显示的值,然后通过将引脚2下沉到地面并提供要显示的值来切换到另一个。这必须非常快地发生,以免人眼察觉。

请参阅此电路

enter image description here

您可以使用一个库来保存所有这些内容。

here下载库

要安装它,请打开Arduino IDE,转到“草图”>“包含库”>“添加.ZIP库”,然后选择您下载的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(); 
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...