单片机按键检测笔记

单片机检测按键原理:
单片机的的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);
    }

这里写图片描述

发布了69 篇原创文章 · 获赞 75 · 访问量 20万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览