74595芯片有很多种封装,不管是贴片的还是直插式的,它们的引脚定义都如下图所示:
其中 :
其工作原理为,74595内部有两个8位的寄存器,其中一个用于存储,一个用于移位输入新的数据,74595将根据用于存储的8位寄存器内容,8个引脚按位依次输出对应的电平值。
以下将介绍如何编写函数向74595发送一个字节的数据,如果需要控制两个74595芯片,将这个函数调用两次即可。
实现的原理都在代码之中,结合引脚介绍即可看懂
void SendTo595(uint8_t byteData)
{
int i=0;
uint8_t SER;
for(;i<8;i++)
{
//判断最高位数据是 0 或 1
SER = (byteData>>7) & 0x01;
if(SER)
gpio_bit_set(GPIO_PORT_SER,GPIO_PIN_SER);
else
gpio_bit_reset(GPIO_PORT_SER,GPIO_PIN_SER);
byteData= byteData<<1;
//上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
gpio_bit_set(GPIO_PORT_SCK,GPIO_PIN_SCK);/
delay_1us(5);
gpio_bit_reset(GPIO_PORT_SCK,GPIO_PIN_SCK);//变为低电平,为下次准备
}
/*位移寄存器数据准备完毕,转移到存储寄存器*/
//上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
gpio_bit_set(GPIO_PORT_RCK,GPIO_PIN_RCK);
delay_1us(5);
gpio_bit_reset(GPIO_PORT_RCK,GPIO_PIN_RCK);
}