单片机按键检测笔记

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

这里写图片描述

在51单片机检测按键下降沿,可以通过以下步骤来实现: 1. 绘制按键的原理图,包括按键和相应的电路连接。 2. 通过编程来实现按键的输入检测。首先,需要进行按键软件消抖,即在按键闭合或断开瞬间加入适当的延时来去除抖动的影响。这可以通过在代码中添加小段延时来实现。然后,需要检测按键操作电平的变化,即在按键按下和松开的瞬间,输入电平会产生抖动。为了准确识别按键的下降沿,可以使用中断方式来检测按键的状态变化。 3. 编写相应的按键检测程序。在程序中,需要设置相应的中断服务函数来处理按键的下降沿触发。当按键按下时,中断服务函数会被调用,并执行相应的操作。可以根据需要进行按键的功能实现。 4. 进行实验,并观察实验结果。通过实验可以验证按键下降沿的检测是否正确,并确认按键的功能是否按预期工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [51单片机学习笔记3 -- 按键输入检测](https://blog.youkuaiyun.com/qq_36955622/article/details/122377663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值