流水灯的花式点亮
注释:所用单片机为普中51-单核-A2开发板,所用接口以实际开发板为准
注:晶振频率11.0592
1.点亮一个LED
#include<reg52.h>
sbit LED1=P2^0;
void delay(unsigned int a)//延时函数 (可根据晶振频率较为准确计算延时时间)
{
while(a--);
}
int main()
{
while(1)
{
LED1=0;
delay(65535);
LED1=1;
delay(65535);
}
return 0;
}
2.依次全部点亮八位LED灯,再全部熄灭再点亮;
#include<reg52.h>
sbit LED1=P2^0;
void delay(unsigned int a)//延时函数 (可根据晶振频率较为准确计算延时时间)
{
while(a--);
}
int main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P2=P2<<1;
delay(65535);
}
P2=0xff;//对应八位二极管1111 1111,使二极管全部为高电平,达到熄灭目的
delay(65535);
}
return 0;
}
3.实现流水灯的循环点亮
#include<reg52.h>
#include<intrins.h>//_crol_左移(left),_cror_右移(right)包含再intrins.h函数中
#define LED P2
void delay(unsigned int a)//延时函数 (可根据晶振频率较为准确计算延时时间)
{
while(a--);
}
int main()
{
unsigned char i;
LED=0xfe;//转换成二进制为1111 1110,给其中第一个送低电平,点亮第一个LED
delay(65535);
while(1)
{
for(i=0;i<7;i++)
{
LED=_crol_(LED,1);//在_crol_(m,n)中,m为移动的对象,n为移动的位数
delay(65535);
}
for(i=0;i<7;i++)
{
LED=_cror_(LED,1);
delay(65535);
}
}
return 0;
}
注:上述所有代码都经过开发板测试,可直接复制使用