ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:245.50KB ,
资源ID:9002017      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9002017.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机IO口结构及工作原理.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机IO口结构及工作原理.docx

1、单片机IO口结构及工作原理单片机IO口结构及工作原理一、P0端口的结构及工作原理P0端口8位中的一位结构图见下图:由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。下面,先分析组成P0口的各个部分:先看输入缓冲器:在P0口中,有两个三态的缓冲器,在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),上面一个是读锁存器的缓冲器,下面一个是读引脚的缓冲器,读取P0.X引脚上的数据,要使这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。D锁存器:在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。D端是数据输

2、入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。多路开关:在51单片机中,不需要外扩展存储器时,P0口可以作为通用的输入输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为地址/数据总线使用。这个多路选择开关就是用于选择是做为普通I/O口使用还是作为数据/地址总线使用的选择开关了。当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为地址/数据总线使用的。输出驱动部份:P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管

3、一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。 P0口作为I/O端口使用时,多路开关的控制信号为0(低电平),V1管截止,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。作为地址/数据线使用时,多路开关的控制信号为1,V1管由地址/数据线决定,多路开关与地址/数据线连接。输出过程:1、I/O输出工作过程:当写锁存器信号CP有效,数据总线的信号锁存器的输入端D锁存器的反向输出Q非端多路开关V2管的栅极V2的漏极到输出端P0.X。这时多路开关的控制信号为低电平0,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接

4、上拉电阻。下图就是由内部数据总线向P0口输出数据的流程图(红色箭头)。2、地址输出过程控制信号为1,地址信号为“0”时,与门输出低电平,V1管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。反之,控制信号为“1”、地址信号为“1”,“与门”输出为高电平,V1管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。请看下图(兰色字体为电平):可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。3、作为数据总线的输出过程如果该指令是输出数据,如MOVX DPTR,A(将累加器的内容通过P0口数据总线传送到

5、外部RAM中),则多路开关“控制”信号为1,“与门”解锁,与输出地址信号的工作流程类似,数据据由“地址/数据”线反相器V2场效应管栅极V2漏极输出。输入过程:1、I/O读引脚工作过程: 读芯片引脚上的数据时,读引脚缓冲器打开,通过内部数据总线输入,请看下图(红色简头)。2、I/O读锁存器工作过程:通过打开读锁存器三态缓冲器读取锁存器输出端Q的状态,请看下图(红色箭头):3、地址/数据时读指令码和数据过程作为数据总线使用。在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非

6、;CPU自动将0FFH(11111111,即向D锁存器写入一个高电平1)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线,这个过程和I/O读引脚过程是一样的。在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q0,Q非1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q1,Q非0,场效应管T2截止。如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器

7、读入的信号不同。为此,8031单片机在对端口P0一P3的输入操作上,有如下约定:为此,8051单片机在对端口P0一P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以避免因外部电路的原因而使原端口的状态被读错。当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能

8、再作为通用的I/O端口。在系统设计时务必注意,即程序中不能再含有以P0口作为操作数(包含源操作数和目的操作数)的指令。二、P1端口的结构及工作原理由图可见,P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是

9、准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1一P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,P1端口也有读锁存器与读引脚之分。三、P2端口的结构及工作原理:由图可见,P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输

10、出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。对于8031单片机必须外接程序存储器才能构成应用电路(或者我们的应用电路扩展了外部存储器),而P2端口就是用来周期性地输出从外存中取指令的地址(高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址。 在输入功能方面,P2端口与P0和H端口相同,有读引脚和读锁存器之分,并且P2端口也是准双向口。可见,P2端口的主要特点包括:不能输出静

11、态的数据;自身输出外部程序存储器的高8位地址;执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址端口。即然P2口可以作为I/O口使用,也可以作为地址总线使用,下面我们就分析下它的两种工作状态。1、作为I/O端口使用时的工作过程 当没有外部程序存储器或虽然有外部数据存储器,但容易不大于256B,即不需要高8位地址时(在这种情况下,不能通过数据地址寄存器DPTR读写外部数据存储器),P2口可以I/O口使用。这时,“控制”信号为“0”,多路开关转向锁存器同相输出端Q,输出信号经内部总线锁存器同相输出端Q反相器V2管栅极V2管9漏极输出。 由于V2漏极带有上拉电阻,可以提供一定的上

12、拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1”,使反相器输出低电平,V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后,输入信息经读引脚三态门电路到内部数据总线。2、作为地址总线使用时的工作过程 P2口作为地址总线时,“控制”信号为1,多路开关车向地址线(即向上接通),地址信息经反相器V2管栅极漏极输出。由于P2口输出高8位地址,与P0口不同,无须分时使用,因此P2口上的地址信息(程序存储器上的A15A8)功数据地址寄存器高8位DPH保存时间长,无须锁存。四、P3端口的结构及工作原理P3口是一个多功能口,它除了可以作为I/O口外,还具有第二功

13、能,P3端口的一位结构见下图上图可见,P3端口和P1端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。使P3端品各线处于第二功能的条件是:1、串行I/O处于运行状态(RXD,TXD);2、打开了处部中断(INT0,INT1);3、

14、定时器/计数器处于外部计数状态(T0,T1)4、执行读写外部RAM的指令(RD,WR) 在应用中,如不设定P3端口各位的第二功能(WR,RD信号的产生不用设置),则P3端口线自动处于第一功能状态,也就是静态IO端口的工作状态。在更多的场合是根据应用的需要,把几条端口线设置为第二功能,而另外几条端口线处于第一功能运行状态。在这种情况下,不宜对P3端口作字节操作,需采用位操作的形式。四、驱动能力P0端口能驱动8个LSTTL负载。如需增加负载能力,可在P0总线上增加总线驱动器。P1,P2,P3端口各能驱动4个LSTTL负载。由于P0-P3端口已映射成特殊功能寄存器中的P0一P3端口寄存器,所以对这些

15、端口寄存器的读写就实现了信息从相应端口的输入输出。例如:MOV A, P1 ;把Pl端口线上的信息输入到AMoV P1, A ;把A的内容由P1端口输出MOV P3, #0FFH ;使P3端口线各位置l口线的低电平的驱动能力明显高于高电平的驱动能力;关于51单片机P0口的结构及上拉问题 .P0作为地址数据总线时,和是一起工作的,构成推挽结构。高电平时,打开,截止;低电平时,截止,打开。这种情况下不用外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以驱动8个TTL负载的原因.P0作为一般端

16、口时,就永远的截止,根据输出数据导通和1截止,导通时拉地,当然是输出低电平;截止时,口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1.其他端口、,在内部直接将P1口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。4.在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的.而MUX的切换,又是根据单片机指令来区分的.当指令为外部存储器/IO口读/写时,比如 MOVX A,DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传

17、送指令操作P0口时,MUX是切换到内部总线上的.PS:Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called “quasi- bidirectional” ports.因为端口1、2、3有固定的内部上拉,所以有时候他们被称为准双向口.Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats. 端口0,从另外一方面来说,就被认为是真正

18、的双向,因为当它被设置为输入的时候是浮空(高阻态)的. 51单片机P0口的作为I/O的问题,其实看了51的P1口的电路就很容易理解了,主要是一个锁存器和推拉结构,在此作些说明。 当用作输出,所有口线的状态都与SFR锁存位的设置有密切的联系。 P0口为低除外。当P0口的一个位写入0时,这个位被拉低。但是对P0口的其中一个位写入1时,这个位呈现高阻,也就是未能连机,不能使用。要想获得1输出,你必须在P0口外加上拉电阻。一般驱动LED的上拉电阻为470,外接逻辑电路的上拉电阻为4.7K。 补充:一些口线被作为简单的高电平输入也与SFR锁存位有关。因为P1、P2、P3有内部上拉电阻,可以随意被拉高,拉

19、低。而P0口作为高电平输入时,也会呈现高阻态。 P0口和P2口的输入缓冲被用来作存取外部存贮用,P0口用作外部存贮器的低位字节的位址,并与数据读写多工。输出第一位元址,当位置线是16位时,P2口用作高8位的位址线,因此当对外面存贮时,P0口、P2口没法当作I/O口线。 P1口具有内部上拉电阻,当端口用作输入时,必须通过指令将端口的位锁存器置1,以关闭输出驱动场效应管,这时P1口的引脚由内部上拉电阻拉为高电平,所以向P1写入1,工作正常。 P0则不同,它没有内部上拉电阻,在驱动场效应管的上方有一个提升场效应管,它只是在对外存储器进行读写操作,用作地址/数据时才起作用,当向位锁存器写入1,使驱动场

20、效应管截止,则引脚浮空,所以写入1而未获得。P0口上拉电阻的阻值:1、如果是驱动led,那么用1K左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮度还能够用。我通常就用1k的。2、对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个14.7k之间的电阻以外,同时上拉电阻的阻值就可以用

21、的特别大,用100k500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的。3、对于驱动晶体管,又分为PNP和NPN管两种情况:对于NPN,毫无疑问NPN管是高电平有效的,因此上拉电阻的阻值用2K20K之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于LED类负载,由于发管电流很小,因此上拉电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K的。对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻值用100K以上的就行了,且管子的基极必须串接一个110K的电阻,阻值的

22、大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。3、对于驱动TTL集成电路,上拉电阻的阻值要用110K之间的,有时候电阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路,上拉电阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,实际上对于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。根据以上分析,上拉电阻的阻值的选取是有很多讲究的,不能乱用,具体情况比较复杂,如果你是个莱鸟,那么你尽量用小一些的,这样牺牲一些电源功耗。不过最好请教一下有关人员。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1