单片机之89c52独立按键 -----学习笔记

一、按键介绍

轻触开关是一种电子开关。

使用:轻按开关按钮可使电路接通、松开,开关断开

 

二、独立开关工作原理

按键断开和闭合时,触点会存在抖动现象。

 

 

 

P0口为了实现三态,采用OC(集电极悬空输出)输出,这种电路结构,只有下拉能力,高电平输出没有电流,在高电平时表现为高阻态;加上上拉电阻,就会失去高阻态,变成 1、0 两态(通俗的说就是加上上拉电阻的目的是控制高低电平,不加上拉电阻只用高电平(状态:1),呈高阻态,没有低电平(状态:0)。

 

NOT(非门):高电平通过变为低电平,低电平通过变为高电平。

2.1、消除按下/松开按键抖动的电路

 

 

 

 

 

 

三、代码

#include <reg52.h>


typedef unsigned char u8;
typedef unsigned int  u16;

sbit led=P2^0;	        // led 灯连接的管脚
sbit k1 = P3^1;         // RXD(接收数据)  连接k1 k1连接在P31
/*延迟函数*/
void delay(u16 i){      // int 类型的i
    while(i--);         // i自减
}

/*自定义函数*/
void keypros(){         // 按键 
    if(k1==0){	        // 判断P31口是否是低电平
/* 软件消抖	*/
    delay(1000);	    // 延迟约为10毫秒
	if(k1==0){
	led =~led;          //  取反	 状态反转		   
	          }
	while(!k1);         // 按键松开
			  }
	} 
void main(){
	  while(1){
	  keypros();
	 /* led = 0;       // 低电平点亮 LED灯
	  delay(50000);  // 延迟450ms,可以看到效果
	  led=1;	     // 高电平 熄灭LED
	  delay(50000);	 // 延迟450ms
	  */
	  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭日初扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值