标题:
求解如何使用单片机制作控制灯亮灭
[打印本页]
作者:
971616539
时间:
2018-1-25 17:50
标题:
求解如何使用单片机制作控制灯亮灭
开关按第一次 灯1亮,按等二次灯1关灯2亮,按第三次灯1和2同时亮,再按一次关闭
作者:
xdl932365660
时间:
2018-1-25 21:04
加我QQ,可以给你写一个
作者:
niehaitao
时间:
2018-1-25 22:58
你试试这个
#include<reg52.h>
sbit led1=P0^0;
sbit led2=P0^1;
sbit K1=P3^2;
sbit SJ=P1^4; //LED发光管的使能端
void delayms(unsigned int xms) //延时子程序
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--); //i=xms即延时约xms毫秒
}
void main() //主函数
{
unsigned char a=0;
SJ=0; //开LED总使能
while(1) //大循环
{
if(K1==0) //检测按键是否按下
{
delayms(1); //稍作延时
if(K1==0) //再次检测按键是否按下即消除按键抖动
{
a++;
if(a==4)
a=0;
}
while(!K1); //松手检测
delayms(1);
while(!K1);
}
switch(a)
{
case 1:
led1=0,led2=1;
break;
case 2:
led1=1,led2=0;
break;
case 3:
led1=0,led2=0;
break;
case 4:
led1=1,led2=1;
break;
default:
led1=1,led2=1,a=0;
break;
}
}
}
作者:
niehaitao
时间:
2018-1-26 11:25
刚才又在实验板上试了下,把两个按键消抖后的延时增加到10后更稳定,改成 delayms(10); //稍作延时
1会延时不够,偶尔会乱跳,我也在学习中,让大神们见笑了
作者:
niehaitao
时间:
2018-1-26 11:26
//开关按第一次 灯1亮,按等二次灯1关灯2亮,按第三次灯1和2同时亮,再按一次关闭
#include<reg52.h>
sbit led1=P0^0;
sbit led2=P0^1;
sbit K1=P3^2;
sbit SJ=P1^4; //LED发光管的使能端
void delayms(unsigned int xms) //延时子程序
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--); //i=xms即延时约xms毫秒
}
void main() //主函数
{
unsigned char a=0;
SJ=0; //开LED总使能
while(1) //大循环
{
if(K1==0) //检测按键是否按下
{
delayms(10); //稍作延时
if(K1==0) //再次检测按键是否按下即消除按键抖动
{
a++;
if(a>=4)
a=0;
}
while(!K1); //松手检测
delayms(10);
while(!K1);
}
switch(a)
{
case 1:
led1=0,led2=1;
break;
case 2:
led1=1,led2=0;
break;
case 3:
led1=0,led2=0;
break;
case 4:
led1=1,led2=1;
break;
default:
led1=led2=1,a=0;
break;
}
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1