你有没有遇到过这种情况:想驱动一个16×16的LED点阵——256个灯。需要多少个IO?256个?开什么玩笑。STM32最多也就100多个引脚,而且不可能全给LED。那怎么办?答案是:3个IO,就够了。

那个“变魔术”的芯片:74HC595。书稿里讲了一个神奇的小芯片:74HC595。它只有16个引脚,却能干一件事:把串行数据,变成并行输出。什么意思?你从单片机送进去一串二进制数——比如10101100,一次一位。它在内部存起来,然后8个输出引脚同时输出这8个位的电平。就像你把一叠扑克牌一张一张递给它,它收齐8张后,“啪”一下全部摊在桌上。这就是串行输入,并行输出

你只用了3个IO:

  • A:数据线,送每一个bit
  • SHIFT_CLOCK:移位时钟,告诉它“送下一个bit”
  • LATCH_CLOCK:锁存时钟,告诉它“输出”

3个IO,换来8个输出。赚了。

更魔法的操作:菊花链。但这还不是最厉害的。74HC595有一个引脚叫SQH——串行输出。它的作用是什么?把内部移位寄存器的最后一个bit,送出去。这意味着什么?你可以把这个SQH,接到另一片74HC595的A引脚上。然后,两片595共用SHIFT_CLOCK和LATCH_CLOCK。这样,你送16个bit进去:

  • 前8个,存在第一片
  • 后8个,从第一片的SQH流到第二片,存在第二片

然后一个LATCH,两片同时输出——16个输出。再加一片,24个输出。再加一片,32个输出。理论上,你可以用3个IO,驱动无限多个595,获得无限多个输出。这种连接方式,有个形象的名字——菊花链。像一朵朵菊花,首尾相接,串成一串。那个“LED大屏”背后的秘密

你有没有想过,商场门口那些巨大的LED显示屏,是怎么驱动的?一个屏幕,几千个甚至几万个LED,难道每个都接一根线?不可能。它们背后,就是成千上万片74HC595,连成一条长长的菊花链。单片机只做一件事:用3个IO,送出一长串二进制数据——每一行、每一列、每个像素的亮灭信息。数据流进第一片595,挤到第二片,再挤到第三片……像流水一样,填满整个链条。然后一个LATCH,所有595同时输出。整行LED,同时亮灭。然后换下一行数据,再来一遍。这就是LED大屏的“动态扫描+菊花链”驱动原理。每秒刷新几十次,人眼就看到了一幅完整的画面。

为什么是595,不是其他?有人问:为什么这个芯片这么经典,几十年了还在用?因为它在“成本、性能、易用性”之间,找到了完美的平衡点。

  • 成本低:几毛钱一片
  • 驱动强:每个输出引脚能输出35mA电流,直接点LED
  • 级联易:SQH引脚,天生为菊花链设计
  • 逻辑简单:3根线,时序清晰,代码好写

它不是什么黑科技,但它足够好用。这就是经典。一个真实的“省钱”案例,我有个朋友做一款点阵时钟,用16×16的LED屏,256个灯。一开始,他准备用专用的LED驱动芯片,一片就要十几块,还得用好几片。成本太高。后来换成74HC595,一片不到一块钱,用了4片,总共3块钱。3个IO,搞定。成本从几十块降到几块钱。那个小小的595,省了90%的成本。

菊花链的“暗坑”,菊花链虽好,用不好也会翻车。坑一:时钟频率不够,数据要一位一位送进去,1000个595,就要送8000个bit(因为每个595有8个输出)。如果SHIFT_CLOCK频率太低,刷一屏的时间就太长。比如10KHz的时钟,送8000个bit要800ms——人眼都能看到一行行在刷新了。

坑二:锁存时机不对,LATCH必须在所有数据都送完之后,才能产生。如果送了一半就LATCH,前半段595有数据,后半段没有——画面就花了。

坑三:电源不够一片595能驱动8个LED,每个LED几mA。但100片595同时驱动800个LED,电流可能达到好几安培。电源不够,电压就掉,信号就乱。菊花链越长,对电源的要求越高。

这个故事给我们的启示,为什么3个IO能驱动无限个LED?因为74HC595做了一件事:用时间换空间。你把“空间上并行”的需求——同时控制N个输出——转化成了“时间上串行”的操作——一位一位送数据。送数据需要时间,但时间可以换空间。

空间不够,时间凑。这就是串行通信的底层哲学。GPIO不够用了?没关系。用595。用菊花链。用时间,换空间。硬件资源受限,是嵌入式的常态;用巧妙的架构突破限制,是工程师的智慧。

写在最后,下次你再遇到“IO不够”的问题,别急着换大芯片。想想74HC595。想想那个叫SQH的引脚。想想菊花链。3个IO,驱动无限个LED。这不是魔术,是串行转并行的数学。这不是神话,是74HC595几十年的经典设计。那个几毛钱的小芯片,藏着嵌入式系统最核心的智慧:资源不够,架构来凑。


(本文灵感源于于振南《新概念ARM32单片机》教程中对74HC595菊花链级联的深刻讲解,感谢作者将串行转并行的硬件魔法讲得如此通透。)


如果您觉得这个故事对您有启发,欢迎点赞、转发,让更多工程师看到这个藏在3个IO背后的“无限扩展”智慧。关注我,一起探索嵌入式世界里那些“小芯片干大事”的硬核真相。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐