第9章 AT89S51单片机的I/O扩展,1,,成都理工大学工程技术学院 自动化工程系,2,第9章 目录 9.1 I/O接口扩展概述 9.1.1 扩展的I/O接口功能 9.1.2 I/O端口的编址 9.1.3 I/O数据的传送方式 9.1.4 I/O接口电路 9.2 AT89S51扩展I/O接口芯片82C55的设计 9.2.1 82C55芯片简介 9.2.2 工作方式选择控制字及端口PC置位/复位控制字 9.2.3 82C55的3种工作方式 9.2.4 AT89S51单片机与82C55的接口设计,3,9.3 AT89S51扩展I/O接口芯片81C55的设计 9.3.1 81C55芯片介绍 9.3.2 81C55的工作方式 9.3.3 AT89S51单片机与81C55的接口设计及软件编程 9.4 利用74LSTTL电路扩展并行I/O口 9.5 用AT89S51单片机的串行口扩展并行口 9.5.1 用74LS165扩展并行输入口 9.5.2 用74LS164扩展并行输出口 9.6 用I/O口控制的声音报警接口 9.6.1 蜂鸣音报警接口 9.6.2 音乐报警接口,4,内容概要 AT89S51有4个I/O口P0P3,真正用作I/O口线的只有P1口的8位I/O口线和P3口的某些位线。
因此,大多需要外部I/O接口的扩展 介绍AT89S51与两种常用的可编程I/O接口芯片82C55和81C55的扩展接口设计此外还介绍使用廉价的74LSTTL芯片扩展并行I/O接口以及用AT89S51串行口来扩展并行I/O接口的设计最后介绍使用I/O口控制的声音报警接口2输出数据锁存 与外设比,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收所以在扩展的I/O接口电路中应有输出数据锁存器,以保证输出数据能为慢速的接收设备所接收 3输入数据三态缓冲 数据总线上可能“挂”有多个数据源,为使传送数据时不发生冲突,只允许当前时刻正在接收数据的I/O接口使用数据总线,其余的I/O接口应处于隔离状态,为此要求I/O接口电路能为数据输入提供三态缓冲功能6,9.1.2 I/O端口的编址 介绍I/O端口编址之前,首先要弄清楚I/O接口和I/O端口的概念 I/O接口是单片机与外设间的连接电路的总称 I/O端口(简称I/O口)是指I/O接口电路中具有单元地址的寄存器或缓冲器一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。
每个I/O接口中的端口都要有地址,以便AT89S51通过读写端口来和外设交换信息常用的I/O端口编址有两种方式,独立编址方式与统一编址方式7,1独立编址 I/O端口地址空间和存储器地址空间分开编址优点是I/O地址空间和存储器地址空间相互独立,界限分明但需要设置一套专门的读写I/O端口的指令和控制信号 2统一编址 把I/O端口与数据存储器单元同等对待I/O端口和外部数据存储器RAM统一编址因此外部数据存储器空间也包括I/O端口在内 优点是不需专门的I/O指令缺点是需要把数据存储器单元地址与I/O端口的地址划分清楚,避免数据冲突8,9.1.3 I/O数据的传送方式 为了实现和不同外设的速度匹配,必须根据不同外设选择恰当的I/O数据传送方式I/O数据传送方式有:同步传送、异步传送和中断传送 1同步传送 同步传送又称无条件传送当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片机和外部数据存储器之间的数据传送 2查询传送 又称有条件传送(也称异步式传送)通过查询外设“准备好”后,再进行数据传送优点是通用性好,硬件连线和查询程序简单,但工作效率不高9,3中断传送 为了提高单片机对外设的工作效率,通常采用中断传送方式,来实现I/O数据的传送。
单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送中断服务完成后又返回主程序断点处继续执行采用中断方式可大大提高工作效率 9.1.4 I/O接口电路 常用的外围I/O接口芯片: (1)82C55:可编程通用并行接口(3个8位I/O口)10,(2)81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器) 都可以和AT89S51直接连接,接口逻辑简单 9.2 AT89S51扩展I/O接口芯片82C55的设计 先介绍可编程并行I/O接口芯片82C55的应用特性,然后介绍AT89S51与82C55的接口电路以及软件设计 9.2.1 82C55芯片简介 Intel公司的可编程并行I/O接口芯片,3个8位并行I/O口,3种工作方式,单片机与多种外设连接时的中间接口电路引脚及内部结构如图9-1和图9-2所示11,12,图9-1 82C55的引脚图 图9-2 82C55的内部结构,1引脚说明 共40个引脚,引脚功能如下: D7D0:三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息。
:片选信号线,低有效,表示本芯片被选中 :读信号线,低有效,读82C55端口数据的控制信号 :写信号线,低电平有效,用来向82C55写入端口数据的控制信号 VCC:+5V电源13,PA7PA0:端口A输入/输出线 PB7PB0:端口B输入/输出线 PC7PC0:端口C输入/输出线 A1、A0:地址线,用来选择82C55内部的4个端口 RESET:复位引脚,高电平有效 2内部结构 如图9-2所示,3个并行数据输入/输出端口,两种工作方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器 各部件的功能如下:,14,(1)端口PA、PB、PC 3个8位并行口PA、PB和PC,都可以选为输入/输出工作模式,功能和结构上有差异 PA口:一个8位数据输出锁存器和缓冲器;一个8位数据输入锁存器 PB口:一个8位数据输出锁存器和缓冲器;一个8位数据输入缓冲器 PC口:一个8位的输出锁存器;一个8位数据输入缓冲器 通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件控制下,分为两个4位的端口,作为端口PA、PB选通方式操作时的状态控制信号15,(2)A组和B组控制电路 是两组根据AT89S51写入的“命令字”控制82C55工作方式的控制电路。
A组控制PA口和PC口的上半部(PC7PC4);B组控制PB口和PC口的下半部(PC3PC0),并可用“命令字”来对端口PC的每一位实现按位置“1”或清“0” (3)数据总线缓冲器 数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息16,(4)读/写控制逻辑电路 接收AT89S51单片机发来的控制信号 、 、RESET、地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S51单片机读出,或者将AT89S51单片机送来的数据写入端口 各端口工作状态与控制信号的关系见表9-117,18,9.2.2 工作方式选择控制字及端口PC置位/复位控制字 可向82C55控制寄存器写入两种不同的控制字 1工作方式选择控制字 82C55有3种基本工作方式: (1)方式0基本输入/输出; (2)方式1选通输入/输出; (3)方式2双向传送(仅PA口有此工作方式) 3种工作方式方式控制字来决定格式如图9-3所示最高位D7=1,为本方式控制字的标志,以便与另一控制字相区别(最高位D7=0)19,20,图9-3 82C55的方式控制字格式,PC口分两部分,随PA口称为A组,随PB口称为B组。
其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1 【例9-1】AT89S51向82C55的控制字寄存器写入工作方式控制字95H,根据图9-3,将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7PC4)输出,PC口的下半部分(PC3PC0)输入 MOVDPTR,#H;控制字寄存器端口地址 ;H送DPTR MOV A,#95H; 方式控制字95H送A MOVXDPTR,A; 控制字95H送控制字寄存器,21,2PC口按位置位/复位控制字 为另一控制字即PC口中任何一位,可用一个写入82C55控制口的置位/复位控制字来对PC口按位置“1”或清“0”用于位控格式如图9-4所示 【例9-2】 AT89S51向82C55的控制字寄存器写入工作方式控制字07H,则PC3置1;08H写入控制口,则PC4清0程序段如下: MOVDPTR,#H; 控制寄存器端口地址 ;H送DPTR MOV A,#07H; 方式控制字07H送A,22,23,图9-4 PC口按位置位/复位控制字格式,MOVXDPTR,A; 控制字07H送控制寄存器,把PC3置1 MOVDPTR,#H; 控制字寄存器端口地址送DPTR MOV A,#08H; 方式控制字08H送A MOVXDPTR,A; 08H送控制字寄存器,PC4清0,24,9.2.3 82C55的3种工作方式 1方式0 是基本输入/输出方式。
T89S51可对82C55进行I/O数据的无条件传送 例如,AT89S51单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组指示灯的亮、灭并不需要任何条件,外设I/O数据可在82C55的各端口得到锁存和缓冲因此,方式0称为基本输入/输出方式 方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号方式0的基本功能如下:,25,26,(1)具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分) (2)任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合 PA口、PB口和PC口均可设定为方式0,并可根据需要,向控制寄存器写入工作方式控制字,规定各端口为输入或输出方式例9-3】假设82C55的控制字寄存器端口地址为FF7FH,令PA口和PC口的高4位为方式0输出,PB口和PC口的低4位为方式0输入,初始化程序: MOVDPTR,#0FF7FH; 端口地址#0FF7F送DPTR MOV A,#83H; 方式控制字83H送A MOVXDPTR,A; 控制字83H送控制字寄存器,27,2方式1 是一种采用应答联络的输入/输出工作方式 PA口、PB口皆可设成这种工作方式。
在方式1下,82C55的PA口和PB口通常用于I/O数据的传送,PC口用作PA口和PB口的应答联络信号线,以实现采用中断方式来传送I/O数据 PC口的PC7PC0的应答联络线是规定好的,其各位分配如图9-5和图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用 下介绍方式1输入/输出时的应答联络信号与工作原理28,(1)方式1输入 方式1输入应答联络信号如图9-5所示其中 与IBF为一对应答联络信号各应答联络信号的功能如下 :是由输入外设发给82C55的选通输入信号,低有效 IBF:输入缓冲器满,应答信号82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高有效 INTR:由82C55向AT89S51单片机发出的中断请求信号,高有效 INTEA:控制PA口是否允许中断的控制信号,由PC4的置位/复位来控制29,INTEB:控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制 方式1输入如图9-6所示下面以PA口的方式1输入为例,介绍方式1输入的工作过程 当外设向82C55输入一个数据并送到PA7PA0时,外设自动在 上向82C55发送一个低电平选通信号。
82C55收到 后,先把PA7PA0输入的数据存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBF变为高,通知输入外。