74HC595的介绍及三联级电路的连接请大家看其它朋友的有关介绍,网上很多的。
/*********************************************
程序名称:C51+74HC595三联级LED流水灯(共阳级)
实验主机:STC15W408AS
**********************************************/
#include<>
#include<>
#define uc unsigned char
#define ut unsigned int
sbit SER=P1^0; //串口输入数据
sbit S_CLK=P1^1; //移位寄存器时钟
sbit R_CLK=P1^2; //存储寄存器时钟
void delay(ut t)
{
while(t--);
while(t--);
}
uc temp;
uc code DSY_CODE[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
void SRCLK_595() //向74HC595发送数据的一个字节
{
uc i;
for(i=0;i<8;i++) //依次发送8位数
{
temp<<=1; //数据左移一位
SER=CY;
S_CLK=1; //移位寄存器时钟置高电平,上升沿有效,移入一位数据
_nop_(); //延时函数,系统自带
_nop_();
S_CLK=0;
}
}
void RCLK_595() //向74HC595存储寄存器发送数据。
{
R_CLK=0;
_nop_();
R_CLK=1; //存储寄存器时钟置高电平,上升沿有效,存入数据
_nop_();
R_CLK=0;
}
void main()
{
uc i;
while(1)
{
for(i=0;i<24 ;i++)
{
temp=DSY_CODE[i];
SRCLK_595();
RCLK_595(); //因使能管脚13接高电平,新数据存入前LED将显示
delay(50);
}
}
}