单片机控制独立按键读入

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/snyanglq/article/details/50143821
一、什么是轻触开关
轻触通俗的说,就是轻轻接触。因此,轻触开关也可以理解为,轻轻接触开关就可以控制开关的通断,
即轻轻按下开关接通,松开即断开。
它的应用范围很广,在家电设备、楼宇自动化、车载设备、数字影音等多个领域广泛应用。


二、轻触开关寿命与性能测试
在使用寿命方面

国产弹片寿命:约5-7万次 
进口弹片单面复银寿命:大于10万次 
不锈钢弹片大于50万次
一般使用寿命与制作工艺和材料有关
5万次左右(国产磷铜或比较落后的冲压技术)
10万次左右、20万次以上(不锈钢)
按键作为输入设备,在使用中经常使用因此必须要保证其质量,在工业上的产品使用中,我们还要对所选型的按键进行如下试验测试,确保产品的质量,当然,若作为一般的使用则不需如此严格

耐焊性试验、耐冷试验、耐高温试验、耐湿试验、温度交变试验


一般使用高低温箱和温湿度测试箱,或者是二合一功能的测试箱


三、轻触开关按键按下波形

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动图如下:


通过一些电路处理,实际波形也可以整形如下:


四、硬件设计电路图

按键的硬件设计驱动电路非常简单,一般只有三种类型,直接接地,带上拉接地,带下拉接电源,而一般直接接地和带上拉接地用得最多。驱动电路如下图


五、单按键读入程序设计


//************************************************
//函数功能说明:
//判断独立按键输入,低电平有效,当有按键输入时LED
//灯的状态取反,LED灯初态设置为熄灭。
//************************************************
#include<reg52.h>
#define uchar unsigned char 
#define uint unsigned int 

sbit key1=P2^0;
sbit led0=P0^0;

//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
void delay_50us(uint t)
{
 uchar j;
 for(;t>0;t--)
 {
        for(j=19;j>0;j--)
		{
			;
		}
 }
}
//主函数
void main()
{
 led0=1;				//初始化LED灯熄灭
 while(1)
 {
  if(key1==0)			//如果有按键按下
  {
   delay_50us(200);		//消抖
   if(key1==0)			//再次判断是否真有按键按下
   {
	led0=~led0;			//若是LED灯状态取反
	while(!key1)		//按键放手判断
	{
	 delay_50us(200);
	 while(!key1)		//双重判断更加保证,这一重也可以不加
	 {
		delay_50us(200);
	 }
	}
   }
  }
 }
}



猜你喜欢

转载自blog.csdn.net/snyanglq/article/details/50143821