电路图注意:1、P0口里应加上排阻,图里我没画出来。
2、单片机最小系统所需的晶振、复位电路我也没画。
临时帮你做的图,写的程序,细节就不是很完善啦,凑合着看吧!!
下面是程序,_crol_()函数是让temp的值左移一位的即执行一次该函数,temp的值由11111110到11111101,再执行一次是11111011……
_cror_()是右移。
#include<reg51.h>
#include<intrins.h>//包含对_crol_(),_cror_()函数的说明的头文件
unsigned char temp,i;
void delay(unsigned int z)//延时子程序,晶振11.0592M时延时大概1毫秒
{
unsigned int x ,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1)
{
temp=0xfe;
for(i=0;i<8;i++)//流水灯从P0^0口到P0^7口
{
P0=temp;
temp=_crol_(temp,1);
delay(5);
}
i=0;
temp=0xfe;
for(i=0;i<8;i++)//流水灯从P1^0口到P1^7口
{
P1=temp;
temp=_crol_(temp,1);
delay(5);
}
i=0;
temp=0x7f;
for(i=0;i<8;i++)//流水灯从P1^7口到P1^0口
{
P1=temp;
temp=_cror_(temp,1);
delay(5);
}
i=0;
temp=0x7f;
for(i=0;i<8;i++)//流水灯从P0^7口到P0^0口
{
P0=temp;
temp=_cror_(temp,1);
delay(5);
}
i=0;
}
}
花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,