Arduino:多路复用7段显示问题

时间:2014-06-09 18:56:14

标签: arduino multiplexing shift-register

我有一个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);

这是我的计划:

Scheme

1 个答案:

答案 0 :(得分:2)

首先,只有在输出就绪后才能通过公共引脚启用数字。其次,看起来你在启用引脚的情况下切换数字,并且在数字变得可见之后你正在改变它们,因此当你使用不同的数字时,为什么你会变暗。

你应该遵循这样的循环。

  1. 推出所需的值并启用闩锁。
  2. 使用公共引脚点亮数字。
  3. 睡眠x ms。
  4. 使用公共引脚关闭数字。
  5. 返回1并重复其他数字。
  6. 这个想法是3位数字实际上会非常快地闪烁,但对于人类来说,它看起来似乎一直都在。如果首先启用它们,则74595输出上的最后一位数字将显示一个值,并且该值将在一小部分时间内可见。切换到实际值时,它会显得更暗,因为它可以在更短的时间内看到。当数字相同时,看起来没有错。