目录
1.按键介绍
轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开
2.通过独立按键控制LED灯亮灭
#include <REGX52.H>
void main()
{
while(1)
{
if(P3_1==0)
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
当P3_1按下时为0,P2_0=0 LED灯亮 ,当P3_1未按下时为1,P2_0=1 LED灯灭
3. 按位与 &
例如 1010 1100 &
1001 1010
------------------------------------
1000 1000
1&1-> 1 1&0-> 0 0&0-> 0
4.按位或 |
例如 1010 1100 |
1001 1010
------------------------------------
1011 1110
1|1-> 1 1|0-> 1 0|0-> 0
5.按位异或 ^
(一样-> 0 不一样-> 1)
例如 1010 1100 ^
1001 1010
------------------------------------
0011 0110
1^1-> 0 1^0-> 1 0^0-> 0
6.按位取反 (~ 1->0 ~0->1)
例如 ~1010 1100->0101 0011
7.按键的抖动
对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动
未按下时高电平,一段时间后稳定,进入低电平
我们可以通过延时函数Delay 进行消抖
8.独立按键控制LED灯状态
#include <REGX52.H>
void Delay(unsigned int xms) //1ms延时函数
{
unsigned char i, j;
while(xms) //xms ms
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20); //延时20 ms
while(P3_1==0); //按下时LED灯不亮 松手时LED灯亮 一直按着不松手LED灯就不会亮
Delay(20);
P2_0=~P2_0; //按位取反 一个周期后灭 亮 灭 亮 灭 亮 灭
}
}
}
9. 独立按键控制LED灯显示二进制
#include <REGX52.H>
void Delay(unsigned int xms) //xms ms
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
unsigned int a =0;
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
a++;
P2=~a; //1 为灭 0为亮 所以取反
}
}
}
由于上电后默认都是高电平
如果是P2++,因为默认都是高电平,P2->1111 1111
P2++->0000 0000
~ P2++->1111 1111
所以定义一个变量a
10. 独立按键控制LED灯移位
LED灯向左移动
定义num
num从0->7 当num==8时 num=0
0x01<<num
取反赋值给P2
LED灯向右移动同理
#include <REGX52.H>
void Delay(unsigned int xms) //xms ms
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
unsigned int num;
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);//消抖
while(P3_1==0); //检测是否松手
Delay(20);//第二次消抖
if(num==8)
{
num=0;
}
P2=~(0x01<<num);//存在运算符优先级
num++;
}
if(P3_0==0)
{
Delay(20);
while(P3_0==0);
Delay(20);
if(num==0)
{
num=7;
}
else
num--;
P2=~(0x01<<num);
}
}
}
谢谢观看
标签:P2,LED,独立,Delay,while,按键,xms From: https://blog.csdn.net/Limerence_Aries/article/details/140107698