标题:
利用开发板上的开关及可受单片机IO脚控制的发光二极管 求分析
[打印本页]
作者:
1279095941
时间:
2020-9-22 22:56
标题:
利用开发板上的开关及可受单片机IO脚控制的发光二极管 求分析
//项目:
利用开发板上的
开关
及可受单片机
IO脚控制的
发光二极管,上电的时候,
L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。
//问题:如果删去第2,3,4个灯的代码,第一个灯就可以按下亮,但是加上后就全不亮了,也没有语法错误,我想知道我的问题出在哪里。
//我是一个初学者,还没有掌握这门技术,希望论坛的大哥们看到这么弱智的问题不要动怒,谢谢您们!!!!
单片机源程序如下:
#include<reg52.h>
sbit sp1=P3^0;
sbit sp2=P3^1;
sbit sp3=P3^2;
sbit sp4=P3^3;
void delay(int z)
{
int x,y;
for(x=z;x>0;x-- )
for(y=114;y>0;y--) ;
}
void main()
{
if(sp1==0)
{
delay(10);
if(sp1==0)
{P1=0xfe;
delay(5);}
while(1);
}
if(sp2==0)
{
delay(10);
if(sp2==0)
{P1=0xfd;
delay(5);}
while(1);
}
if(sp3==0)
{
delay(10);
if(sp3==0)
{P1=0xfb;
delay(5);}
while(1);
}
if(sp4==0)
{
delay(10);
if(sp4==0)
{P1=0xf7;
delay(5);}
while(1);
}
}
作者:
cuihaodianzi
时间:
2020-9-23 00:07
{P1=0xfe;
delay(5);}
这个时候他不会闪 ,如果共电源的,LED只会亮,然后延时 ,还是亮着,0xFE = 1111 1110
{
P1 = 0xFE;
delay(5);
P1 = 0xFF;
delay(5);
}
这样 LED 先亮 延时 再灭 再延时 看着就是 闪了 ;后面的都一样
作者:
xianfajushi
时间:
2020-9-23 12:56
while(1);修改while(sp1==0);
作者:
wulin
时间:
2020-9-23 15:12
每按一次开关SP1,LED1~LED4轮流闪烁,以此反复。
#include<reg52.h>
sbit sp1=P3^0;
//sbit sp2=P3^1;
//sbit sp3=P3^2;
//sbit sp4=P3^3;
char i=0;
int j=0;
void delay(int z)
{
int x,y;
for(x=z;x>0;x-- )
for(y=114;y>0;y--) ;
}
void main()
{
while(1)
{
if(sp1==0)
{
delay(10);
if(sp1==0)
{
i++;
if(i>=4)
i=0;
}
while(!sp1);
}
j++;
if(j>=20000)
j=0;
if(j<10000)
P1=~(0x01<<i);
else P1=0xff;
}
}
复制代码
作者:
长风007
时间:
2020-9-23 17:21
问题在while(1);上。多调试两次的。
作者:
1279095941
时间:
2020-9-23 21:51
xianfajushi 发表于 2020-9-23 12:56
while(1);修改while(sp1==0);
谢谢哦,改了之后就可以了,您能解释一下为啥吗?
作者:
xianfajushi
时间:
2020-9-24 09:49
while(1);是无限循环while(sp1==0);是等待按键释放
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1