#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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
可以流水只是顺序不对 ,为什么是右移temp>>=1 为了让第一个灯亮 我们不是要将0XFE(1111 1110)左移8位吗? 这样Q7Q6Q5Q4Q3Q2Q1Q0才是(1111 1110)啊
一周热门 更多>