1. 独立按键控制LED状态
轻触按键实现原理:按下时,接通,通过金属弹片受力弹动来实现接通和断开。
松开按键
按下之后:就会被连接
同时按下K1和K2时,P2_0,接口所连LED灯才亮。
#include <REGX52.H>
void main()
{while(1){if(P3_1==0 && P3_0==0){P2_0=0;}else{P2_0=1;}}
}
对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动
通过延时20ms可以,逃避按键抖动带来的影响:
#include <REGX52.H>
void Delay(unsigned int xms) //@12.000MHz
{unsigned char data i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}
void main()
{while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);P2_0=~P2_0;}}
}
2.独立按键控制LED显示二进制
默认P2=FF
#include <REGX52.H>
void Delay(int ms) //@12.000MHz
{unsigned char data i, j;while(ms){i = 2;j = 239;do{while (--j);} while (--i);ms--;}
}void main()
{unsigned char LEDNum=0;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;P2=~LEDNum;}}
}
3.独立按键控制LED移位
#include <REGX52.H>
void Delay(int ms) //@12.000MHz
{unsigned char data i, j;while(ms--){i = 2;j = 239;do{while (--j);} while (--i);
}
}
unsigned char LEDNum;
void main()
{P2=~0x01;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;if (LEDNum==8)LEDNum=0;P2=~(0x01<<LEDNum);}if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);if (LEDNum==0)LEDNum=7;elseLEDNum--;P2=~(0x01<<LEDNum);}}
}