9.独立按键

按下接通,松开断开。
在这里插入图片描述
一共四个管脚,两对距离较远的初始状态是导通的,按下之后另外两对才导通。
在这里插入图片描述
TXD接P3.0口,RXD接P3.1口
K1,2,3,4分别接的是P31,P30,P32,P33,另一端共地,即按键按下时端口会被拉低
在这里插入图片描述
内部结构图:
在这里插入图片描述
输入1,则输出1;
输入0,则输出0.
(例如输入1 的时候,非门输出0,二极管不导通,IO直接从VCC输出1;输入0的时候,非门输出1,二极管导通,IO从GND输出0)
闭合和断开时触电存在抖动现象。
在这里插入图片描述
需要软件消抖处理或者硬件消抖电路(如下图)
硬件消抖通过RC充放电时间来实现。(成本较高电路较复杂)
在这里插入图片描述
一般使用软件消抖,延时10ms

使用独立按键k1控制led1的状态反转,按一下反转一下,程序如下:

#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit led=P2^0;//D1
sbit k1=P3^1;//K1

void delay(u16 i)
{
	while(i--);
}
void key()
{
	if(k1==0)
	{
		delay(1000);//延时10ms用于消抖
		if(k1==0)
		{
			led=~led;//实现led的状态反转
			while(!k1);	 //只有k1=1的时候即松开的时候退出
		}
	}
}
void main()
{
	while(1)
	{
		 key();
	}
}

使用独立按键k1控制led1反转,按下时候灭掉,松开亮起,程序如下:

#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit led=P2^0;//D1
sbit k1=P3^1;//K1

void delay(u16 i)
{
	while(i--);
}
void key()
{
	if(k1==0)
	{
		delay(1000);//延时10ms用于消抖
		if(k1==0)
		{
			led=~led;//实现led的状态反转
			while(!k1);//直到松开,循环停止,进行后边的程序
		}
	}
	if(k1==1)	   //用于松开时
	{
		delay(1000);
		if(k1==1)
		{
			led=~led;
			while(k1);//直到闭合,循环停止,进行后边的程序
		}
	}
}
void main()
{
	while(1)
	{
		 key();
	}
}

使用独立按键控制动态数码管是否显示,松开显示按下熄灭:

#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P3^1;

u8 code smgduanxuan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
	while(i--);
}
void saomiao()
{
	u8 i;
	for(i=0;i<8;i++)
	{
		switch(i)
		{
			case 0:LSA=0;LSB=0;LSC=0;break;
			case 1:LSA=1;LSB=0;LSC=0;break;
			case 2:LSA=0;LSB=1;LSC=0;break;
			case 3:LSA=1;LSB=1;LSC=0;break;
			case 4:LSA=0;LSB=0;LSC=1;break;
			case 5:LSA=1;LSB=0;LSC=1;break;
			case 6:LSA=0;LSB=1;LSC=1;break;
			case 7:LSA=1;LSB=1;LSC=1;break;
		}
		P0=smgduanxuan[i];
		delay(100);
		P0=0x00;
	}
} 
void main()
{
	while(1)
	{
		saomiao();
		while(!k1);//当k1=0即按下时,循环进行,程序不往下进行,从而数码管熄灭
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章