DS/LDSI(SER),串行数据输入引脚 OE/LEDN,输出使能控制脚,它是低电才使能输出,所以接GND RCK/LDSTR(STCP),存储寄存器时钟输入引脚。上升沿时,数据从移位寄存器转存到存储寄存器。 SCK/LDSCK(SHCP),移位寄存器时钟引脚,上升沿时,移位寄存器中的bit 数据整体后移,并接受新的bit(从SER输入)。 MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可。 Q7'/Q7S , 串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。 Q0-Qx:并行输出引脚 使用参数:
VCC:2V~6V,5V最好 IQn:± 35mA
使用方法:
74hc595有移位寄存器、存储寄存器,移位寄存器可以存储8位电平,存储寄存器中的数据可以输出8位电平
先给SER电平,再给SCK上升沿,就可以把SER电平读取到移位寄存器,并将原本的第一位数据往下移一位, 重复八次就可以存满8位,然后给RCK一个上升沿就可以把8位移位寄存器的数据传给存储寄存器,然后存储寄存器就会自动输出电平。
级联:几个74HC595的级联原理
因为74hc595如果移位寄存器输入超8位,就会从Q7'/Q7S引脚输出出去,所以将Q7'/Q7S与另一一个74hc595的SER引脚相连,然后把要级联的74hc595的SCK RCK连在一起,这样就可以让全部的移位寄存器一起移位,等第一个74hc595的移位寄存器满,第九位数的读取就会把hc74595多出的最先第一位,从Q7'/Q7S引脚输出出去并被第二个74hc595读取重复八次就又读满一个hc74595,就这样一直读取,想用n个74hc595,就可以读取n*8位电平,又因为RCK全部连在一起,然后给RCK一个上升沿就可以把8位移位寄存器的数据传给存储寄存器,然后存储寄存器就会自动输出电平,输出n*8位电平
下面是级联三个74hc595的案例
void SCK_ON(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_1|GPIO_Pin_0);
}
void SCK_OFF(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_1|GPIO_Pin_0);
}
void SER_ON(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
}
void SER_OFF(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_7);
}
void RCK_ON(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_2 | GPIO_Pin_10);
}
void RCK_OFF(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_2 | GPIO_Pin_10);
}
int kk = 0;
void hc545_output(u32 status)
{
SCK_OFF();
SER_OFF();
RCK_OFF();
for(kk=0;kk<24;kk++)
{
SCK_OFF();
if(status&0x00800000)
{
SER_ON();
}
else
{
SER_OFF();
}
status<<=1;
SCK_ON();
}
kk=0;
RCK_OFF();
Delay_ms(3);
RCK_ON();
Delay_ms(3);
}