单片机IO口扩展
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第九章 MCS-51单片机并行I/O接口的扩展
(一)学习要求
1、熟悉74LS377、74LS245外围芯片的特性和扩展方法。
2、掌握8255A芯片的结构和工作方式。
3、掌握8155A芯片的结构和工作方式。
4、掌握8155A的RAM和I/O端口寻址方法。
(二)内容提要
1、I/O接口的扩展
当所需扩展的外部I/O口数量不多时,可以使用常规的逻辑电路、锁存器进行扩展。这一类的外围芯片一般价格较低而且种类较多,常用的如:74LS377、74LS245、74LS373、74LS244、74LS273、74LS577、74LS573。
1)74LS377
74LS377是一种8D触发器,它的E端和CLK端是控制端,当它的E端为低电平时只要在CLK端产生一个正跳变,D0~D7将被锁存到Q0~Q7端输出,在其它情况下Q0~Q7端的输出保持不变。
可以利用74LS377这一特性扩展并行输出口。如图9-2使用了一片74LS377扩展输出口,如果将未使用到的地址线都置为1则可以得到该片74LS377的地址为7FFFH。如果单片机要从该片74LS377输出数据的可以执行如下指令:
MOV DPTR,#7FFFFH
MOVX @DPTR,A
2)74LS245。
74LS245是一种三态输出的八总线收发/驱动器,无锁存功能。它的端和DIR端是控制端,当它的G端为低电平时,如果DIR为高电平则74LS245将A端数据传送至B端,如果DIR为低电平则74LS245将B端数据传送至A端,在其它情况下不传送数据,并输出高阻态。
可以利用74LS245这一特性扩展并行输入口。如图9-4使用了一片74LS245扩展输入口,如果将未使用到的地址线都置为1则可以得到该片74LS245的地址为7FFFH。如果单片机要从该片74LS377输出数据的可以执行如下指令:
MOV DPTR,#7FFFFH
MOVX A,@DPTR
2、8255A可编程I/O接口设计及扩展技术
8255A是一种常见的8位可编程并行接口芯片,本接将着重介绍8255A的工作原理、编程方式和应用。
1)8255A芯片的结构
引脚功能如下:
RESET: 复位信号输入端,高电平有效,有效时清除8255A内部寄存器,
同时三个端口自动设为输入端;
D0-D7: 数据线;
V CC: 电源;
GND: 接地线。
PA: A组8位I/O口;
PB: B组8位I/O口;
PC: C组8位I/O口,还具备其它控制功能;
CS: 片选信号输入线,低电平有效;
RD: 读选通信号输入线,低电平有效;
WR: 写选通信号输入线,低电平有效;
A0A1: 端口信号选择端,用于决定当前对哪一个端口进行操作, 2)8255A的控制字和工作方式
8255A共有三种工作方式:方式0、方式1和方式2。方式0为基本的输入输出方式,方式1为有应答的单向输入输出方式,方式2为有应答的双向输入输出方式。
方式0
方式0为基本的输入输出方式。8255A的PA、PB、PC0-3、PC4-7可以分别被定义方式0输入和方式0输出。方式0输出具有锁存功能,输入没有锁存功能,因此方式0适合于无条件传送一组数据,比如可以读一组开关状态、控制一组指示灯,这种工作方式下,CPU可以随时读入开关状态,也可以随时将一组数据送指示灯显示。
方式1
方式1为有应答的单向输入输出方式。8255A的PA、PB可以分别被定义方式1输入和方式1输出,PC的某些位作为状态控制线和应答信号,剩余的线可以作为I/O口使用。
方式2
方式2为有应答的双向输入输出方式。只有8255A的PA可以分别被定义方式2,PC的某些位作为状态控制线和应答信号,剩余的线可以作为I/O口使用。
3)8255A的控制字
8255A由两种控制字:方式控制字和PC口的复位/置位控制字。这两个控制字的地址一样,它们的差别在于方式控制字的最高位为1,PC口的复位/置位控制字的最高位为0。
3、8255A应用举例
8255A可以直接与MCS-51系列的单片机进行接口。
1)方式0应用
如图9-13是8051扩展8255A的接口逻辑图,要求控制接于PA口上的8各指示灯,实现LO~L3灭,L4~L7亮。
计算8255A相关的地址,在图9-13中8255A的A0、A1分别接地址总线的A0、A1,片选端CS接P2.7口,根据表9-1可以计算出8255A的PA口的地址为7FFCH、PB口的地址为7FFDH、PC口的地址为7FFDH、控制字口的地址为7FFFH。
确定8255A的工作方式,根据要求可以采用PA口方式0输出。
决定如何控制,从图9-13可以看出,当PA口的某一位输出高电平时指示灯将灭,当PA
口的某一位输出低电平时指示灯将亮,如果要实现LO~L3灭,L4~L7亮,则要求PA口输出0FH。
根据以上分析可以编制如下子程序:
LED: MOV DPTR,#7FFFH ;写方式控制字,PA口方式0输出
MOV A,#80H
MOVX @DPTR,A
MOV DPTR,#7FFCH ;往PA口写数,控制灯
MOV A,#0FH
MOVX @DPTR,A
RET
2)方式1应用
如图9-14是8051扩展8255A的另一种接口逻辑图,要求根据外部设备的输入信号控制接于PA口上的8各指示灯,当外部设备输入0时L0亮,其它灭;输入1时L1亮,其它灭;……当外部设备输入值大于7时所有灯全灭。当外部设备输入数值后,会产生一负脉冲。
与前一例一样根据接线图可以确定8255A相关的地址,PA口的地址为7FFCH、PB口的地址为7FFDH、PC口的地址为7FFDH、控制字口的地址为7FFFH。
根据要求可以决定8255A的工作方式:PA口方式0输出,PB口方式1输入。
根据要求可以编制出如下完整程序:
LED: LJMP MAIN
ORG 0003H
LJMP INT_0
MAIN: MOV SP,#60H ;初始化中断相关参数
MOV IE,#81H
MOV DPTR,#7FFFH ;写方式控制字,PA口方式0输出,PB口方式1输入
MOV A,#86H
MOVX @DPTR,A
MOV A,#05H ;将PC2置为1,允许中断
MOVX @DPTR,A
SJMP $ ;等待外部设备输入数据
INT_0: MOV DPTR,#7FFDH ;从PB口读数据
MOVX A,@DPTR
MOV DPTR,#7FFCH ;准备对PA口操作
CJNE A,#08H,NOR
JNC DARK ;读入的数大于或等于8,所有灯全灭