74HC595的学习

一: 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; 

}

猜你喜欢

转载自blog.csdn.net/qq_41379312/article/details/78872536