C51 独立按键 个人笔记

独立按键类似于一个开关,按下时开关闭合

防抖

C51 独立按键 个人笔记_第1张图片

硬件防抖

C51 独立按键 个人笔记_第2张图片

软件防抖

通过延时,滤掉抖动的部分

电路图

普中科技的开发板,独立按键电路图如下
C51 独立按键 个人笔记_第3张图片

判断按键按下

因此判断是否按下开关的方法是看引脚是否为低电平(按下则接地了)

独立按键控制led和蜂鸣器代码

#include 
typedef unsigned int u16;        
typedef unsigned char u8;
#define delaytime 500000
sbit led = P0^0;
sbit k1 = P1^0;
sbit beep = P0^7;

void delay(u16 i)
{
    while(i--);
}
void ring()
{   
    beep=~beep;
    delay(200); 
}
void keypros()
{
    if(k1==0)      //按键按下
    {
        delay(1000);          //过十毫秒     (防抖)
        if(k1==0)             //还是按下了
        {
            led = ~led;
            
        }
        //  确保一次按键只调用一次keypros
        while(!k1)
        {
            ring();
        }   //按键按下时一直在此处循环,松开时离开,
    }
}
void main(void)
{
    led = 0;  //led is off by default
    while(1)
    {
       keypros();
    }
}

你可能感兴趣的:(C51 独立按键 个人笔记)