74HC595内含8位串入,串/并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(SCLK和SLCK),都是上升沿有效。
当SCLK从低到高电平跳变时,串行输入数据(SER)移入寄存器;当SLCK从低到高电平跳变时,寄存器的数据置入锁存器。
清除端(CLR)的低电平只对寄存器复位(QS为低电平),而对锁存器无影响。当输出允许控制(OE)为高电平时,并行输出(Q0~Q7)为高阻态,而串行输出(QS)不受影响。
74HC595最多需要5根控制线,即SER,SCLK,SLCK,CLR和OE。其中CLR可以直接接到高电平,用软件来实现寄存器清零;如果不需要软件改变亮度,OE可以直接接到低电平,而用硬件来改变亮度。把其余三根线和单片机的I/O口相接,即可实现对LED的控制。
数据从SER口送入74HC595,在每个SCLK的上升沿,SER口上的数据移入寄存器,在SCLK的第9个上升沿,数据开始从QS移出。如果把第1个 74HC595的QH’和第2个74HC595的SDA相接,数据即移入第2个74HC595中,照此一个一个接下去,可接任意多个。数据全部送完后,给 SLCK一个上升沿,寄存器中的数据即置入锁存器,此时如果OE为低电平,数据即从并口Q0~Q7输出,把Q0~Q7与LED的8段相连,LED就可以实现显示了。想要软件改变LED的亮度,只需改变OE的占空比就行了。
1.关于74595的数据端说明:
1)QA--QH:八位并行输出端,可以直接控制数码管的8个段
2)QH’:级联输出端。可将它连下一个595的SER端
3)SER:串行数据输入端
2.关于74595的控制端说明:
1)/SCLR(10脚):低电平时将移位寄存器的数据清零。通常我将它接Vcc
2)/SCK:上升沿时数据寄存器的数据移位。QA--》QB--》QC--》。..--》QH;
下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了;我通常都选微妙级)
3)RCK:上升沿移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲,更新显示数据。
4)OE:高电平时禁止输出(高阻态)。如果单片机的引脚够用,用一个引脚控制它,可以方便地产生闪烁和熄灭效果,比通过数据端移位控制要省时省力。