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

5.1 何谓I/O口

AT89S51单片机共有4组I/O口——P0、P1、P2、P3,每组又有8个位,所以共有32个I/O口,占了40个管脚的绝大部分。这32个I/O口实现外围设备,如按钮开关、键盘、数码管、液晶屏等的控制,单片机通过这些I/O口表现出很强的控制能力。

5.1.1 I/O口的功能

我们通过表5-1所示的全自动洗衣机实例来看看单片机的I/O口是如何控制外设实现输入/输出功能的。首先,单片机的I/O口用做输入口的例子是P1.0口,它接收“启动/暂停”按钮(表5-1的阴影部分)输入的信号。当按钮按下,单片机发现P1.0=0,于是启动或暂停洗衣过程。I/O口用做输出口的例子是P2.3口,它控制排水阀是否打开,从而控制洗衣机中的水量。单片机的I/O口与其对应的部件和功能还可以从表5-1中了解到。

表5-1 洗衣机与单片机的I/O控制

从表5-1洗衣机与单片机的I/O控制可以感觉到,单片机的I/O口是双向的,既可以输入信号也可以输出信号。AT89S51单片机的P0和P2口还能作为地址总线和数据总线访问外部存储器。此外,P3口的双重功能在今后的系统开发中频繁地使用。表5-2给出了P3口除了作为一般I/O口使用外的第二种功能及功能描述,我们将会在后面的章节中逐一讲解这些功能。

表5-2 P3口的第二功能

5.1.2 I/O口与单片机的关系

I/O口暴露在单片机的外部,用来与外设的管脚连接。在单片机内部有相应的I/O口电路,如图5-2所示,除了4组I/O口外,单片机内部还有CPU、中断控制、片内ROM、片内RAM、Timer 0/1、串行口、看门狗、总线控制、振荡器等功能模块组成,这些功能模块稍后会逐一介绍。虽然像外部中断源 、计数器输入T0和T1、串行口TXD和RXD在图5-2中有独立画出管脚,但实际上这些管脚与某些I/O口是复用的(见表4-2)。

图5-2 AT89S51单片机内部功能模块示意图

5.1.3 I/O口的操作

前面许多实例都涉及I/O口对外设的控制,比如两个发光二极管交替发光、流水灯等。我们并没有在这些实例中区分P0、P1、P2、P3这四组I/O口有什么差异。接下来就看看这几组I/O口各自有什么特点。

P0口(32~39管脚)是一个8位的开漏型双向I/O口(5.4节将详细谈到开漏结构)。每个I/O口作为输出时最多可以驱动8个TTL输入口。其内部的开漏结构决定了P0口在作为输入/输出口使用时需要添加外部上拉电阻,如图5-3所示。

图5-3 P0口作为输入/输出端口时需要添加外部上拉电阻

单片机上电复位时,P0口默认作为输出口,如果需要作为输入口使用,需要先用程序向每个I/O口写入1,如程序5-1所示,指令“MOV A,#0FFH”首先令累加器A每位均为1,然后再通过指令“MOV P0,A”将1写入P0口。以后P0就可以作为输入口使用了。

程序5-1:P0口作为输入口

P1口(1~8管脚)是一组带内部上拉电阻的双向I/O口,每个I/O口作为输出时最多可以驱动4个TTL输入端口。由于P1口内置有上拉电阻,于是在作为输入/输出口时不再需要添加外置上拉电阻。在作为输入口时,也需要像程序5-1所示,向每位写入1。

另外,P1.5、P1.6、P1.7除作为一般I/O口外,还作为下载接口用于向单片机下载程序,它们的具体功能如表5-3所示。

表5-3 P1.5、P1.6、P1.7口作为下载接口

与P1口相似,P2口(21~28管脚)也是一组带内部上拉电阻的双向I/O口。作为输出时最多可以驱动4个TTL的输入端口。由于P2口内置有上拉电阻,于是在作输入/输出口时不再需要添加外置上拉电阻。当P2口作为输入时,需要写入1。

P3口(10~17管脚)同样是一组带内部上拉电阻的双向I/O口。作为输出口时最多可以驱动4个TTL的输入端口。由于P3口内置有上拉电阻,于是在作为输入/输出口时不再需要添加外置上拉电阻。当P3口作为输入时,需要写入1。 NhMWoWhGrmbUI4GL0cOrE76oUx+fu/W+NLH7lq8yTvvu8MgvjvE9Bg9UijA3Zu6J

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