51单片机6(P0P1P2P3结构框架图)

一、GPIO结构框架图与工作原理

1、接下来我们介绍一下这个GPIO结构框图和工作原理,我们使用51单片机的GPIO分为了P0,P1,P2,P3这四组端口,下面我们就分别来介绍这四组端口它的一个内部结构,只有了解了内部的结构,对于我们单片机的IO口的一些使用会非常清楚。

2、P0端口

(1)那我们列举的是这个P0端口的一个内部结构框图,从这张图我们可以看到,它是有锁存器,还有输入缓冲器,以及切换开关。一个非门,一个与非门,以及场效应管,它这些组成的驱动电路构成。这个图当中的最左边,最右边是标记的是这个引脚,这个引脚是我们肉眼可以看到的芯片的引脚,那么这个引脚,是左边这一部分是芯片封装内部的一些东西,那么这里写了P零点X引脚,这个X代表的是0~7,因为我们P0端口有8个,它这里是P000~P007,所以你了解了一个引脚,那对于其他引脚也是一样的。

(2)下面我们看一下这些模块资源的介绍,首先我们看一下,我们的输入缓冲器,输入缓冲器在P0口当中呢,有两个三态的,一个输缓冲器。在学数字电路的时候,我们已经知道,三态门呢,他有三个状态,也就是输出端口可以是高电平,也可以是低电平,同时还有一种是高阻态,这是三态门的一个输出的一个特点。

(3)那么大家在这张图当中,我们上面有一个输入缓冲器,也就是读锁存器,读取D锁存器输出端的Q,读取Q的时候,就得使用这个读锁存器,这个输入缓冲器的三态控制端上图的这个读锁存器有效,只有这个有效,我们的Q才能到达我们的一个读的这一块;下面是我们的读引脚的一个输入缓冲器,要读取P0、X的这个引脚上的数据,也要使能这个读引脚这个三态缓冲器的一个控制端有效,才能直接读引脚,那么这是我们的一个输入缓冲器。

(4)再看一下我们的这个D储存器,构成一个储存器,通常要用一个时序电路,那么时序的单元电路在学数字电路是呢,我们已经知道一个触发器可以保存一位的二进制数,也就是具有保持功能,那么在51单片机的32根IO口线当中呢,都是用了一个D触发器来构成的一个锁存器,那么大家在这张图当中呢,可以看到D储存器D端是它的一个数据输入端,那么CP也就是CLK是它的一个控制端,也就是时序控制信号的一个输入端,那么Q,Q是我们第一锁存器的一个输出端,QC呢,是这个反向输出端,也就是跟Q呢是输出相反的一个状态。那么对于D触发器来讲,当D这个输入端有一个输入信号的时候。那么如果这个时候这个控制端CLK没有信号,也就是说,这个CLK没有来一个时序,那么这时候输入端的D数据是无法传输到这个Q输出端,或者是反向输出端。如果时序控制端COK来了一个脉冲时序,那么这时候这个D的一个输入的一个数据,就会传输到这个Q的一个输出,或者是QC得一个输出,那么数据传输过来之后,当这个CLK时序控制段得时序信号消失了,那么这时呢,输出端还会保持上一次输入端低得一个数据,也就具有保持,相当于把之前的数据给锁存了,有这么一个锁存的功能。如果下一个时序控制脉冲CLK过来了,一个时序之后,那么这时候D的数据才会再次传输到Q,和QC也就更新掉了上一次的一个数据。这样Q和QC得状态就会发生变化了。这是我们的一个低储存器的一个介绍。

(5)下面我们来看一下,它内部结构当中的这个多路开关,那么,在51单片机当中呢,当内部的一个存储器够用的时候也就是不需要外扩,存储器,这里讲的存储器包括数据存储器和程序存储器,也就是RAM和ROM,那么P0口,它可以作为通用的输入输出端口,也就是IO口的一个使用,也就是说,我们P0口之前我们介绍单片机管脚功能的时候,我们说过P0口,他可以作为普通的IO,还可以作为一个外扩存储器的一个总线口,当我们不需要外扩的时候,通常我们也不会去外扩这个存储器,所以P0口可以当作普通的输入输出口来使用,那么对于8031,那么它的内部是没有ROM这个单片机,它需要编写程序,超过单片机内部的一个存储量,他就需要外扩这个存储器来存储你的程序,那此时P0口就可以作为地址,数据的一个总线来使用,那么这么多这个多路选择开关,在这里起到了一个选择的作用,你是用作普通的alco使用,还是用做数据地址总线来使用,这就需要通过这个多路开关来进行选择,那么大家可以看一下,当这个多路开关与下面的这一个接通的时候,那么Q,这个P0口接到下面的时候,上面不接,接到下面的P0口,他是作为普通的IO口来使用的,那么当这个输入开关,当这个多路开关切到上面的时候,这个P0口,它是作为地址数据控制线来进行使用的。

(6)接下来我们看一下这个场效应管,这是两个场效应管输出的一个驱动。从这个图当中,我们可以看到P0口的一个输出是由两个MOS管组成的一个推拉式的一个结构,也就是说这两个MOS管,一次只能导通一个,当V1导通的时候,V2是截止的,当V2导通的时候,V1是截止的,所以它构成了一推一拉,这么一个推拉的结构,这是它MOS管的一个输出驱动。

(7)那么我们再来看一下与非门还有一个非门,那么在学习数字电路的时候,这个与非门和非门其实也很好理解,如果没有数字电路基础的朋友,也可以百度查找一下这个与非门和非门以及前面讲的一些低触发器的一些相关知识。

(8)接下来,我们来看一下P0口作为IO口输出使用的一个工作原理,那么我们在这张图后面就有P0口作为输出的一个使用的一个图。

我们可以从这个流线图当中去清晰的看到,作为普通IO口的使用的时候,这个多路开关它是切到下面的,也就是与我们的低触发器进行连接,通过我们的内部总线,从写存储器,经过存储器,然后呢,经过这个开关来通过这个MOS管来驱动,从而呢输出。那么当我们对这个协同人信号就是CLK有效的时候,那么我们的数据总线呢,传入到这个数据D,然后先这个CLK来一个脉冲,那么这个数据呢会经过这个D锁存程序从而传到这个Q非,也就是反向输出端,从而在经过多路开关,传到我们这个V2这个三级,那么V2的路径到达这个输出端P零点x,前面我们已经讲了,在当多路开关控制信号为这个低电平的时候,就是在前面这里控制信号。与门,它是输出一个低电平,那么V1管它是截止的,所以作为输出口时纰漏,P0是一个漏极,这里截止那相当于它的输出就直接经过这里了。那么这样一个结果就是漏极,漏极开路输出,类似于一个OC门,那当驱动上接电流负载的时候,它需要外接上拉电阻,这样他才可以输出一个高电平,所以一定要记住P0口之所以是内部的一个没有上拉,是因为它的一个这样的结构所决定的,它是一个漏极开路,当它输出的时候,上面这个V1的MOS管它是截止的,一截止的话,下面就相当于输出直接这样一个输出了,那它高电平是没法输出的,它只能输出低电平。低电平通过VR这个MOS管导通,这个GND就直接到这个管脚输出,如果是要输出高电平,他是没办法,上面没有高电平流过来,它只能依靠什么外部上拉电阻才能保证我们的一个P0管脚来输出一个高电平,这是P0的一个输出的一个流程。那么P0IO口作为输入的一个图,我们也给大家画出来的。这是流程图,我么也可以看得到。

首先,作为输入使用的时候P0有两种情况,第一种是独引脚,那么读芯片引脚上的数据呢,读引脚的时候,这个读引脚的一个输出缓冲器,它是打开的,那么通过内部的一个数据总线来输入,那么,从这张图当中的一个流线,我们可以看到这个读引脚这一块,它的一个总线在这里,这里是要连接着的。还有是读锁存器,都锁存器,它是通过打开我们读锁存器的这个三态缓存器来读取我们锁存器的Q的一个状态。

3、P1端口

(1)这是我们P1端口的一个内部结构,同样的跟我们的P0口类似,最右边呢是我们肉眼可见的一个P点里多少的一个引脚,左边这一边就是我们芯片内部的一个封装的一个结构,我们是看不到的,那么P1口结构也是最简单的,用途也是非常单一的,仅可以作为这个数据输入和输出的一个使用,也就是我们普通的I口的一个使用,它不像前面我们介绍到的P0P0,它还可以作为一个地址数据总线的一个使用,那么P1口,他仅仅只是作为这个普通的IO口的一个使用方法,所以自然它的一个内部结构也是非常简单的,其实我们前面分析了这个P0端口,它的一个结构相信在P1端口这一块大家应该非常清楚了。P1端口和P0端口的主要差别在于P1端口内部,有一个上拉电阻,代替了P0端口的一个场效应管V1,并且呢,数字信息仅来自内部总线,由内部总线的数据,经过锁存器反向之后来输出到我们的这个管脚,所以P1端口,是具有输出锁存的一个静态口。

(2)那么从这张图中呢,我们可以看到,要正确的读取这个外部信息,必须先使这个场效应管,以便由外部的输入信息,确定引脚的状态,为此呢,在做引脚读录,读录前呢,必须先对这个端口,其实在我们外部接一个散热电阻的时候,已经给你完成了,默认它就是高电平,所以写不写都无所谓。

(3)具有这种操作特点,输入和输出的端口,我们称为准双向口,那么51单片机当中的P1,P2   ,P3都是准双向口,那么P0端口呢,它输出是有三态功能的,输入前,端口线已处于高阻状态,无需先写入一,再读进行一个读操作。

(4)相比P0端口,P1端口它内部还有一个上拉电阻,这个上拉呢,是一个比较弱的一个上拉,如果说你要增强你的P1端口的一个输出能力,那你在外部还可以加上一个上拉电阻,增强我们管教的一个驱动能力,对于P1口,它是内部自带上拉,所以它既可以输出高电平,又可以输出低电平,而P0口它要输出高电平,必须外部一定要接上拉电阻。

4、P2端口

(1)P2端口内部其实也有上拉电阻,多路切换开关,所以P2端口在功能上呢,兼容了这个P0和P1的特点,那主要表现在输出功能上,当这个切换开关切向下接通的时候,它就有输出,就是我们的普通I口的一个功能,它是经过我们的内部总线,经过锁存器,它的一个Q,接到我们的这个多路开关,与我们的一个与门,从而控制我的V2的一个场效应管来驱动我们的P,这个P2端口,这是P2端口的一个引脚,那么PR端口,它也同样也是可以直接输出高电平和低电平。

(2)我们在这张图上还看到了有个地址数据,地址/数据控制信号,它是用来控制这个多路开关,因为前面说到这个P0口,它也有地址和数据的一个总线,它是低八位,而这个P2端口,它是高八位,它可以通过这两组P0和P2这两组地址和数据,总线呢,来外扩一个16位的一个RAM或者是ROM,所以我们没用到这个外扩存储器的话,这一块都不用管它,就把它当成普通的I口来使用,默认呢,我们也是使用它的一个普通I口,不需要对它进行配置,默认这个开关就是打到这个下面的,所以我们对这个P2口的一个使用,可以直接对它进行输出高和输出低,因为它内部也是有上拉电阻。

5、P3端口

(1)那我们再来看一下P3端口,它的一个存储器,它内部结构,它有一个第二功能,所以从这张图当中,我们可以看到它跟这个P1端口前面这块是类似的,这一块,然后呢,又兼容了P0端口,但是它还有一个第二功能,这个第二功能就通过这个与非门的这个控制脚来进行切换,你是使用第二功能还是使用普通的alco来控制这个与非门,那前面这一块就是普通的IO口,通过内部总线,来到达这一路,如果说是与非门,你使用都是普通的IO口,不使用它的第二功能,那直接到达这一路来进行输出。

(2)我们从这前面介绍的管脚功能描述也知道,像串口,外部中断,定时器输入就是技术计数器,t0和t1,这些都是在这个P3端口上进行一个使用,那么P3端口,它同样也有内部的一个上拉电阻,所以它既可以输出高电平,又可以输出低电平。

6、由此,我们知道除了P0端口需要一定外接上拉电阻才可以输出高电平之外,其他的P1,P2,P3都可以直接输出高或者低

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/377332.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序相关算法--3.选择排序

之前涉及的堆排序就是选择排序的一种,先进行选择。 基本选择排序: 最简单,也是最没用的排序算法,时间复杂度高并且还是不稳定的排序方法,项目中很少会用。 过程: 在一个长度为 N 的无序数组中,…

Python使用策略模式和openpyxl库创建Excel文件并追加内容

from openpyxl import load_workbook# 数据数组 data [[1, 2, 3],[4, 5, 6],[7, 8, 9] ]# 打开现有的 Excel 文件 excel_file sheetApend_example.xlsx wb load_workbook(excel_file)# 选择要追加数据的工作表 sheet_name test_Sheet2 # 指定要追加数据的工作表名称 sheet…

最值得推荐的10款Windows软件!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频播放量破百万https://aitools.jurilu.com/1.音乐播放器——Dopamine Dopamine是一款音乐播放器,设计简洁美观。它支持多种音频格式,包括wav、mp3、ogg…

爬虫管理解决方案:让数据收集变得高效且合规

一、为何数据收集的效率与合规性同等重要? 随着大数据技术的飞速发展,数据收集已成为企业决策与市场洞察的核心驱动力。然而,在信息海洋中精准捕捞的同时,如何确保这一过程既高效又不触碰法律的红线,是每个数据实践者…

“金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)

题目 思路来源 官方题解 题解 手玩发现,能换的话,当且仅当.和1在一个环里,而这就是点双连通分量 所以最优策略是先把.换到(x,y)的位置,然后判断.和1在不在一个环里 也就是: 1. 判断删掉1时,.和(x,y)联…

C++客户端Qt开发——信号和槽

三、信号和槽 1.信号和槽概述 在Qt中,用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件,"用户关闭窗口”也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出"按钮被点击"的信号&…

基于JavaEE 的影视创作论坛的设计与实现

点击下载源码 基于Javaee的影视创作论坛的设计与实现 摘 要 随着时代的发展,互联网的出现,给传统影视行业带来的最大便利就是,方便了影视从业人员以及爱好者的交流和互动,而为用户提供一个书写影评,阅读影评以及回复…

Centos7 安装Redis6.2.6 gcc报错问题解决

Redis 报错信息 make: *** [all] 错误 2 安装gcc 修改yum源,在安装更新rpm包时获得比较理想的速度,走阿里云镜像通道 发现报错信息如下: 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)… 失败:未知的名称或服务。 wget: 无法解析主机地址 “mi…

9.5 栅格图层符号化多波段彩色渲染

文章目录 前言多波段彩色渲染QGis设置为多波段彩色二次开发代码实现多波段彩色 总结 前言 介绍栅格图层数据渲染之多波段彩色渲染说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染 以“3420C_2010_327_RGB_LATLNG.tif”数据为例&#xff0c…

【C++】初识C++(下)

前言 本篇博客继续总结一下C入门的一些小知识 💓 个人主页:小张同学zkf ⏩ 文章专栏:C 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 ​ 目录 1.引用 1.1引用的概念 1.2const引用 1.3指针和引用的…

无损音乐播放器推荐:Audirvana for Mac 中文激活版

udirvana 是一款高品质的音乐播放软件,专为Mac操作系统设计。它被设计来提供音频播放的最高标准,支持多种音频格式,包括高达32位/192kHz的高分辨率音频。Audirvana Plus 是其高级版本,提供了更多的功能和优化,例如音频…

Redis 主从复制,哨兵与集群

目录 一.redis主从复制 1.redis 主从复制架构 2.主从复制特点 3.主从复制的基本原理 4.命令行配置 5.实现主从复制 6.删除主从复制 7.主从复制故障恢复 8.主从复制完整过程 9.主从同步优化配置 二.哨兵模式(Sentinel) 1.主要组件和概念 2.哨…

LabVIEW电容器充放电监测系统

概述 为了对车用超级电容器的特性进行研究,确保其在工作时稳定可靠并有效发挥性能优势,设计了一套车用超级电容器充放电监测系统。该系统通过利用传感器、USB数据采集卡、可调直流稳压电源、电子负载以及信号调理电路,完成对各信号的采集和超…

数据分组还在手忙脚乱?Python groupby一招搞定,效率翻倍!

目录 1、初识groupby:基础用法 🐍 1.1 groupby函数简介 1.2 准备数据与分组 2、按键分组 📊 2.1 使用lambda表达式 2.2 自定义key函数 3、连续元素分组 🔗 3.1 不连续元素处理 3.2 连续性与排序 4、组合其他itertools模…

基于香橙派 AIpro设计的医院人脸红外测温系统(从0开始开发)

文章目录 一、前言二、主控板介绍三、搭建开发环境3.1 准备需要的配件3.2 开发板实物图3.3 下载开发板资料3.4 下载系统烧写工具3.5 设置开发板启动模式3.6 启动系统3.7 SSH远程登录系统3.8 安装xdrp工具3.9 Window远程登录3.10 取消自动休眠 四、安装Qt开发环境4.1 安装qtcrea…

Ubuntu系统安装mysql之后进行远程连接

1.首先要配置数据库允许进行远程连接 1.1 打开MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i进入插入模式 bind-address 0.0.0.0 #按 Esc 键退出插入模式。 #输入:wq 然后按 Enter 保存并退…

MySQL第八次作业

一、备份与恢复作业: 创库,建表: CREATE DATABASE booksDB; use booksDB; CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL ); CREATE TABLE authors …

在uniapp中如何使用地图

1&#xff0c;技术选择 最好是使用webview html形式加载&#xff0c;避免打包app时的地图加载问题 2&#xff0c;webview使用 使用webview必须按照官方文档,官网地址&#xff1a;https://uniapp.dcloud.net.cn/component/web-view.html <template><view><!…

MATLAB激光通信和-积消息传递算法(Python图形模型算法)模拟调制

&#x1f3af;要点 &#x1f3af;概率论和图论数学形式和图结构 | &#x1f3af;数学形式、图结构和代码验证贝叶斯分类器算法&#xff1a;&#x1f58a;多类型&#xff1a;朴素贝叶斯&#xff0c;求和朴素贝叶斯、高斯朴素贝叶斯、树增强贝叶斯、贝叶斯网络增强贝叶斯和半朴素…

STM32对数码管显示的控制

1、在项目开发过程中会遇到STM32控制的数码管显示应用&#xff0c;这里以四位共阴极数码管显示控制为例讲解&#xff1b;这里采用的控制芯片为STM32F103RCT6。 2、首先要确定数码管的段选的8个引脚连接的单片机的引脚是哪8个&#xff0c;然后确认位选的4个引脚连接的单片机的4…