问题描述
如何在带有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)
}
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中对此进行仿真,则会得到以下输出:
digitalWrite(13,HIGH);
这将是输出:
我希望它在右边显示0,在左边显示8,但是我不知道如何控制此双重7段。我想创建一个倒数计时器,但没有找到任何相关的教程,这些教程是倒数2 7个分段,而不是双7个分段显示。
注意:我在这个项目中没有使用任何寄存器。
解决方法
引脚1和2用于寻址七个段中的每个段。您需要将引脚1下沉到地面并提供您要在前七个段中显示的值,然后通过将引脚2下沉到地面并提供要显示的值来切换到另一个。这必须非常快地发生,以免人眼察觉。
请参阅此电路
您可以使用一个库来保存所有这些内容。
从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();
}