OE:当OE置0时该模块才能正常工作
使用模块前需先将模块初始化,将SRCLK和RCLK都置0
串转并移位寄存器工作原理图
当收到外界的一个数据date时(16进制数),取其第8位放入SER,将SRCLK置1,让移位寄存器向下移动一位,将SER中的数据装入移位寄存器最顶端,然后将SRCLK置0。再取date的第7位放入SER,将ERCLK置1,让移位寄存器向下移动一位,再将SRCLK置0。此时,date的第7位位于移位寄存器的最顶端,第8位位于第7位的下面,重复以上步骤,循环8次后date被存入移位寄存器,此时将RCLK置1,将移位寄存器中的date送到QX各个端口,再将RCLK置1,以便下一个date的发送,这就完成了串行通信转并行通信
相关代码如下:
#include <regx52.h>
sbit RCK=P3^5; //RCLK
sbit SRCLK=P3^6;
sbit SER=P3^4;
void HC595_write_date(unsigned char date)
{
unsigned char i;
SRCLK=0;
RCK=0;
for(i=0;i<8;i++)
{
SER=date&(0x80>>i); //date对应位为1则SER=1,若对应位为0,则SER=0,由高到低依次取相应位数值
SRCLK=1; //向下移动一位后,将SER的值写入移位寄存器
SRCLK=0; //将SRCLK置0,以便下一个数据的存入
}
RCK=1; //将移位寄存器中的数据送入各个端口
RCk=0;
}