IO口的一点问题

三.单片机并行口的结构分析先来看看输入结构:

1.输入结构

I/O 口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。比如取反,置位,清零等等指令;而读端口时才真正地把外部的数据读入到内部总线,图中的两个三角形表示的就是输入缓冲器,CPU 将根据不同的指令,分别发出“读端口”或“读引脚”信号,以完成不同的操作,这是硬件自动完成的,不需要我们操心。

读引脚时,也就是把端口作为外部输入线时,首先要通过外部指令把端口锁存器置“1”,然后再实行读引脚操作,否则就可能读入出错。为什么?看上面的图,如果不对端口置“1”,端口锁存器原来的状态有可能为“0”(端为0Q^1)加到场效应管栅极的信号为“1”,该场效应管就导通,对地呈现低阻抗,此时即使引脚上输入的信号为“1”,也会因端口的低阻抗而使信号变低,使得外加的“1”信号读入后不一定是“1”,若先执行置“1”操作,则可以使场效应管截止,引脚信号直接加到三态缓冲器中,实现正确的读入。由于在输入操作时还必须附加一个准备动作,所以这类I/O 口被称为“准双向”口,MCS-51P0P1P2P3 口作为输入/输出口时都是“准双向”口。接下来让我们再看另一个问题,从图中可以看出,这四个端口还有一个差别,除了P1 口外,P0P2P3 口都还有第二功能,这些第二功能又是作什么用的呢?

 2.端口的工作原理

1P0 

    先来看P0 口,从图中可以看到,P0 口的内部有一个的选择器,受内部信号的控制,如果在图中的位置则处在I/O 口工作方式,此时相当于一个“准双向口”,输入时须先将口置“1”,每根口线可以独立定义为输入或输出,但是须在口线上加上拉电阻。如果将开关往另一个方向,则就是另一个功能—作为地址/数据复用总线用,此时不能逐位定义为输入/输出,它有两种用法:当作数据总线用时,输入位数据;而当作地址总线用时,则输出位地址。再强调一点,当P0 口作为地址/数据总线用之后,就再也不能作I/O 口使用了。讲到这里,也许大家会感到困惑,什么叫作地址/数据复用?这其实是当单片机的并行口不够用时,需要扩展输入输出口时的一种用法,知道了P0 口,再来看P1 口。

 2P1 

    同P0 不同,P1 口只能作为I/O 口使用,但它的内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1P2P3 都一样,务必请大家注意。 

3P2 

    P2 口作为I/O 口线用时,与P0 口一样,当内部开关向另一个方向时,即作地址输出时,可以输出程序存储器或外部数据存储器的高位地址,并与P0 口输出的低地址一起构成16 位的地址线,从而可以分别寻址64K 的程序存储器或外部数据存储器,同样地址线是位一起自动输出的,不能象I/O 口线那样逐位定义。

 4P3 

    P3 口作为I/O 口线用时,同P1 口相同,也是“准双向口”;不同的是,P3 口的每一位都有另一种功能,也叫第二功能,各位的功能如下,它们的具体作用我们用到时再详细解释。

既然单片机的引脚有第二功能,那么CPU 是如何来区分的呢?这是一个令许多初学者困惑的问题,其实单片机的第二功能是不需要人工干预的,也就是说只要CPU 执行到相应的指令,就自动转成了第二功能。了解了各个I/O 口的功能和作用,再来给大家讲解一下单片机I/O 与外围电路的连接方法。

四.单片机I/O 口的连接方法

    当单片机的I/O 口作输出时可以直接与外部设备连接,不过由于在实际的应用中,由于其驱动电流是有限的(P010mAP1P2P3 20mA),所以我们常常需要通过接口电路来扩展它的驱动能力,在单片机的后向通道控制系统中,常用的功率控制器件有机械继电器、晶闸管、固态继电器等等,下面我们将以机械继电器和固态继电器的应用为例介绍其具体的使用方法。

1 单片机与机械继电器的接口

    单片机的一个I/O 口只能灌入20mA 的电流,所以往往不足以驱动一些功率开关(比如稍大一点的机械继电器等),此时,就应该采用必要的扩展电路,如何来实现单片机与机械继电器的接口呢?其实很简单,我们通常采用下面的接法(如图),为了防止前向通道信号的干扰,常采用一些光电隔离器件,比如光电耦合器4N25PC814 等,当单片机的P1.0 脚输出为低电平时,光藕受电导通,Q1 饱和开通,继电器吸合,负载电路接通。这里请注意P0-P3 口作输出控制端时,应尽量采用低电平控制方法,这是因为在低电平时,I/O 口允许灌入的电流比高电平时要大,一般情况下,低电平的灌入电流为高电平的倍。

    另外为了防止电压间的互相干扰,继电器的工作电压VDD 与单片机的工作电压VCC 不要使用同一个电源,接地端也不要连在一起,即所谓的模拟地与数字地分开,驱动管的电流要大于继电器的工作电流,其他的元件就不讲了,大家自行分析一下。讲了单片机与继电器的接口,再来介绍与固态继电器的接口方法,接着往下看:

2 单片机与固态继电器的接口

    普通继电器由于开关速度慢、易跳火、易机械磨损,通常用于要求不高的场合,在某些特殊应用场合,比如防火、防爆等系统中,则应采用固态继电器。固态继电器是一种无触点的电子继电器,它的输入端只要很小的控制电流,可以与单片机的I/O 口直接连接;输出则采用双向晶闸管控制,其输入输出间均通过内部光电耦合器隔离,可以防止信号间的干扰,是单片机接口的理想器件,随着其技术的成熟,应用的广泛,价格也已经非常的便宜,1A/250V 的目前在10 元左右,它与单片机的连接方法如图所示,当“-”端所接的P1.0 为低电平时,SSR 导通,负载工作。除了以上两种连接方法外,单片机与TTLCMOS 管等都可以连接。

转载于:https://my.oschina.net/u/1024767/blog/148118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值