51单片机6(P0&P1&P2&P3结构框架图)

一、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都可以直接输出高或者低

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值