单片机按键检测笔记

单片机检测按键原理:
单片机的的IO口既可以作为输入使用也可作为输出使用,当检测按键时用的是它的输入功能,我们把按键一端接地,另一端与单片机的某个IO口相连,开始时先给该IO口赋一个高电平,然后让单片机不断检测该IO口是否变化为低电平,当按键闭合时,即相当于该IO口通过按键与地相连,变成低电平,程序一旦检测到IO口变为低电平则说明按键被按下,然后执行相应的命令。

独立按键:
直接检测电平高低变化即可,存在抖动现象,一般需要delay()延时确认按键按下,确认按键被按下后,还应该有while(!key)来等待按键释放,若按键没有释放,则key键始终为低电平,程序就一直停在此刻,直到按键释放才去执行接下来相应的代码。
矩阵键盘(4*4为例):
我们先给第一行赋低电平,其余三行为高电平,即0111,1011,1101,1110依次赋值。这时候我们检测列值。0xfe,0xfd,0xfb,0xf7依次与0xf0相与。用switch case判断结果
例如:

P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
    {
        delay(10);
        temp=P3;
        temp=temp&0xf0;
    }
    switch(temp)
    {
        case 0xee:
            key=0;
            break;
        case 0xde;
            key=1;
            break;
        case 0xbe:
            key=2;
            break;
        case 0x7e:
            key=3;
            break;
    }
while(temp!=0xf0)
    {
        temp=P3;
        temp=temp&0xf0);
    }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值