单片机控制led灯点亮第三个和第八个灯亮(单片机控制led灯点亮第三个和第八个灯亮怎么回事)
单片机实验点亮流水灯程序从第三个灯开始循环点亮 一个共有8个灯哦
at89s52也是51系列的单片机,程序完全兼容,用51的程序就行了,包括外围电路也一样,直接用就行了。
单灯亮就是在io口输出一个二进制数中只有一位不同的数,比如说“00000001”,就只有最后一位是“1”,其余的都是“0”,要双灯亮就使其中的两位与其他的不同就行了,还是那上面的例子来说,现在改成“00000011”,这样有两位是不用的了,当然不同的两位也可以不挨着,比如“00100001”,这样也是两位同时点亮。(例子的前提是输出高电平时led点亮,如果不是的话就把里面的“0”改成“1”,“1”改成“0”就行了。)
你有源程序吗,有的话发到我邮箱里,我帮你改吧,这方面你一点不懂,这样问下去也不会有什么进展的了,邮箱发到你的"百度hi"上了。
单片机实验 led从第3个亮到第8个然后在从从第一个开始循环亮
从第1个开始循环亮显然是一个循环,而且是一个死循环。
而从第三个亮到第8个只是循环初值问题。
以下语句您自己调试一下吧。
循环变量i 用移位的方法。当某位为1相应LED点亮。
i=4 ;二进制位100,即第三个灯亮。
unsigned char i=4;
while(1)
{
P0=i;//点亮一个
delay(1000); //延时,不延时您速度太快您看不到点亮过程。
i = i + i ; //乘2相当于左移。
if (i==0) i=1;//重新从第一个LED开始
}
单片机控制8个led灯交替点亮的程序?
#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //点亮第一个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xfd; //点亮第二个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xfb; //点亮第三个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xf7; //点亮第四个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xef; //点亮第五个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xdf; //点亮第六个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0xbf; //点亮第七个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
P1=0x7f; //点亮第八个LED
for(i=200;i0;i--)
for(j=500;j0;j--);
}
}
或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i0;i--)
for(j=110;j0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i8;i++)
{
P1=w; //循环点亮LED
w=1; //点亮灯的位置移动,最低位补0
w=w|0x01; //将最低位置1
delay(500); //延时
}
}
}
或:
#include "reg51.h"
//程序中使用_crol_函数,所以要包含头文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i0;i--)
for(j=110;j0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延时
temp=_crol_(temp,1); //点亮LED的位置循环左移一位
}
}
单片机控制led灯点亮第三个和第八个灯亮的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机控制led灯点亮第三个和第八个灯亮怎么回事、单片机控制led灯点亮第三个和第八个灯亮的信息别忘了在本站进行查找喔。微信号:ymsc_2016
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~