独立按键的原理及代码实现

以下为按键的实物图:在按键未按下之前,距离远的两个管脚是相通的,按键按下之后,距离近的的两个管脚是相通的。

独立按键的原理:(准双向IO口就是内部有上拉电阻,P1,P2,P3口都是准双向IO口。P0口没有上拉电阻。

                                                      图1                                                                                                      图2                                                                         图3

图1为独立按键的内部电路图,图2为按键按下和放开时的波形图,图3为硬件消抖电路图(这种方法的成本比较高,通常我们使用的是软件消抖)。

 代码简单实现:

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;

sbit led=P2^0;
sbit k1=P3^1;

void delay(u16 i)
{
      while(i--);       
}

void keypros()
{
      if(k1==0)
      {
             delay(1000);
             if(k1==0)
             {
                    led=~led;
             }
             while(!k1);
      }
}

void main()
{
      while(1)
      {
             keypros();
      }
}
原文地址:https://www.cnblogs.com/czz0508/p/10493879.html