CrazyBingo

如果你的IO还是不够之3线LED驱动设计

0
阅读(4308)

如果你的IO还是不够之3线LED驱动设计

每次设计一个板子,为了验证总是得加上8个LED,而这8个IO,本身IC已经不够多,真是舍不得啊呜呜呜!

image

想起当年搞过LED点真的驱动,那家伙通过74595锁存器来移位实现LED的驱动。而LED点阵不正是独立的LED的阵列,这不现成的方案。

因此,如果采用74HC595,8个LED的驱动只要CLK,LATCH,DOUT这三根信号线,而成本也只多了几毛钱的一片595,在IO不够,又付得起3毛钱的情况下,不失为一种完美的替代方案,如下:

wps_clip_image-13153

wps_clip_image-28398

image

既然如此,在verilog代码中在添加一个后续的模块,原先的led_display.v输出8位LED数据,而后续模块通过判断这个8位数据是否有变化,如果有变化,就自动配置595,以此来实现与原来设计完全兼容的电路,后续再添加一个595的驱动电路就OK了,如下:

wps_clip_image-8283

备注:“猪的懒不是因为自己,而是因为主人,研究表明,野猪并不懒,为了不溺爱大家,不再贴出那么简单的代码”,仿真图如下所示:当输入led_data变化后,即update_flag <= (led_data_r != led_data) ? 1'b1 : 1'b0; 对595配置一次。

wps_clip_image-22817

74HC595可以实现3线8位LED驱动,当然16位的话再加一块595就搞定了。这样的设计在相关产品上我也见过。

除了3线,还有没有2线,甚至单线的串并转换IC啊?要是有,那岂不是更爽???