目录
- 0x00 74595芯片简介
- 0x01 实现原理
0x00 74595芯片简介
74595芯片有很多种封装,不管是贴片的还是直插式的,它们的引脚定义都如下图所示:
其中 :
- Q0-Q7为并行数据输出口,可以输出高低电平。
- OE 为使能引脚,低电平有效
- DS 为串行数据输入引脚,也称SER,也就是你用于输入数据的引脚
- MR为复位引脚,将其拉低可以清空数据
- STCP在上升沿时,数据从移位寄存器转存到存储寄存器
- SHCP在上升沿时,数据移位,并且可以接收新的数据(从DS引脚输入)
- Q7S为串行数据输出引脚,这个引脚可以用于级联其他的74595芯片。
其工作原理为,74595内部有两个8位的寄存器,其中一个用于存储,一个用于移位输入新的数据,74595将根据用于存储的8位寄存器内容,8个引脚按位依次输出对应的电平值。
0x01 实现原理
以下将介绍如何编写函数向74595发送一个字节的数据,如果需要控制两个74595芯片,将这个函数调用两次即可。
实现的原理都在代码之中,结合引脚介绍即可看懂
void SendTo595(uint8_t byteData)
{int i=0;uint8_t SER;for(;i<8;i++){//判断最高位数据是 0 或 1SER = (byteData>>7) & 0x01; if(SER)gpio_bit_set(GPIO_PORT_SER,GPIO_PIN_SER);elsegpio_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);
}