74HC595 8位移位寄存器介绍
74HC595是使用非常普遍的一个移位寄存器芯片,由TI公司提供。其主要功能是串转并,即通过串行信号输入转为并行信号输出,用于单片机引脚资源不足时补充引脚的作用,在数码管、继电器网络等的控制中广泛使用。其较宽的操作电压(2-6 V)使其可以使用在5V或3.3V的单片机系统中。有时,也可以避免单片机过多过长的走线。
1. 引脚定义

其中,Q0-Q7是8位输出端;
VCC和GND分别为电源和接地;
Q7’是串行输入数据输出端(可以用于多个74HC595的级联);
ST_CP并行输出控制开关,高电平时触发;
SH_CP串行输入时钟,控制移位寄存器,高电平触发做一次移位;
MR低电平时数据清零,一般接高电平;
OE是使能端,高电平高阻态,输出禁止,一般接低电平。
2. 参考电路

2. 驱动代码
sbit SRCLK1=P2^0;
sbit RCLK1=P2^1;
sbit SER1=P2^2;
void HC595SendByte(unsigned char dat1)
{
u8 a;
SRCLK1=0;
RCLK1=0;
for(a=0;a<8;a++)
{
SER1=dat1>>7;
dat1<<=1;
SRCLK1=1;
_nop_();
_nop_();
SRCLK1=0;
}
RCLK1=1;
_nop_();
_nop_();
RCLK1=0;
}
3. 74HC595级联
3.1 级联方式一

SH_CP和ST_CP公用时钟脉冲,这样仅需要三个引脚就可以完成级联,但缺点是后面的输出可能会有延迟(当然也可以在串行输入完成后所有芯片同时输出,就不会有延迟)。
3.2 级联方式二

公用SH-CP、ST_CP,每个芯片分配不同的DS引脚,这样做的好处是每个芯片的输出认为可控且同步。
3.3 级联驱动代码
sbit SRCLK1=P2^0;
sbit RCLK1=P2^1;
sbit SER1=P2^2;
sbit SER2=P2^3;
sbit SER3=P2^4;
sbit SER4=P2^5;
void Hc595SendByte(unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4)
{
u8 a;
SRCLK1=0;
RCLK1=0;
for(a=0;a<8;a++)
{
SER1=dat1>>7;
SER2=dat2>>7;
SER3=dat3>>7;
SER4=dat4>>7;
dat1<<=1;
dat2<<=1;
dat3<<=1;
dat4<<=1;
SRCLK1=1;
_nop_();
_nop_();
SRCLK1=0;
}
RCLK1=1;
_nop_();
_nop_();
RCLK1=0;
}
以上。

参考:简述74HC595功能_lgzisme的博客-CSDN博客
|