51单片机之IO口输入的内部工作原理 ;IO内部电路分析;独立按键实现和消抖

本文详细介绍了51单片机的IO口输入工作原理,包括灌电流和拉电流的概念,以及P1、P2、P3口的内置上拉电阻。在独立按键部分,讨论了输入状态为1和0时的工作电路,并解释了消抖机制。通过代码示例展示了按键功能应用,如按键触发蜂鸣器和数码管操作。
摘要由CSDN通过智能技术生成

51单片机之独立按键

(一)IO口驱动能力:注意:1的时候是驱动电流,0是驱动灌电流
灌电流:在P0口为0V时,支持外接的电源流入的电流为12mA.

灌电流
在这里插入图片描述

如上图所示,当单片机输出低电平时,允许电路向单片机引脚内灌入电流,这个电流就叫做“灌电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“灌电流负载”。

拉电流
在这里插入图片描述
如上图所示,当单片机输出高电平时,允许电路从单片机的引脚拉出电流,这个电流就叫做“拉电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“拉电流负载”

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。用单片机输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电路工作。所以要接上拉电阻
讲人话就是:本来达不到电压要求,在端口又加了一个补充到足够电压的外设,从外设里面来帮助实现高电平。
在这里插入图片描述
P1,P2,P3内部自带上拉电阻,无需再接。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(二)准双向口弱上拉配置

输入为1时工作电路原理:(极弱和弱在工作,电流I=220微安,电压输出U=5V)
在这里插入图片描述
解释,如果是输出,则输出5V ,但是如果从下端输入数据(读取引脚数据),则将把弱给关掉来拉低电压,降低能耗,加快输入速率。
2. ** 输入为0时:**
在这里插入图片描述
3.开启强上拉,当锁存器口由0变为1时,由于上面电路会有两2个CPu的延时,所以在这两个延时时,上面电路的0在两个延时内不会变成1,或门下面电路和上面电路在这两个延时内都为0,此时强上拉导通

(三)强推挽输出模式
在这里插入图片描述

(四)独立按键:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代码:
(按下时动态扫描被打断,松手时接上)


#include"reg52.h"

typedef signed char int8;
typedef signed int  int16;
typedef signed long  int32;
typedef unsigned char uint8;   //字符型
typedef unsigned int uint16;
typedef unsigned long uint32;

sbit key1=P3^7;       //独立按键接口
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;

sbit JDQ = P2 ^ 0;
sbit SHIFT_CLOCK_595 = P1 ^ 4;    //74HC595
sbit data_A_595 = P1 ^ 0;
sbit LATCH_CLOCK_595 = P2 ^ 3;

sbit duanxuan=P2^5;    //段选控制数字显示 
sbit weixuan=P2^6;     //位选控制有几个或者第几个显示数字


//自加变量,用来测试编码表
uint16 test_numb;   //用来记录数值
uint8 zifu_test2; 
uint8 number[8];   //用来存入各个位数
uint8 code zifu[19]={
   0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0X89,0X7F,0XBF};
uint8  code wei_test[8]={
   0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};//位选数组

	void delay(uint16
  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值