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.mzph.cn/bicheng/46372.shtml

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

相关文章

[PM]原型与交互设计

原型分类 1.草图原型 手绘图稿, 规划的早期,整理思路会使用 2.低保真原型 简单交互, 无需配色, 黑白灰为主, 产品规划和评审阶段使用 标准化的低保真原型是高保真原型的基础 3.高保真原型 复杂交互, 一般用于公开演示, 产品先产出低保真原型, 设计师根据原型产出设计稿 低保…

Vue3学习体验(一)

搭建工程 使用vue-cli脚手架创建vue3工程 vue create vue3-app-vue-cliVue-cli官网:https://cli.vuejs.org/zh/guide/installation.html 使用vite搭建vue3工程 npm init表示临时的下载vite应用来创建vue3工程,工程名称为vue3-app-vite npm init vit…

mount挂载

1)Vmvare挂载光驱设备 安装光驱设备后,可以看到设备文件。 ls /dev/sr0 ll /dev/cdrom虽然设备是以文件的形式出现的,但和一般的文件不一样。 2)mount挂载 目录是目录,设备是设备,mount挂载可以让目录成…

数据结构——查找(线性表的查找与树表的查找)

目录 1.查找 1.查找的基本概念 1.在哪里找? 2.什么查找? 3.查找成功与否? 4.查找的目的是什么? 5.查找表怎么分类? 6.如何评价查找算法? 7.查找的过程中我们要研究什么? 2.线性表…

Spring webflux基础核心技术

一、 用操作符转换响应式流 1 、 映射响应式流元素 转换序列的最自然方式是将每个元素映射到一个新值。 Flux 和 Mono 给出了 map 操作符&#xff0c;具有 map(Function<T&#xff0c;R>) 签名的方法可用于逐个处理元素。 当操作符将元素的类型从 T 转变为 R 时&#xf…

基于conda包的环境创建、激活、管理与删除

Anaconda是一个免费、易于安装的包管理器、环境管理器和 Python 发行版&#xff0c;支持平台包括Windows、macOS 和 Linux。下载安装地址&#xff1a;Download Anaconda Distribution | Anaconda 很多不同的项目可能需要使用不同的环境。例如某个项目需要使用pytorch1.6&#x…

SAP 消息输出 - Adobe Form

目录 1 安装链接 2 前台配置 - Fiori app 2.1 维护表单模板 (maintain form templates) 2.2 管理微标 (manage logos) 2.3 管理文本 (manage texts) 3 后台配置 3.1 定义表单输出规则 3.2 分配表单模板 SAP 消息输出&#xff0c;不仅是企业内部用来记录关键业务操作也是…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(一)-3GPP TR 22.829 V17.1.0技术报告

本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。 下载…

算法导论 总结索引 | 第五部分 第十八章:B树

1、B 树是 为磁盘或其他直接存取的辅助存储设备 而设计的一种平衡搜索树。B 树类似于红黑树&#xff0c;在降低磁盘 I/O 操作次数方面要更好一些。许多数据库系统 使用 B 树 或者 B 树 的变种来存储信息 2、B 树与红黑树的不同之处 在于 B 树的结点 可以有很多孩子&#xff0c…

STM32-寄存器点灯案例详解

本文以PA1引脚点亮LED灯为案例&#xff0c;解析了STM32寄存器操作的配置过程&#xff0c;以及从手册查询方法和寄存器配置步骤。 一、概念 1.十六进制和二进制之间相互转换关系 首先&#xff0c;需要了解十六进制和二进制之间的基本转换方法。十六进制是一种基数为16的数制&…

制作显卡版docker并配置TensorTR环境

感谢阅读 相关概念docker准备下载一个自己电脑cuda匹配的docker镜像拉取以及启动镜像安装cudaTensorRT部署教程 相关概念 TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个模型推理框架&#xff0c;支持C和Python推理。即我们利用Pytorch&#xff0c;Tensorflow或者其它框架…

frameworks 之FallbackHome

frameworks 之FallbackHome FallbackHome 启动启动 Activity 流程创建进程ActivityThrad 与 AMS启动真正的 Launcher mActivityManagerService 创建后会启动 FallbackHome 再启动桌面程序。因为此时还没解锁&#xff0c;桌面又涉及很多其他应用程序相关&#xff0c;所以要等待用…

【Python】数据处理(mongodb、布隆过滤器、索引)

数据 数据预处理 df pd.read_csv(file_path, encodingANSI) csv的编码方式一定要用 ANSI。要不然会出现各种报错 import pandas as pd from datetime import datetime# 读取CSV文件 file_path book_douban.csv df pd.read_csv(file_path, encodingANSI)# 定义一个函数来…

基于SpringBoot协同过滤算法商品推荐系统(源码+lw+部署文档+讲解等)

前言&#xff1a; 博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBo…

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会给引用变量开辟内存空间&#xff0c…

SpringSecurity6 | 获取登录用户的认证信息

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 获取登录用户的认证信息 📚个人知识库: Leo知识库…

【C++初阶】类和对象(下)

【C初阶】类和对象下 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. 再谈构造函数 2. 类型转换 3. static成员 4. 友元 5. 内部类 1. 再谈构造函数 ① 之前我们实现构造函…

关于Qt Creator 使用Qt Quick的Design模式设置

关于使用Qt Quick的Design模式设置&#xff1a; 如描述所言&#xff1a; 如果使用Design模式打开qml文件失败显示如下&#xff1a; 首先确认自己是否安装了Qt Design Studio 如果安装了仍然不显示&#xff0c;则需要勾选下面三个地方才能用Design模式打开.ui.qml文件&#…

gradle设置优先使用maven本地仓库

1. gradle优先使用maven本地库的逻辑 Created with Raphal 2.3.0 开始 maven本地库 是否存在依赖&#xff1f; 使用maven 本地库的依赖 结束 下载依赖到 gradle本地库 yes no 2. 配置 在app/build.gradle.kts中添加mavenLocal() mavenLocal()9. 参考文章 https://www.cnblog…

24_YOLOV3-SPP网络详解

1.1 简介 YOLOv3-SPP是对YOLOv3&#xff08;You Only Look Once version 3&#xff09;目标检测模型的一种改进版本&#xff0c;其中"SPP"代表空间金字塔池化&#xff08;Spatial Pyramid Pooling&#xff09;。这个改进主要是为了增强网络对不同尺度物体的检测能力…