目录

74HC595

更新于 2021-02-08

74HC595

描述:带有输出锁存器的8位移位寄存器 8位串行输入,带有8位D型锁存器的并行输出移位寄存器


Connection Diagram

https://static.jtxiao.com/pic/1581607842883.jpg

序号 引脚 说明
1-7 Qb-Qh 八位并行输出端
15 Qa 八位并行输出端
9 Qh’ 级联(串联)输出端,接下一个595 SER(SI)端
10 /SCLR 低电平时将移位寄存器数据清零,可以接VCC
11 SCK 上升沿时数据寄存器的数据移位。 (Qa»Qb»…»Qh) 下降沿移位寄存器数据不变(脉冲宽度,5V时,大于几十纳秒即可,常用微秒级)
12 RCK 上升沿时移位寄存器数据进入数据存储寄存器(D型锁存器),下降沿时存储寄存器的数据不变。(通常将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲,5V时,大于几十纳秒即可,常用微秒级,以显示更新数据)
13 /G 高电平时禁止输出(高阻态)。使用单片机引脚控制可以方便地产生闪烁和熄灭效果
14 SER 串行数据输入端

Attention

  1. 74HC164与其功能相仿,都是8位串行输入转并行输出移位寄存器。
  2. 74HC595优点:具有数据存储寄存器,移位过程中,输出端数据不变,在串行速度慢的场合很有用,数码管没有闪烁感

51-Code

void C51_74HC595Send8-bitData (unsigned char Data)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        if( (Data<<i)&0x80 )    SER=1;      //高位先行
        else                    SER=0;

        SCK=0;
        //NOP();
        SCK=1;          //移位寄存器移位
    }

    RCK=0;
    //NOP();
    RCK=1;          	//输出并行数据
}
void C51_74HC595Send32-bitData (unsigned char Data[0],unsigned char Data[1],unsigned char Data[2],unsigned char Data[3])
{
	unsigned char i;
	for(i=0;i<32;i++)
	{
		if(i>23)
		{
			if( (Data[3]<<(i-24))&0x80 )	SER=1;		//高位先行
			else							SER=0;
		}
		else if(i>15 & i<24)
		{
			if( (Data[2]<<(i-16))&0x80 )	SER=1;		//高位先行
			else							SER=0;
		}
		else if(i>16 & i>7)
		{
			if( (Data[1]<<(i-24))&0x80 )	SER=1;		//高位先行
			else							SER=0;
		}
		else
		{
			if( (Data[0]<<(i-24))&0x80 )	SER=1;		//高位先行
			else							SER=0;
		}
		SCK=0;
		//NOP();		//脉宽
		SCK=1;			//移位寄存器移位
	}

	RCK=0;
	//NOP();		//脉宽
	RCK=1;			//输出并行数据
}
//attention: 也可以用uint32_t作为参数

Appendix

A

https://static.jtxiao.com/pic/1581607843056.jpg

B

https://static.jtxiao.com/pic/1581607843251.jpg

C

https://static.jtxiao.com/pic/1581607843420.jpg