C51+74HC595三联级流水灯

时间:2025-03-07 15:43:46

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);
        }
    }
}