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条回答
2474344106
1楼-- · 2019-07-15 23:45
这是图   仿真开始8个LED一起亮 并不是逐一亮 并延时10秒
QQ图片20140902221920.jpg
157442843
2楼-- · 2019-07-16 05:11
#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};

/*延时子程序delay(100)约延时1S*/     
void delay(uint z)
{
   uint x,y;
   for(x=1760;x>0;x--)
   for(y=z;y>0;y--);

}
/*将数据输入移位寄存器*/
void WR_5951(uchar temp)
{
  for(i=0;i<8;i++)
   {
    SH_CP=0;
    DS=CY&0x01;
    temp>>=1;
    SH_CP=1;   
   }
}
/*将数据输入寄存器并输出*/
void OUT_5951()
{
  ST_CP=0;
  _nop_();
  ST_CP=1;
}
/*主程序*/
void main()
{
uchar i;
whlie(1)
{
for(i=0;i<8;i++)
        {            
         WR_5951(TB[i];);
          OUT_5951();
         delay(1000);
        }
}
}
试下看行不!
157442843
3楼-- · 2019-07-16 06:20
P0口要上拉电阻才行!换其端口试一下!
阿信509
4楼-- · 2019-07-16 09:00
 精彩回答 2  元偷偷看……
cccsssc
5楼-- · 2019-07-16 11:08
上拉电阻会不会是一个因素呢?
2474344106
6楼-- · 2019-07-16 12:57
157442843 发表于 2014-9-2 23:41
#include
#include
#define uint unsigned int

不用声明 WR_5951 和 OUT子函数么?  除了这些 还有些小错误  我刚刚编译仿真了 和我原来的那个结果是一样的 一下全亮了

一周热门 更多>