一个引脚即可串行控制25个LED


8

我有一个带有一个可用数字引脚的微控制器。

如何控制25个LED?


2
LED是否可以单独寻址?还是要同时打开/关闭所有LED?
文森特·范·登·伯格

指示灯应可单独访问。微控制器并非要为它们供电,只需确定它们的状态即可。另外,“数字端口”是指引脚。
archgoon

Answers:


11

I2C IO扩展器:-一些协议开销,但它应该可以扩展到非常大(数千个)的LED。

简单移位寄存器 -死简单接口,如果移位寄存器时钟不是很快,更新时LED可能会闪烁。使用双缓冲移位寄存器将解决此问题。


谢谢,这正是我在寻找的东西,但不知道他们叫什么。
Archgoon,2010年

2
至少需要一个针。移位寄存器是否至少需要两个引脚用于时钟和数据?
blalor

@blalor-是的,但是这两个引脚被设计为在多个I2C器件之间共享。
凯文·维米尔

I2C也是两条线。
XTL

2
达拉斯1线仅需一个引脚,即可扩展到N个设备。
Tim Williscroft 2010年

16

移位寄存器和I2C很好,但前提是至少有2个可用引脚。我建议达拉斯1-wire端口扩展器DS2408将是最佳解决方案。达拉斯1线设备访问的代码并不那么复杂,并且网络上有很多实例。

您可以使用多个DS2408连接到一个引脚,也可以在单个DS2408之后实现更多逻辑。


2
如果可用的引脚数为零,则可以使用I2C,前提是您的I2C总线正以这种方式使用,并且没有地址冲突。
凯文·维米尔

5

如前所述,仅使用1个IO引脚,您就可以使用1线扩展器/移位寄存器或将其他设备添加到I2C总线。尚未提及的唯一事情是可以在SPI端口中添加另一个从设备。

SPI被称为4线协议-您有两条数据线,一条时钟线和一条选择线(以及公共地线,但这通常并不重要)。但是,前三个在总线上的所有设备之间共享,因此,第一个之后的每个设备仅占用一条导线。SPI还可以将您的总线增加到全双工状态,但这对于此应用而言并不重要。


1

我只是将几个移位寄存器链接在一起。(当然,这降低了切换LED的频率。)


1

如果您确实只有1针可用,那么达拉斯1线总线看起来是最明显的事情。但是,由于这仅是输出,因此有更便宜的解决方案。既可以传送数据又可以传送时钟的串行PWM总线很容易设置;参见davidcary也提到过的Roman Black的页面。您只需要像74VHC164这样的串行输入并行输出移位寄存器,就可以将其级联为任意数量的输出(一个'164具有8个输出)。
在这种解决方案中,LED是静态驱动的。

如果您还有其他I / O可以共享,例如I2C的SPI,则可以选择更豪华的解决方案,例如Maxim的MAX6950。MAX6950具有闪烁和亮度控制以及压摆率限制等功能。LED是多路复用的,这意味着您只需要一个16针驱动器。


0

答案可能是“一系列移位寄存器”,但是您能否更具体地说明问题?什么微控制器?“数字端口”是什么意思?一个针?


谢谢,我已经澄清了,移位寄存器正是我想要的。谢谢。
Archgoon 2010年

0

25个LED的大小取决于微控制器上单个数字IO引脚的功耗。与其直接驱动它们,不如应该使用一个简单的FET开关(因此IO连接到栅极)来控制LED链的电源。

根据您的应用程序,还有其他更强大的方法可以完成此操作。但是参加一场Fet可能会使您工作最快。

例如,如果要门控可变信号,则可以使用更复杂的设备(有时称为数字继电器)为您提供数字开关的方法。

至于通过单个IO端口分别控制25个LED。正如其他人所建议的,您可以使用一些移位寄存器。还有更复杂的解决方案,涉及使用串行协议(例如I2C)与另一个IC通信。


0

罗曼·布莱克(Roman Black)介绍了shift1系统该系统使您可以通过单个微控制器引脚独立控制任意数量的LED。

@Fake Name,@ Tim,@ pingsept都建议将一些移位寄存器链接在一起,其中一个DO数据输出引脚馈入另一个DI数据输入引脚。74HC595可以正常工作。(也许其他一些芯片会更好地工作)。

(@reemrevnivek,采用这种菊花链式SPI,与许多人所说的相反,在第一个器件之后的每个器件都不需要微控制器上的更多引脚了-为什么要听它们?:-)。

通常,这需要微控制器上的4个引脚-MISO,MOSI,SCLK和锁存器。由于仅执行输出,因此不需要MISO输入引脚。

罗曼·布莱克(Roman Black)发现,通过在单个微控制器输出上进行一些非常仔细的定时,以及对模拟电路进行一些仔细的调整,单个微控制器引脚可以驱动外观简单的模拟电路,从而将常见的SCLK,DI链中第一个芯片的引脚(MOSI)和公共锁存信号。

然后,该微控制器可以通过单个引脚控制25个LED。


0

您可以通过该单个引脚连接另一个微控制器,然后通过1wire(或您自己的协议,如果需要高速)与之通信。然后,其他微控制器处理LED。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.