74HC595控制8个LED流水灯 实现不了功能

2019-07-15 18:37发布

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
uint i;
void delay(uint);
void WR_5951();
void OUT_5951();
sbit SH_CP=P0^0;
sbit ST_CP=P0^2;
sbit DS=P0^1;
uchar code TB[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
/*将数据输入移位寄存器*/
void WR_5951()
{ SH_CP=0;
  for(i=0;i<8;i++)
   {temp=temp<<1;
    DS=CY;
    SH_CP=1;
    SH_CP=0;
   }
}
/*将数据输入寄存器并输出*/
void OUT_5951()
{ ST_CP=0;
  ST_CP=1;
  delay(1);
  ST_CP=0;
  delay(1);
}
/*延时子程序delay(100)约延时1S*/     
void delay(uint z)
{
   uint x,y;
   for(x=1760;x>0;x--)
   for(y=z;y>0;y--);

}
/*主程序*/
void main()
{   
for(i=0;i<8;i++)
        {
            temp=TB[i];
                 WR_5951();
                 OUT_5951();
       delay(1000);
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
157442843
2019-07-17 18:40
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit SH_CP=P0^0;
sbit ST_CP=P0^2;
sbit DS=P0^1;
uchar code TB[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Delay100us()                //@12.000MHz
{
        unsigned char i;

        _nop_();
        i = 47;
        while (--i);
}
/*延时子程序约延时1S*/     
void Delay1000ms()                //@12.000MHz
{
        unsigned char i, j, k;

        _nop_();
        i = 8;
        j = 154;
        k = 122;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

/*将数据输入移位寄存器*/
void WR_5951(uchar temp)
{
unsigned char i;
  for(i=0;i<8;i++)
   {
    SH_CP=0;
        Delay100us();
    DS=temp&0x01;
    temp>>=1;
    SH_CP=1;
        Delay100us();   
   }
   SH_CP=0;
}
/*将数据输入寄存器并输出*/
void OUT_5951()
{
  ST_CP=0;
  Delay100us();
  ST_CP=1;
}
/*主程序*/
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
        {            
                 WR_5951(TB[i]);
         OUT_5951();
         Delay1000ms();
        }
}
}
//试下看行不!

qq.JPG

一周热门 更多>