0

我有一个 3.5 位 7 段 LED 显示屏,我正在尝试用 Arduino 驱动它。Arduino 运行带锁存器的移位寄存器 (M74HC595)。移位寄存器的 8 个输出通过 2000 欧姆电阻进入显示器的 8 个段引脚。显示器的三位控制引脚连接到 Arduino 上的三个引脚。显示器有一个共阴极,所以当控制引脚为低电平时,数字打开,当它为高电平时,数字关闭。

只要我只点亮一个数字,或者用相同的段点亮多个数字,这就可以正常工作,但是一旦我尝试在两位或三位数字之间切换段,一切都会变得一团糟。不应该有光的部分,而是有一个微弱的光,这会影响读取实际数字。

如果我在写入每个数字之间添加延迟,不需要的灯会变暗一些,但很快整个事情就会因为高延迟而闪烁并且无法使用。

难道我做错了什么?

为了启用特定数字,我在 Arduino 上设置了控制引脚,例如,这是我启用第一个数字的方式:

digitalWrite(digit1, LOW);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, HIGH);

然后将一个数字推入移位寄存器并将其移至锁存器(因此移至显示器):

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, number);
digitalWrite(latchPin, HIGH);

这是我的方案:

方案

4

1 回答 1

2

首先,您应该仅在输出准备好后通过公共引脚启用数字。其次,看起来您在启用引脚的情况下切换数字,并且在数字变得可见后更改它们,因此为什么在使用不同数字时会变暗。

你应该遵循这样的循环。

  1. 推出您想要的值并启用锁存器。
  2. 用公共引脚点亮数字。
  3. 睡眠 x 毫秒。
  4. 用公共引脚关闭数字。
  5. 返回 1 并重复其他数字。

这个想法是这 3 位数字实际上会非常快地闪烁,但对于人眼来说,它们看起来就像是一直亮着。如果您先启用它们,则 74595 输出的最后一位数字将有一个值,并且会在一小段时间内可见。当您切换到实际值时,它会看起来更暗,因为它可见的时间更短。当数字相同时,看起来没有任何问题。

于 2014-06-09T19:12:49.027 回答