编辑代码

#include <stdio.h>
#include "reg52.h"


//定义74HC595控制管脚
sbit SRCLK=P3^6;    //移位寄存器时钟输入
sbit RCLK=P3^5;        //存储寄存器时钟输入
sbit SER=P3^4;         //串行数据输入



char ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

int i;
int n;

void delay(int n)
{
	while(n--);	
}

void main () {
 
P0=0x00;
for(i=0;i<8;i++){
     hc595_write_data(0x00);//消除前面寄存器缓存数据
    jcq(ghc595_buf[i]);
    delay(500);
}



}

void jcq(char c){//寄存器
n=0;
for(n=0;n<8;n++){

SER=ghc595_buf[n]>>7;//取char最后一位
SER=<<1;//排除最后一位
delay(100);

SRCLK=0;
delay(100);
SRCLK=1;//高电平脉冲时候,寄存器中已存数据向下给下一个数据空间,上升沿将端口数据送入寄存器中 

}

RCLK=0;
delay(100);
RCLK=1;//高电平脉冲时候,上升沿将前面写入到寄存器的数据输出

}