小白上路之51单片机(STC89C52)--按键


按键介绍

实物图 VS 原理图:
在这里插入图片描述

独立按键

独立按键原理

在这里插入图片描述
  四个按键的一端全部供地。默认状态下(按键未按下时),按键的各个管脚并非完全导通(参见按键原理图);按下按键后,相应的单片机端口都会被拉低(因为P3口是准双向IO口)。
  如下图,为准双向IO结构图:
准双向IO结构图
  由上图可得,NPN三极管发射极接地,基极连着非门,集电极连接着一个上拉电阻R,这便是其内部结构图。
  而单片机IO口则是从集电极引出:当按键按下,低电平就会通过IO口,通过内部输入,进入单片机使其拉低;默认情况下(即按键未被按下,IO口默认为高电平),通过外部的4.7K的上拉电阻,输出高电平,即使没有该外部的上拉电阻,也仍为高电平,因为其内部有上拉电阻接在VCC上。
  注:P1、P2、P3口都是准双向IO口,即内部都具有上拉电阻,而P0口是漏极开路,内部无上拉,直接通过集电极接到单片机IO口。因此P0口全部都要加上拉,而P1、P2、P3口加上拉是为了提高单片机IO口的驱动能力。
分析一下如何输出高低电平:
1.针对P1、P2、P3口,即内部有上拉。

  假设内部输出为1,通过非门后变为0,此时三极管不会导通(发射极接地也为低电平,无电压差),由于内部有上拉,则电源从VCC出来,到IO口会输出高电平。即内部输出为高电平,IO口输出也为高电平。
  假设内部输出为0,通过非门后则为1,此时三极管导通(发射极与集电极连通),由于发射极接地,故输出为低电平。即内部输出为低电平,这=则IO口输出也为低电平。

2.针对P0口,即内部无上拉。
  假设内部输出为1,通过非门后变为0,同理三极管不会导通,由于内部无上拉,则IO口无法输出,若要让其输出,则需要在外部加上一个上拉电阻,此时才会输出一个高电平。内部输出为0则同理。

下面来说一说关于按键抖动现象。
  按键在闭合和断开时,触电会存在抖动现象——一般可通过软件消抖的方法解决即延时后再次判断按键是否按下。(也可通过硬件电路消抖)

在这里插入图片描述

源程序–独立按键

按下按键K1,点亮led1,再次按下,led1被熄灭。

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

sbit L1=P2^0;
sbit K1=P3^1;

void delay(u16 i)
{
   
	while(i--);
}
void keypros
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值