单片机的一点小问题,求大神解答
我程序是这样写的现在我想要这八盏流水灯从左往右一次亮起再从右往左一次亮起然后隔一个亮最后全亮程序改怎么修改!!!#include<reg52.h>voiddelay(un...
我程序是这样写的 现在我想要这八盏流水灯从左往右一次亮起 再从右往左一次亮起 然后隔一个亮 最后全亮 程序改怎么修改!!!
#include<reg52.h>
void delay(unsigned char i)
{unsigned j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void main()
{
while(1)
{
P0=0x00;
delay(1000000);
P0=0xfe;
delay(1000000);
P0=0xfd;
delay(1000000);
P0=0xfb;
delay(1000000);
P0=0xf7;
delay(1000000);
P0=0xef;
delay(1000000);
P0=0xdf;
delay(1000000);
P0=0xbf;
delay(1000000);
P0=0x7f;
delay(1000000);;
}
} 展开
#include<reg52.h>
void delay(unsigned char i)
{unsigned j,k;
for(k=0;k<i;k++)
for(j=0;j<255;j++);
}
void main()
{
while(1)
{
P0=0x00;
delay(1000000);
P0=0xfe;
delay(1000000);
P0=0xfd;
delay(1000000);
P0=0xfb;
delay(1000000);
P0=0xf7;
delay(1000000);
P0=0xef;
delay(1000000);
P0=0xdf;
delay(1000000);
P0=0xbf;
delay(1000000);
P0=0x7f;
delay(1000000);;
}
} 展开
展开全部
这个程序现在看,delay函数应该没什么问题,关键就是你的LED和单片机连接的方式是共阴极还是共阳极,也就是你现在让P0的任何一个引脚输出是1,该引脚对应的LED是亮还是灭,然后让每一位对应的数与你的期望结果列一个表,按你所需依次排列即可,按你的语法来看应该再由低到高排列组成16进制的形式如0x00等。while中的改法就是
{1亮-delay-1灭-delay-...-8亮-delay-8灭-全亮-delay},这样就可以实现你所说功能的循环出现,就是每次操作后都要加delay,否则你看不到变化。
另外:如果你用的51单片机的P0口共阴极驱动的话可能驱动电流的能力不够,一般用P1口。
{1亮-delay-1灭-delay-...-8亮-delay-8灭-全亮-delay},这样就可以实现你所说功能的循环出现,就是每次操作后都要加delay,否则你看不到变化。
另外:如果你用的51单片机的P0口共阴极驱动的话可能驱动电流的能力不够,一般用P1口。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询