手机黄山网站,wordpress 怎么改中文,招标网站建设,效果好的魔站建站系统51单片机项目基础篇 中篇#xff1a;介绍GPIO1、认识GPIO2、GPIO 结构框图与工作原理2.1、P0端口结构框图与工作原理2.1.1、剖析组成 P0 口的每个单元的作用2.1.2、 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程 2.2、P1 端口结构框图与工作原理2.3、P2 端口结构框图… 51单片机项目基础篇 中篇介绍GPIO1、认识GPIO2、GPIO 结构框图与工作原理2.1、P0端口结构框图与工作原理2.1.1、剖析组成 P0 口的每个单元的作用2.1.2、 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程 2.2、P1 端口结构框图与工作原理2.3、P2 端口结构框图与工作原理2.4、P3 端口结构框图与工作原理 3、参考文献4、结束语 中篇介绍GPIO
前言 前面我们已经认识了 51 单片机芯片和 51 单片机最小系统。 紧接着来学习一下GPIO的驱动原理和内部结构哦
1、认识GPIO
GPIO(general purpose input output)是通用输入输出端口的简称可以通过软件来控制其输入和输出。 51 单片机芯片的 GPIO 引脚与外部设备连接起来从而实现与外部通讯、控制以及数据采集的功能。 当然 GPIO还可以作为输入控制比如在引脚上接入一个按键通过电平的高低判断按键是否按下。 这里为方便理解如图所示 可以看到并不是所有引脚都是属于GPIO引脚的通常分为以下几类 1电源引脚引脚图中的 VCC、 GND 都属于电源引脚。 2晶振引脚引脚图中的 XTAL1、XTAL2 都属于晶振引脚。12Mhz/11.0592Mhz 3复位引脚引脚图中的 RST/VPD 属于复位引脚不做其他功能使用。 4下载引脚51 单片机的串口功能引脚TXD、RXD可以作为下载引脚 使用。 5 GPIO 引脚引脚图中带有 Px.x 等字样的均属于 GPIO 引脚。 从引脚图可以看出GPIO 占用了芯片大部分的引脚共达 32 个分为了 4 组P0、P1、P2、P3每组为 8 个 IO而且在 P3 组中每个 IO 都具备额外功能只要通过相应的寄存器设置即可配置对应的附加功能但是注意同一时刻每个引脚只能使用该引脚的一个功能。具备额外功能的引脚称为复用引脚。
2、GPIO 结构框图与工作原理
通过前面的引脚图可以看到
除了以上以P4端口的引脚和电源、复位、时钟晶振引脚以外C51的引脚端口被分为了P0、P1、P2、P3四个端口由于学习它们的内部结构有助于我们更好的理解所以这里分成四个端口部分
2.1、P0端口结构框图与工作原理
可以知道P0端口有8个引脚但P0端口的驱动内部结构是相同的所以只需要探究一个就能明白了。 具体如下图所示 由上图可见P0 端口由锁存器、输入缓冲器、多路开关、一个非门、一个与非门及场效应管驱动电路构成。再看图的最右边标号为 P0.x 引脚的图标也就是说 P0.x 引脚可以是 P0.0 到 P0.7 的任何一位即在 P0 口有 8 个与上图相同的电路组成。
2.1.1、剖析组成 P0 口的每个单元的作用
(1)、输入缓冲器 在 P0 口中有两个三态的缓冲器在学数字电路时我们已知道三态门有三个状态即在输出端可以是高电平、低电平同时还有一种就是高阻状态或称为禁止状态大家看上图上面一个是读锁存器的缓冲器**也就是说要读取 D 锁存器输出端 Q 的数据那就得使读锁存器的这个缓冲器的三态控制端上图中标号为‘读锁存器’端有效。**下面一个是读引脚的缓冲器要读取 P0.x引脚上的数据也要使标号为‘读引脚’的这个三态缓冲器的控制端有效引脚上的数据才会传输到我们单片机的内部数据总线上。 (2)、D 锁存器 构成一个锁存器通常要用一个时序电路时序的单元电路在学数字电路时我们已知道一个触发器可以保存一位的二进制数即具有保持功能在 51单片机的 32 根 I/O 口线中都是用一个 D 触发器来构成锁存器的。 大家看上图中的 D 锁存器D 端是数据输入端CPCLK是控制端也就是时序控制信号输入端Q 是输出端Q 非是反向输出端。 对于 D 触发器来讲当 D 输入端有一个输入信号如果这时控制端 CP 没有信号也就是时序脉冲没有到来这时输入端 D 的数据是无法传输到输出端 Q及反向输出端 Q 非的。 如果时序控制端 CP 的时序脉冲一旦到了这时 D 端输入的数据就会传输到 Q 及 Q 非端。 数据传送过来后当 CP 时序控制端的时序信号消失了这时输出端还会保持着上次输入端 D 的数据即把上次的数据锁存起了。 如果下一个时序控制脉冲信号来了这时 D 端的数据才再次传送到 Q端从而改变 Q 端的状态。 即也就是说D锁存器的D输入的数据能否传到Q端和非Q端是由CP端共同决定的并且当接收到一次脉冲信号成功传达到Q端和非Q端后本次的脉冲结束那么Q端和非Q端依然保存着上次的数据直到下一次脉冲信号传过来新的数据再刷新输出端的数据。 (3)、多路开关 多路开关很容易理解也就是字面意思由开关的接口根据需求可以选择搭接成不同的电路。 在 51 单片机中当内部的存储器够用也就是不需要外扩展存储器时这里讲的存储器包括数据存储器及程序存储器时P0 口可以作为通用的输入输出端口即 I/O使用对于 8031内部没有 ROM的单片机或者编写的程序超过了单片机内部的存储器容量需要外扩存储器时P0 口就作为‘地址/数据’总线使用。大家看上图当多路开关与下面接通时P0 口是作为普通的 I/O 口使用的当多路开关是与上面接通时P0 口是作为‘地址/数据’总线使用的。 那么这个多路选择开关就是用于选择是做为普通 I/O 口使用还是作为‘数据/地址’总线使用的选择开关了。 (4)、场效应管输出驱动 从上图中可以看出P0 口的输出是由两个 MOS 管组成的推拉式结构 也就是说这两个 MOS 管一次只能导通一个当 V1 导通时V2 就截止当 V2 导通时V1 截止。 MOS管是一种场效应管其主要作用是在电路中实现信号放大、开关控制等功能。 MOS管的基本原理是利用一个金属栅极、氧化物和半导体组成的结构来控制导体的电阻。 详见MOS管的作用与原理link (5)、与非门、非门 “非”运算是实现“求反”这种逻辑关系的一种运算。 “与”运算是实现“必须都有否则就没有”这种逻辑关系的一种运算。 “与非”就是“与” “非” 可以理解为“先与后非”的一种逻辑运算。
2.1.2、 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程
在学习了上面各个单元的概念后下面我们就来研究一下 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程。
1作为 I/O 端口输出使用时的工作原理 P0 口作为普通 I/O 端口使用时多路开关的控制信号为 0低电平看上图中多路开关的红线部份多路开关的控制信号同时与“与非门”的一个输入端是相接的我们知道“与门”的逻辑特点是“全 1 出 1有 0 出 0”那么控制信号是 0 的话这时“与门”输出的也是一个 0低电平与门的输出是 0V1 管就截止在多路控制开关的控制信号是 0低电平时多路开关是与锁存器的 Q 非端相接的即 P0 口作为 I/O 口线使用。 P0 口用作 I/O 口线其由数据总线向引脚输出即输出状态 Output的工作过程 当写锁存器信号 CP 有效数据内部总线的信号→D锁存器的输入端D→D 锁存器的反向输出 Q 非端→多路开关拉低→经过V2 管的栅极→V2 的漏极开漏输出到输出端 P0.X。 前面我们已讲了当多路开关的控制信号为低电平 0 时与门输出为低电平V1 管是截止的所以作为输出口时P0 是漏极开路输出类似于 OC 门(集电极开路 OC 或漏极开路 OD) 当驱动上接电流负载时需要外接上拉电阻。
下图就是由内部数据总线向 P0 口输出数据的流程图红色箭头 2作为 I/O 端口输入使用时的工作原理 数据输入时读 P0 口有两种情况 可以看图中作上角和左下角一个是读锁存器另一个是读引脚的情况。 1、读引脚 读芯片引脚上的数据读引脚数时打开读引脚的三态缓冲器即三态缓冲器的控制端要有效通过内部数据总线输入请看下图红色箭头。 补充缓冲器知识点 缓冲器分为两种常用缓冲器常规缓冲器和三态缓冲器。 常规缓冲器总是将值直接输出用于将电流输出到高一级电路系统。 三态缓冲器除了常规缓冲器的功能外还有一个选项卡通输入端用E表示。当E0和E1时有不同的输出值。
缓冲器还可以分为输入缓冲器和输出缓冲器两种。 前者的作用是将外设送来的数据暂时存放以便处理器将它取走 后者的作用是用来暂时存放处理器送往外设的数据。
总之三态缓冲器的控制端有效就是E置1实现正常逻辑状态输入输出逻辑0、逻辑1 当使能输入无效时E置0输出处于高阻状态即等效于与所连的电路断开。 2、读锁存器 通过打开读锁存器连接的三态输入缓冲器使其有效读取锁存器输出端 Q 的状态请看下图红色 箭头
(3)、P0 口作为外扩存储器时的工作原理(也就是拉高多路开关接地址/数据) 在上面多路开关有提到对于 8031内部没有 ROM的单片机或者编写的程序超过了单片机内部的存储器容量需要外扩存储器时访问外部存储器时P0口作为地址/数据复用口使用的
这时多路开关‘控制’信号为‘1’‘与门’解锁‘与门’输出信号电平由“地址/数据”线信号决定地址/数据线为0则输出0地址/数据为1则输出1也就是组成与非门由控制信号与地址/数据线共同决定输出结果多路开关与反相器(非门)的输出端相连可见拉高地址信号经“地址/数据”线→反相器非门→经过V2场效应管栅极→V2漏极开漏输出。 反之同理主要是根据给的信号0/1再根据逻辑电路一步步推理就行。
2.2、P1 端口结构框图与工作原理
P1 口的结构最简单用途也单一仅作为数据输入/输出端口使用。 输出的数据只有来自内部总线输入的数据同样有读引脚和读锁存器之分。 具体如下图所示 由图可见P1 端口与 P0 端口的主要差别在于P1 端口用内部上拉电阻 R 代替了 P0 端口的场效应管 V1并且输出的信息仅来自内部总线。 输出 由内部总线输出的数据经锁存器反相和场效应管反相后锁存在端口线上所以P1 端口是具有输出锁存的静态口。 输入 由上图可见要正确地从引脚上读入外部信息必须先使场效应管关断使得正常输入数据走下方的读引脚路线以便由外部输入的信息确定引脚的状态。为此在作引脚读入前必须先对该端口写入 1。 具有这种操作特点的输入/输出端口称为准双向 I/O 口。8051 单片机的 P1、P2、P3 都是准双向口。 P0 端口由于缓冲器有三态功能输入前端口线已处于高阻态无需先写入 1后再作读操作。 扩展 因为P1端口的上拉是属于弱上拉所以当驱动能力不足时同样可以在外部外接一个上拉电阻和电源以提升驱动能力。 同时因为P1口内部自带了上拉电阻就可以自身实现输出高低电平的转换而前面的P0端口是需要外接上拉电阻才可以实现输出高低电平。
2.3、P2 端口结构框图与工作原理
如图所示 由图可见P2 端口在片内既有上拉电阻又有多路开关、地址/数据、控制信号所以 P2 端口在功能上兼有 P0 端口和 P1 端口的特点。 与P0的分析同理可以看到这主要表现在输出功能上当切换开关向下接通时作普通I/O使用从内部总线输出的一位数据经反相器和场效应管反相后输出在端口引脚线上当多路开关向上时外括存储器输出的一位地址信号也经反相器和场效应管反相后输出在端口引脚线上。 此外 对于 8031 单片机必须外接程序存储器才能构成应用电路或者我们的应用电路扩展了外部存储器而 P2 端口就是用来周期性地输出从外存中取指令的地址(高 8 位地址)因此P2 端口的多路开关总是在进行切换分时地输出从内部总线来的数据和从地址信号线上来的地址。 因此 P2 端口是动态的 I/O 端口。输出数据虽被锁存但不是稳定地出现在端口线上。 其实这里输出的数据往往也是一种地址只不过是外部 RAM 的高 8 位地址。 P2 口因为与P1口同样具备内部的上拉电阻所以既可作为 I/O 口使用也可作为地址总线使用通常主要用作 I/O 口使用地址总线使用与P0口同理不作过多分析了。 值得注意的是“0低2高” 当单片机外部扩展存储器时 ,P0 口是地址线低 8 位和数据线使用; P2 口是地址高 8 位线使用
2.4、P3 端口结构框图与工作原理
P3 口是一个多功能口它除了可以作为 I/O 口外还具有第二功能P3 端 口的一位结构见下图 由上图可见P3 端口和 Pl 端口的结构相似区别仅在于 P3 端口的各端口线有两种功能选择。 当处于第一功能时第二输出功能线为 1此时内部总线信号经锁存器和场效应管输入/输出其作用与 P1 端口作用相同也是静态准双向 I/O 端口。 当处于第二功能时锁存器输出 1通过第二输出功能线输出特定的内含信号在输入方面即可以通过缓冲器读入引脚信号还可以通过替代输入功能读入片内的特定第二功能信号。 由于输出信号锁存并且有双重功能故P3 端口为静态双功能端口。 其他的均与上面的分析同理不再过多赘述了。
小结 ①P0 口是漏极开路要使其输出高电平必须外接上拉电阻通常选择4.7K~10K 阻值。 ②P0、P1、P2 几乎都用作普通 I/O 口使用既可作为输入又可作为输出。 ③P3 口既可用作普通 I/O 口又可作为第二功能使用比如串口、外部中断、计数器等。
3、参考文献
1、C51 普中官方开发数据手册 2、stc官方数据手册 3、百度百科
4、结束语
说明GPIO的内部结构和原理自认为还是很重要有利于我们对底层的理解所以写这篇文章记录作为自己学习的笔记有错误的地方还请多多指教谢谢阅读。