这几天有些时间想做LED点阵玩玩,所以需要学习74HC595芯片,上网找了几个例程和关于74HC595的几篇应用,照猫画虎实际操作一下,哪知根本不可行,教程都是错误的。
于是自己潜心研究了 4天,现在已经可以对74HC595随心所欲的控制了,因此可以下结论了,网上关于74HC595的用法资料绝大多都是错的,误导严重。
网上最误导人的3个错误观点:
1、连续给8个SCK(11脚),最后给1个LCK(12脚),就可以把已经传送的8位数据全部一下锁存到8个存储寄存器当中去。
2、OE非先置1(输出高阻态,LED先不显示),然后发8个数据,再给1个LCK,8个数据锁存上之后,再把OE非置0,刷新显示。
3、SCLR(10脚)只清空移位寄存器,不清空锁存器。
如果按照上面的思路做,根本是做不成的。
74HC595正确的工作原理是这样的:(网上根本没有任何相关的说法)
1、只有1个移位寄存器,但有1+8个,共9个锁存器,见下图。其中第1个锁存器可以理解为中转前置锁存器,它并没有连接Q0-Q7,后面8个锁存器连接了Q0-Q7。
当第1次SCK和LCK时,移位寄存器中=第1位数据,前置锁存器=第1位数据。但是并没有进入到Q0-Q7所对应的锁存器当中去。Q0到Q7=NON。
当第2次SCK和LCK时,移位寄存器中=第2位数据,前置锁存器=第2位数据。同时前置锁存器把之前的第1位数据才更新到Q0对应的锁存器当中去。此时Q0=第1位。Q1到Q7=NON。
当第3次SCK和LCK时,移位寄存器中=第3位数据,前置锁存器=第3位数据。同时前置锁存器把之前的第2位数据才更新到Q0对应的锁存器当中去,Q0把之前的第1位数据给Q1,此时Q0=第2位。Q1=第1位。Q2到Q7=NON。