标题:
单片机左右循环流水灯
[打印本页]
作者:
fanhaiyu
时间:
2017-11-19 12:05
标题:
单片机左右循环流水灯
原理图:
TIM图片20171119120439.png
(37.52 KB, 下载次数: 27)
下载附件
2017-11-19 12:05 上传
单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
unsignedchar temp; //定义字符变量temp,temp左移或右移并给连接LED的P1口赋值
inta; //定义延迟函数delay()
voiddelay(void);
voidmain()
{
temp=0xfe; //给temp赋初值
P1=temp; //temp赋值给P1口,第一个LED(红色)点亮
while(1) //主程序,括号中的程序将一直循环
{
for(a=0;a<7;a++) //左移部分,LED从左到右依次点亮
{
temp=_crol_(temp,1); //_crol_语句控制变量temp左移
delay(); //每个灯点亮之后延迟一会在点下一个灯
P1=temp;
}
for(a=0;a<7;a++) //右移部分,LED从右到左依次点亮
{
temp=_cror_(temp,1); //第8个灯点亮后开始右移程序,LED从右向左点亮
delay();
P1=temp;
}
}
}
voiddelay() //延时子程序
{
int i,j; //定义局部变量i,j
for(i=200;i>0;i--) //i,j不断计数占用CPU时间,达到延时目的
for(j=1;j<150;j++);
}
复制代码
作者:
garrett_li2020
时间:
2020-12-2 14:44
你这个程序不对的,第一个for执行完成后,你第二个for再给for为0,只会执行一次第二个for语句后又回到第一个for循环,左右流水灯效果达不到的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1