购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 实例5:将 P1口状态送入P0、P2和P3口

本节通过一个将P1口状态送入P0、P2和P3口的实例,来介绍单片机的输入/输出口(I/O口)的基本结构和使用方法。本例采用的电路原理图如图3-5所示,要求当按下按键S时,发光二极管D0~D3均被点亮;松开按键S时,D0~D3均熄灭。本例的实质是将P1口的状态送到P0、P2和P3口。

img

图3-5 单片机I/O口状态输送的电路原理图

3.2.1 实现方法

可以利用单片机工作速度快这个特点,通过编程设置一个无限循环,让单片机不停地把P1口的电平状态送到P0、P2和P3口。在按下按键S时,P1.7引脚的灯被点亮的瞬间,P0.7引脚、P2.7引脚和P3.7引脚的3个灯也接着被点亮。

3.2.2 程序设计

先建立文件夹“ex5”,然后建立“ex5”工程项目,最后建立源程序文件“ex5.c”。输入以下源程序:

img

3.2.3 用Proteus软件仿真

经Keil软件编译通过后,可利用Proteus软件进行仿真。在Proteus ISIS工作环境中绘制好图 3-5所示仿真原理图,或者打开配套光盘中的“仿真实例\第三章\ ex5”文件夹内的“ex5.DSN”仿真原理图文件。然后用实例 4的方法将编译好的“ex5.hex”文件载入AT89C51中,并将单片机的时钟频率设置为“11.0592MHz”。启动仿真,按下按键S,可以看到D0~D3均被点亮,效果如图3-6所示。结果表明P1口的状态被送到了其他3个口。

注:今后如不特别说明,时钟频率均设置为“11.0592MHz”,后文对此不再赘述。

img

图3-6 将P1口状态送到P0、P2和P3口仿真效果

3.2.4 用实验板实验

程序仿真无误后,将“ex5”文件夹中的“ex5.hex”文件烧录入 AT89S51芯片中。再将烧录好的单片机插入实验板。为实验板通电,可以看到,在按下 P1.7引脚对应的按键时, P0.7引脚、P2.7引脚和P3.7引脚的3个LED被同时点亮。

3.2.5 I/O口功能介绍

实例5表明,单片机的P0、P1、P2和P3口具有输入/输出(I/O)功能。虽然P1.7引脚电平在编程时被置为高电平(P1=0xff),但是当按下按键S时,该引脚被接地,电平也被强制下拉为低电平。此时,低电平“0”通过 P1.7引脚被输入单片机,可见 P1口具有输入功能。在按下按键S时,不仅P1.7引脚LED点亮,而且P0.7引脚LED也被点亮,这表明P1口的状态被送到了P0口,所以P1口还具有输出功能。同样地,P0、P2和P3口也有类似的输入/输出功能。

3.2.6 I/O口的结构分析

要更好地使用单片机的I/O口,必须了解其内部结构。

1.P0口内部结构(外接32~39脚)

P0端口有P0.0~P0.7共8个引脚。图3-7所示为P0口某一引脚的内部电路结构,其他引脚的内部结构都与此相同。图中有1个输出锁存器、2个三态缓冲器、1个输出驱动电路和1个输出控制端。输出驱动电路由一对场效应管组成,其工作状态受输出端的控制,输出控制端由1个与门、1个反相器和1个转换开关MUX组成。应用时,P0口需外接上拉电阻。

img

图3-7 P0口内部电路结构

1)P0口用作输入端口

如果P0口用作输入端口,则P0端口的输入信号既送到下面的三态缓冲器,又送到V2的漏极。如果锁存器之前锁存为“0”,即 Q =0, img =1,则V2导通,通过P0端口的外接上拉电阻,P0端口被钳在“0”电平上,“1”无法送入 P0端口。所以,在数据输入 P0端口前,必须先通过内部总线向锁存器写“1”,即让 Q =1,V2截止,P0端口输入的“1”就可以送到三态门的输入端。此时,再给三态门的读引脚送一个读控制信号(高电平),“1”就可以通过三态门送到内部总线。

2)P0口用作输出端口

如果P0口用作输出端口,则单片机内部的CPU会发出一个“0”到与门的控制端。控制端的“0”一方面关闭与门,使地址/数据总线送来的信号无法通过与门;另一方面控制电子开关,让电子开关与锁存器的 img 端接通。此时,若给写锁存器端CP送入写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器,并从Q和 img 端输出,如果D端输入“1”,则 img 端输出“0”,该“0”使场效应管V2截止,通过P0口的外接上拉电阻,可使P0端口输出高电平“1”。

2.P1口内部结构(外接1~8脚)

P1口的内部电路结构如图 3-8所示。由于其内部与电源之间接了一只上拉电阻,所以P1端口外部不用再接上拉电阻。

img

图3-8 P1口的内部电路结构

1)P1口用作输入端口

如果P1口用作输入端口,即 Q =0, img =1,则图3-8中的场效应管导通,通过P1端口的内部上拉电阻,P1端口被钳在“0”电平上,“1”无法送入 P1端口。所以与 P0端口一样,在将数据输入 P1端口前,先要通过内部总线向锁存器写“1”。让 img =0,场效应管截止,P1端口输入的“1”就可以送到输入三态缓冲器的输入端。此时,再给三态门的读引脚送一个读控制信号,“1”就可以通过三态缓冲器送到内部总线。

2)P1口用作输出端口

如果 P1口用作输出端口,应给锁存器的写锁存器 CP端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和 img 端输出,如果D端输入“1”,则 img =0,“0”送到场效应管的栅极,场效应管截止,从P1口输出“1”。

3.P2口内部结构(外接21~28脚

P2口有P2.0~P2.7共8个引脚,其内部电路结构如图3-9所示。

img

图3-9 P2口的内部电路结构

1)P2口用作输入端口

当P2口作通用I/O端口使用时,同样需要先通过内部总线向锁存器写“1”,让 Q =1,场效应管截止,P2口输入的“1”才能送到输入三态门的输入端。此时,再给读引脚送一个读控制信号,“1”就可以通过三态门送到内部总线。

2)P2口用作输出端口

当 P2口用作输出端口时,给锁存器的 CP端送写脉冲信号,内部总线上的数据就被锁存进锁存器并从Q端输出,再通过电子开关、非门和场效应管从P2口输出。

4.P3口内部结构(外接10~17脚)

P3口有P3.0~P3.7共8个引脚,其内部电路结构如图3-10所示。

img

图3-10 P3口的内部电路结构

1)P3口用作I/O接口时

当P3口用作I/O接口时,其使用方法与P1和P2类似。

2)P3口用作第二功能时

P3口的内部电路结构的特殊性决定其还可用作第二功能。每一位功能定义如表 3-1所示。例如,P3.2引脚用作第二功能时,该端口可输入外部设备送到的中断请求信号。

表 3-1 P3口的第二功能

img

总之,P0、P1、P2和P3口都可以作输入/输出端口;P3口具有第二功能。各端口的用法:P0口使用时需外接上拉电阻;P1~P3口使用时不需外接上拉电阻;在用作输入端口时,都需要先通过内部总线置“1”。 /+GQnte3o3jvvhODLAlk5JBtTbhAfAd6cn81nmGIDPQLlibtB2xpCcKy+G498F/0

点击中间区域
呼出菜单
上一章
目录
下一章
×