74H595

74HC595详解

工作电压2-6V,推荐5V。

14脚串行输入:595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。

13脚OE 输出使能控制脚:如果它不工作,那么595的输出就是高阻态,595就不受我们程序控制了,这显然违背我们的意愿。OE的上面画了一条线,表示他是低电平有效。于是我们将他接GND。

10脚SRCLR 位移寄存器清空脚:他的作用就是将位移寄存器中的数据全部清空,这个很少用到,所以我们一般不让他起作用,也是低电平有效,于是我们给他接VCC。

12脚RCLK存储寄存器:数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。

11脚SRCLK移位寄存器时钟输入:当一个新的位数据要进来时,已经进入的位数据就在移位寄存器时钟脉冲的控制下,整体后移,让出位置。

分析下数据输入和输出过程:

假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。 第一个从SER送入的bit将会从Q7出去。

移位寄存器

74HC595的移位寄存器工作方式就像shou qiang弹夹。但是子弹的发射(移位寄存器中的数据转储到存储寄存器),又像是【散x弹】(因为是并行输出嘛)

为什么说和弹夹很像呢?

1、串行输入,已进入的位数据依次下移(所以叫移位寄存器) | 子弹也是一颗一颗上的,先上的子弹,被后上的慢慢往下压。

2、第一个输入的位,是并行输出的最后一个位 | 最先进入弹夹的子弹,最后射出。

数据传输完毕后是这样的。

存储寄存器:

存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新的数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。

在上面的程序中没用到9脚,如果要让2个595串联起来的话,就需要它了。

想一下,我们将移位寄存器的8个位填满后,再往移位寄存器中塞一个会怎么样?也许你想到了。

对!移位寄存器的最后一个位数据会被挤出去,从哪里出去?就是从9脚输出的(第一个595移位寄存器需要8个脉冲,级联的下一个595第一位Q0实际需要第9个脉冲…以此类推)。如果我们把第一个595的

9脚连接到第二个的串行数据输入脚SER,那么,就形成了595的级联。这样,如果我们用2个595组合成了一个新的超级595,

void HC595_SendByte(u32 DATA)
{
u8 i;

for(i=0;i<32;i++)
{

		if((DATA&0x80000000)!=0)      //级联4片74HC595
		{
			HC595_DS_H;                    //第一个输入的位,是并行输出的最后一个位,因此判断条件为假时,DS对应位为0  
		}
		else
		{
			HC595_DS_L;
		}
		CLK_SHCP_L;    
		delay(1);
		CLK_SHCP_H;	  //SHCP: 移位寄存器的时钟输入,当接收到上升沿时移位寄存器内部数据整体后移;
		DATA <<= 1;		 //数据位左移1位,DATA最低位对应并行输出最高位,以此类推,循环将数据写入DS
}
CLK_STCP_H;        //STCP: 数据存储寄存器时钟输入,当检测到上升沿时使能数据存储寄存器,将芯片接收到的数据输出到Q0~Q7 ,Q7S引脚.可以将其理解为锁存信号,当数据发送给芯片完成后对该引脚发送上升沿;
delay(1);
CLK_STCP_L;
delay(1);	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值