在单片机系统中主要有两类数据传送操作,一类是单片机和存储器之间的数据读写操作;另一类则是单片机和其它设备之间的数据输入/输出(I/O)操作。单片机和存储器之间的连接十分简单,主要包括地址线、数据线、读写选通信号。
单片机与控制对象或外部设备之间的数据传送却十分复杂,存在速度不匹配,电平不一致,信号需要转换等问题。使用扩展的I/O接口电路可以较好实现速度协调、输出数据锁存、输入数据缓冲、数据转换等。 一、简单I/O口的扩展 由于单片机的P0口经常用作数据线或低8位地址线;P2口用作高8位地址线,P3口的第2功能更为重要,所以只有P1口能用作真正的数据I/O口来使用,但是,在很多场合,仅使用P1口来作为数据I/O口是不够的,这是就需要扩展I/O口。 当所需扩展的外部1/O口数量不多时,可以使用常规的逻辑电路、锁存器进行扩展。这一类的外围芯片一般价格较低而且种类较多,常用的如:74LS377、74LS245、74LS373、74LS244、74LS273、74LS577、74LS573。 1、输入接口扩展 图1是利用74LS244进行简单输入接口扩展的连接图。
图1 74LS244系统扩展图 从图中可以看出,当P2.5和同时为低电平时,74LS244才能将输入端的数据送到8051的P0口,其中P2.5决定了74LS244的地址为:XX0XXXXXXXXXXXXXB。通常,我们选择的地址是DFFFH,则接口的输入操作程序如下:
MOV DPTR,#0DFFFH MOVX A,@DPTR 2、输出接口扩展 图2是利用74LS377进行简单输出接口扩展的连接图。 图中利用P2.6(即A14)和A0对2块74LS377芯片进行选择。当P2.6=1、A0=0时选中74LS377(1);当P2.6=1、A0=l时选中74LS377(2)。假设未用的地址线为“1”,则74LS377(1)的地址为0FFFEH,74LS377(2)的地址为0FFFFH。 74LS377(1)输出数据的操作指令如下: MOV DPTR,#0FFFEH MOV A,#DATA MOVX @DPTR,A
图2 74LS377系统扩展图
二、可编程并行I/O接口芯片8255A
Intel8255A是一种可编程通用并行接口芯片,可适用于多种微处理器的8位并行输入/输出接口芯片。它具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口,能适应CPU与I/O接口之间的多种数据传送方式的要求,芯片内部主要由控制寄存器、状态寄存器、数据寄存器组成,能独立编程,有3种工作方式。使用8255A可实现多种数据传送方式的要求。 1.8255A的结构 8255A由三部分组成,结构如图3所示。
图3 8255A内部结构图
2.8255A与MCS-51系列单片机的连接
图4 8255与单片机连接图
3.8255A的控制字
图5 8255的工作方式控制字
8255A还有一个C口置/复位控制字,用来设置C口某位的状态,而不影响其他位。如图6。
图6 8255C口置位复位控制字4.8255A三种工作方式的功能及应用举例 三种基本的工作方式: (1)方式0:基本输入/输出方式 方式0不使用联络信号,也不使用中断,A口和B口可定义为输入或输出口,C口分成两个部分(高4位和低4位),C口的两个部分也可分别定义为输入或输出。在方式0时,所有口输出均有锁存,输入只有缓冲,而无锁存,C口还具有按位将其各位清0或置1的功能。 利用8255A作为无条件输出接口,可以实现报警电路的设计,如图7所示。
图7 报警接口电路图
(2)方式1:选通输入/输出方式 A口借用C口的一些信号线作控制和状态线,形成A组;B口借用C口的一些信号线用作控制和状态线,组成B组。在方式1下,A口和B口的输入输出均带有锁存。 利用8255A用作查询输入接口,可以实现外部输入装置与CPU的连接,如图8所示。
图8 输入装置与CPU接口示意图
(3)方式2:双向输入/输出工作方式 方式2是A组独有的工作方式。外设既能在A口的8条引线上发送数据,又能接收数据。此方式也是借用C口的5条信号线作控制和状态线,A口的输入和输出均带有锁存。方式2下的联络信号线定义如图9所示。
图9 方式2下的联络信号线定义
|