一:
74HC595芯片的作用:把串行信号转为并行的信号,节约了单片机的I/O口资源
二:各引脚的作用:
Q0~Q7:接需要控制的器件,如各盏流水灯
Q7':接下一个芯片的DS端口
DS(14引脚):串行数据输入端
SH_CP(11引脚): 数据输入时钟线——当该引脚上产生一个上升沿时,将DS上的数据移入到74HC595移位寄存器中,先送低位,后送高位(数据移位顺序:以第一个数据进入芯片为例:DS-Q0-Q1......-Q7-Q7')
ST_CP(12引脚):输出存储器锁存时钟线——当该引脚上产生一个上升沿时,将已移入数据寄存器中的数据送入到锁存器
10引脚:MR,低电平时,清空移位寄存器中已有的bit数据,一般不用,接 高电平即可
13脚:OE,
输出使能控制脚,它是低电才使能输出,所以接GND
三:用74HC595点亮一闪一灭灯程序
#include<reg51.h>
#include<intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
/**********函数声明********************/
void SendTo595(uchar byteData);/***********************************/
sbit SER = P3^4; //p3.4脚控制串行数据输入
sbit SCK = P3^6; //串行输入时钟
sbit RCK = P3^5; //存储寄存器时钟
void main()
{
SendTo595(85); //85的二进制:0101 0101
while(1);
}
//功能:发送一个字节的数据给595,再并行输出
void SendTo595(uchar byteData)
{
char i=0; for(;i<8;i++)
{
SER = byteData>>7; //大家自己考量这2句
byteData= byteData<<1;
SCK = 1; //上升沿,让串行输入时钟变为高电平,并延时2个时钟周期
_nop_();
_nop_();
SCK = 0; //变为低电平,为下次准备
}
/*位移寄存器数据准备完毕,转移到存储寄存器*/
RCK = 1; //上升沿,让存储寄存器时钟变为高电平,并延时2个时钟周期
_nop_();
_nop_();
RCK = 0;
}