详解单片机的IO接口
MCS-51系列单片机有4组I/O接口:P0、P1、P2和P3。前面简单介绍了一下各个端口,要学好单片机技术,非常有必要详细了解这些端口的内部结构及工作原理。
P0端口
P0 端口有 P0.0~P0.7 共 8 个引脚,这些引脚除了可作 I/O 引脚外,在外接存储器时,还可作地址 / 数据总线引脚。 P0端口每个引脚的内部电路结构都相同,其内部电路结构如图2-6所示。
图2-6 P0端口内部电路结构
(1)当P0端口用作输出端口时
如果要将P0端口用作输出端口,单片机内部的CPU会发出一个“0”到与门的控制端。控制端的“0”一方面关闭与门(即与门的一端为“0”时,不管另一端输入何种信号,输出都为“0”),使地址/数据总线送来的信号无法通过与门;另一方面控制电子开关,让电子开关与锁存器的Q端接通。
此时若给锁存器的写锁存器端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和Q端输出,如D端输入“1”,则Q端输出“0”(Q端输出“1”),该“0”经电子开关送到场效应管VT2的栅极,VT2截止,从P0端口输出“1”。
也就是说,当给P0端口内部的与门控制端送“0”,同时给写锁存器端送写脉冲信号时,单片机内部总线的信号就可以通过接口电路从P0端口输出。
(2)当P0端口用作输入端口时
当将P0端口用作输入端口时,P0端口的信号既送到三态门,又送到VT2的漏极。如果锁存器之前锁存的为“0”,即Q=0、Q=1,其中Q=1会使VT2导通,P0端口被钳在“0”电平上,“1 ”将无法送入P0端口。
解决的方法是:在将数据输入P0端口前,先通过内部总线向锁存器写“1”,即让Q=0,VT2截止,P0端口输入的“1”就可以送到三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。
也就是说,要将P0端口作为输入端口,先要将P0端口的锁存器写“1”,然后再给输入三态门送读控制信号,P0端口的数据就可以通过接口电路,送到单片机内部的总线上。
(3)当P0端口用作地址/数据总线引脚时
如果要将P0端口用作地址/数据总线引脚,先要给与门的控制端送“1”,于是与门打开,同时电子开关和非门输出端接通。当地址/数据总线为“1”时,“1”一方面通过与门送到VT1的栅极,VT1导通,另一方面送到非门,经反相变为“0”,再经电子开关送到VT2的栅极,VT2截止,VT1导通,VT2截止使P0端口输出为“1”;当地址/数据总线为“0”时,VT1导通,VT2也导通,P0端口输出为“0”。
也就是说,当给与门的控制端送“1”时,内部地址/数据总线上的信号就可以从P0端口输出,P0端口就可当作地址/数据总线引脚使用。
P1端口
P1 端口有 P1.0~P1.7 共 8 个引脚,这些引脚可作 I/O 引脚。 P1端口每个引脚的内部电路结构都相同,其内部电路结构如图2-7所示。
图2-7 P1端口内部电路结构
从图2-7中可以看出,P1端口的结构较P0端口简单很多,由于P1端口内部采用了一只场效应管,并且与电源之间接了一只上拉电阻,所以不需要在P1端口的外部接上拉电阻。
(1)当P1端口用作输出端口时
如果要将P1端口用作输出端口,应给锁存器的写锁存器CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和Q端输出,如D端输入“1”,则Q端输出“0”(Q端输出“1”),该“0”送到场效应管的栅极,场效应管截止,从P1端口输出“1”。
(2)当P1端口用作输入端口时
当将P1端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0、Q=1,其中Q=1会使场效应管导通,P1端口被钳在“0”电平上,“1”将无法送入P1端口。所以与P0端口一样,在将数据输入P1端口前,先要通过内部总线向锁存器写“1”,让Q=0,场效应管截止,P1端口输入的“ 1”就可以送到输入三态门的输入端,此时再给三态门的读引脚送一个读控制信号,“1”就可以通过输入三态门送到内部总线。
P2端口
P2端口有P2.0~P2.7共8个引脚,P2端口每个引脚的内部电路结构都相同,其内部电路结构如图2-8所示。
图2-8 P2端口内部电路结构
从图2-8中可以看出,P2端口的内部结构与P0端口很相似。P2 端口也可作 I/O 引脚,在外接存储器时,还可以作为地址总线引脚。
(1)当P2端口用作地址总线引脚时
如果要将P2端口用作地址总线引脚,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与内部地址总线接通,地址总线上的信号就可以在通过电子开关、非门和场效应管后从P2端口引脚输出。
(2)当P2端口用作I/O接口时
如果要将P2端口用作I/O接口,单片机内部的CPU会发出一个控制信号到电子开关的控制端,让电子开关与锁存器接通。
当将P2端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线上的数据就被锁存进锁存器并从Q端输出,再通过电子开关、非门和场效应管从P2端口引脚输出。
当将P2端口用作输入端口时,如果锁存器以前锁存的为“0”,即Q=0,经非门反相后会使场效应管导通,P2端口被钳在“0”电平上,“1”将无法送入P2端口。所以与P0、P1端口一样,在将数据输入P2端口前,先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P2端口输入的“1 ”就可以送到输入三态门的输入端,此时再给读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。
P3端口
P3 端口有 P3.0~P3.7 共 8 个引脚, P3 端口可作为 I/O 接口,还可以用于其他方面。P3端口每个引脚的内部电路结构都相同,其内部电路结构如图2-9所示。
图2-9 P3端口内部电路结构
(1)当P3端口用作I/O接口时
如果要将P3端口用作I/O接口,应让与非门的选择输出功能端为“1”,以开通与非门。
当将P3端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q端输出,再通过与非门和场效应管从P3端口引脚输出。
当将P3端口用作输入端口时,应先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P3端口输入的信号就可以通过缓冲器、输入三态门送到内部总线。
(2)当P3端口用作第二功能时
P3端口用作第二功能(又称复用功能)时,实际上也是在该端口输入或输出信号,只不过输入、输出的是一些特殊功能的信号。所以当P3端口用作第二功能时,其内部电路的工作原理与用作I/O接口时是一样的,在用作输入功能时,端口的锁存器同样要先置“1”。
P3端口8个引脚的第二功能详见表2-1。例如P3.2引脚用作第二功能时,该端口可输入由外部设备送到的中断请求信号,该信号通过缓冲器、输入三态门送到内部总线。
P3端口除了可以接收外界的输入信号外,还可以接收内部的替代输入功能端送来的信号,该信号通过输入三态门送到内部总线。
总之,P0、P1、P2 和 P3 端口的功能是:都可以作输入或输出端口; P0、P2、P3 端口具有第二功能,各种端口的第二功能见表2-1。例如,表中说明P0端口的第二功能可以用作低8位地址总线/ 数据总线,P2端口可用作高8位地址总线,P3.0端口可用作串行数据接收端。
表2-1 MCS-51系列单片机各端口的第二功能
单片机IO口科普:推挽输出、开漏输出详解
在学单片机和选用逻辑器件的时候我们常别人说这款芯片是推挽输出驱动能力强,这个引脚是开漏输出需要加上拉电阻。是不是有时候感觉一头雾水?今天就详解一下推挽和开漏,以后你买芯片的时候就可以和别人大声理论了。
1. 什么是推挽输出
推挽输出既可以输出低电平,也可以输出高电平,可以直接驱动功耗不大的数字器件。
2. 推挽输出电路的结构
推挽电路是由两个三极管或MOSFET,以推挽方式存在于电路中,电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高、既提高电路的负载能力,又提高开关速度。其示意结构如下图所示:
当内部输出1电平时,上边的MOS管导通同时下边的MOS管截至,IO口输出高电平;
当内部输出0电平时,上边的MOS管截至同时下边的MOS管导通,IO口输出低电平;
3. 什么是开漏输出
开漏输出只能输出低电平,如果要输出高电平必须通过上拉电阻才能实现。就类似于三极管的集电极输出。
4. 开漏输出电路的结构
如上图:
内部输出1时MOS管截止,输出与地断开,这时候IO口其实是没有驱动能力的,需要外部连接上拉电阻才能输出高电平,才能驱动数字器件;
内部输出0时MOS管导通,输出低电平,所以开漏能输出低电平;
5. 准双向IO
在学51单片机的时候老师告诉我们,51单片机的IO口是准双向的,什么是准双向的?示意如下:
其结构类似于开漏输出,只不过是把上拉电阻集成到了单片机内部。
6. IO口如何应用
对于推挽输出的IO口可以直接输出高低电平驱动功耗较小的数字器件,但对于开漏输出的话必须要在外部接上拉电阻才行。比如说LPC11C14单片机的片上I2C资源就是开漏输出的,如果要使用这两个引脚做输出就必须加上拉电阻,如下图所示:
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8
相关问答
什么是 PO 口单片机 的一个部件,麻烦介绍下它都有哪些规格,参...[最佳回答]P0口是单片机的一个IO口用于与外界进行信息的交换,可以作为普通的IO口,此时为漏极开路,要输出高电平必须加上拉电阻,PO口还可以作为地址的低8位的输...
单片机IO口 的第二功能 是什么 ??-ZOL问答单片机IO口第二功能是:P0口的第二功能是数据/地址总线。P2口的第二功能是地址总线P3口的第二功能是控制总线,具体是:P3.0--RXDP3.1--TXDP3.2--外部中断0...
单片机 扩展 IO口 的地址如何定义?如果你打算用总线接口的话,直接定义一个变量到绝对地址,并在编译环境里面选择large模式(默认small),unsingedintic74573_at_0xF0FF如果是打算不用总线,...
51 单片机 中 IO口 的种类和区别?P0P1P2P3就这四组,每组8个,才是从Pn.0~Pn.7(n=0,1,2,3)!P0P1P2P3就这四组,每组8个,才是从Pn.0~Pn.7(n=0,1,2,3)!
51 单片机 的 IO口 怎么区分?不能这么说。一组IO口只是芯片引出来的8个。实际上内部可能有些没有引出。stm32是32位的,一组IO口是16个。有些8个脚的MCU,去掉VCC和GND,顶多就剩6个IO口...
st 单片机IO口 类型FT、TC 是什么 意思?在ST单片机中,IO口类型FT代表浮空输入,TC代表推挽输出。浮空输入(FT)是指输入引脚既不连接到高电平也不连接到低电平,而是处于未定义状态。推挽输出(TC)是...
单片机 的 io口 作为输入 口是 ,需要选输出全零?如今的比较好的单片机的IO口是可以定义的,这和最原来的51有区别。当作为输入口时候是单片机接收IC的数据信息,或者是灌电流,这时候要考虑电流的大小是否在单片...
51 单片机什么口 需要配置 io口 模式?1.51单片机的P0口和P2口需要配置IO口模式。2.51单片机的P0口和P2口是通用IO口,可以用于输入和输出。在使用这些口时,需要通过配置IO口模式来确定口的工作方...
如何使用 单片机 lo 口 ?缺省状态下,单片机IO口是双向的,可以直接读写。可以字节方式操作,也可以“位”操作,比如:MOVP1,#55HSETBP1.0CLRP1.4缺省状态下,单片机IO口是双向的,...
用NPN三极管控制一个发光二极管,B基为 单片机IO口 ,集电极为5V...[最佳回答]截止,当然是单片机输出为0呗,这样B极就没电流了.饱和的话,Uce