独立按键控制LED亮灭
1、观看引脚图,看到K1、2、3、4都是连接在GND上,所以P30等接收到低电平就是按下了按键。
2、思路整理:按下给一个值,放开给一个值
#include <REGX52.H>
void main()
{
P2 = 0xFF;//初始化LED
while(1)
{
if(P31==0)//检测是否按下
{
P2_0 = 0;//点亮
}
if(P31==1)//检测是否放开
{
P2_0 = 1;//关闭
}
}
}
独立按键控制LED状态
1、思路整理:按一下取反值
2、直接开写:
先用软件延时函数生成一个20ms的函数用于按键消抖,注意系统频率和指令集别选错了
创建main文件,代码如下:
#include <REGX52.H>
void Delay20ms() //@11.0592MHz
{
unsigned char i, j;
i = 36;
j = 217;
do
{
while (--j);
} while (--i);
}
void main()
{
P2=0xFE;//先点亮一个LED
while(1)
{
if(P31==0)//检测是否按下
{
Delay20ms();//消抖
while(P3_1==0);//按键按下然后放开才生效
Delay20ms();//消抖
P2_0 = ~P2_0;//反转LED
}
}
}
独立按键控制LED的二进制显示
思路整理:利用自增符号,由于灯是低电平亮,所以自增后取反
#include <REGX52.H>
void Delay20ms() //@11.0592MHz
{
unsigned char i, j;
i = 36;
j = 217;
do
{
while (--j);
} while (--i);
}
unsigned char Num;
void main()
{
P2=0xFF;//初始化
while(1)
{
if(P31==0)//检测是否按下
{
Delay20ms();//消抖
while(P3_1==0);//按键按下然后放开才生效
Delay20ms();//消抖
Num++;
P2 = ~Num;
}
}
}