流水灯左移8个灯亮然后右移至8个灯亮,再循环
时间:11-19 16:23 阅读:4366次
*温馨提示:点击图片可以放大观看高清大图
简介:深入浅出玩转51单片机——学习笔记:Led流水灯
实现功能:用左移和右移实现流水灯由右向左,然后由左向右循环移动
硬件接线:Led 接P1口
晶振频率:11.0592Mhz
#include<reg52.h>
#define uint unsigned int
void delay(uint z); //函数声明
void main(void)
{ uint i;
while(1)
{ P1=0XFF;
for(i=0;i<17;i++)//本来左右循环一遍共需要16次,但是因为在i=8时 P1=0XFF没有右移所以写i<17不是16
{ if(i<=8)
{ if(i<8) //左移的过程
{ P1<<=1;
delay(1000);
}
else
P1=0XFF;//为右移赋初值
}
else
{ P1>>=1;//右移的过程
delay(1000);
}
}
}
}
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<113;y++);
}
通过此实验学会了左移,右移,宏定义,函数声明for语句if..else 嵌套语句,的使用。在调试的过程中遇到了以下错误并独自解决了:P一点要大写;注意if..else 嵌套语句的{}是否配对;当延时时间超过255时要用unsigned int不能再用unsigned char 了。