我有一个带有一个可用数字引脚的微控制器。
如何控制 25 个 LED?
我有一个带有一个可用数字引脚的微控制器。
如何控制 25 个 LED?
移位寄存器和 I2C 很好,但前提是至少有 2 个引脚空闲。我建议 Dallas 1-wire 端口扩展器DS2408将是最佳解决方案。Dallas 1-wire 设备访问的代码并不复杂,网上有很多示例。
您可以使用连接到一个引脚的多个 DS2408 或在单个 DS2408 之后实现更多逻辑,无论您想要什么。
I2C IO 扩展器: - 一些协议开销,但它应该可以扩展到非常大(数千)数量的 LED。
简单移位寄存器- 死简单接口,如果移位寄存器时钟不是很快,更新时 LED 可能会闪烁。使用双缓冲移位寄存器将解决此问题。
正如已经指出的,只有 1 个 IO 引脚,您可以使用 1 线扩展器/移位寄存器或将另一个设备添加到您的 I2C 总线。唯一还没有提到的是向您的 SPI 端口添加另一个从设备的可能性。
SPI 被称为 4 线协议 - 您有两条数据线、一条时钟线和一条选择线(以及一个公共地线,但这通常不算数)。但是,前三个在总线上的所有设备之间共享,因此第一个之后的每个设备只需要多一条迹线/线。SPI 还将您的总线增加到全双工,但这对这个应用程序无关紧要。
我只是将几个移位寄存器链接在一起。(当然,这会降低您切换 LED 的频率......)