单片机 原理与应用第九章.ppt
第九章 MCS-51系统I/O口的扩展技术 9.1 总线I/O口扩展技术 9.2 并行I/O口扩展技术 9.3 串行I/0口扩展技术9.1 总线I/O口扩展技术 采用TTL电路或CMOS电路锁存器、三态门电路作为I/O口扩展芯片,是单片机应用系统中经常采用的方法。这种I/0口一般都是通过PO口扩展,具有电路简单、成本低、配置灵活的优点。一般在扩展单个8位输出或输入口时,十分方便。可以作为I/0扩展芯片使用的TTL芯片有:373,377,244,245,273,367等。在实际应用中可根据系统对输入、输出的要求,选择合适的扩展芯片。图9-1为采用74L5244作扩展输入,74 LS273作扩展输出的简单I/0扩展电路。下一页 返回9.1 总线I/O口扩展技术 图9-1中,PO口为双向数据线,既能从74 L5244输入数据,又能将数据传送给74 LS273输出。输出控制信号由P2.0和W R合成,当二者同时为0电平时,“或”门输出0,将PO口的数据锁存到74 LS273,其输出控制着发光二极管LE D。当某线输出0电平时,该线上的LED发光。输入控制信号由P2.0和RD合成,当二者同时为电平时,“或”门输出0,选通74L5244,将外部信息输入到总线。当与244相连的按键开关无键按下时,输入全为1,若按下某键,则所在线输入为0 可见,输入和输出都是在P2.0为0时有效,因此,它们的口地址为FEFFH(实际只要保证P2.0=0,其他地址位无关),即占有相同的地址空间,但由于分别用RD和W R信号控制,因而在逻辑上不会发生冲突。上一页 下一页 返回9.1 总线I/O口扩展技术 系统中若有其他扩展RAM或其他输入/输出接口,则可用线选法或译码法将地址空间区分开。对于图9-1,如需实现的功能是按下一任意键,对应的LED发亮,则程序如下:LOOP:MOV DPTR,#OFEFFH;数据指针指向扩展I/O口地址 MOVX A,DPTR;读244读入数据,检测按钮 MOVXDPTR,A;向373输出数据,马伙动LE D S.JMP LOOP 循环上一页 下一页 返回9.1 总线I/O口扩展技术 9.1.2 可编程接口电路的扩展 可编程序接口是指其功能可由微处理机的指令来加以改变的接口芯片。可编程接口利用编程序的方法,可使一个接口芯片执行多种不同的接口功能,因此使用十分灵活。用它来连接微处理机和外设时,不需要或只需要很少的外加硬件。目前,各微机生产厂家已生产厂很多系列的可编程接口芯片,篇幅所限不能一一加以介绍,在此仅介绍在MCS-51单片机中常用的两种接口芯片:8255可编程通用并行接口和8155带256字节RAM和14位定时/计数器的可编程并行接口。1.8255可编程并行I/O扩展接口 上一页 下一页 返回9.1 总线I/O口扩展技术(1)8255的结构。8255具有3个可编程并行I/O端口,A口,B口和C口。这3个8位1/O端口的功能完全由编程决定,但每个口都有自己的特点。其组成框图及引脚见图9-2。8255可编程接口由以下4个逻辑结构组成 数据总线驭动器。这是双向三态的8位驭动口,用于和单片机的数据总术线相连,以实现单片机与8255芯片间的数据传送。3个并行I/0端口。A口:具有一个8位数据输出锁存/缓冲器和一个8位数据输入锁存器。是最灵活的输入输出寄存器,它可编程为8位输入输出或双向寄存器。B口:具有一个8位数据输入/输出锁存/缓冲器和一个8位数据输入缓冲器(不锁存),可编程作为8位输入或输出寄存器,但不能双向输入/输出。上一页 下一页 返回9.1 总线I/O口扩展技术 C口:具有一个8位数据锁存/缓冲器和一个8位数据输入缓冲器(不锁存)。这个口可分为两个4位口使用。C口除作输入输出口使用外,还可以作为A口,B口选通方式操作时的状态控制信号。读/写控制逻辑。它用于管理所有的数据、控制字或状态字的传送。它接收单片机的地址线和控制信号来控制各个口的工作状态。A组和B组控制电路。这是两组根据CPU的命令字控制8255工作方式的电路。每组控制电路从读、写控制逻辑接受各种命令,从内部数据总线接收控制字(即指令)并发出适当的命令到相应的端口。上一页 下一页 返回9.1 总线I/O口扩展技术 A组控制电路控制A口及C口的高4位。B组控制电路控制B口及C口的低4位。(2)8255的引脚介绍。8255的引脚如图9-2(a)所示。8255共有40个引脚,下面根据功能分类说明:数据总线:DO一D7,PAO一PA7,PBO一PB7,PCO一PC7,此32条数据线均为双向三态。DO-D7用于传送CPU与8255之I司的命令与数据,PAO-PA7,PBO-PB7,PCO-PC7,分别与A,B,C3个口相对应,用于8255与外设之间传送数据。上一页 下一页 返回9.1 总线I/O口扩展技术 控制线:RD,WR,RESET:读信号,输入,低电平有效。当这个引脚输入低时,据或状态信息到CPU,即CPU对8255 A进行读操作。写信号,输入,低电平有效。当这个引脚输入低时,控制8255送出数控制把CPU输出,的数据或命令写到8255,即CPU对8255进行写操作。RESET:复位信号,输入,高电平有效。当此引脚为高电平时,所有8255内部寄存器都清。所有通道都设置为输入方式。24条I/O引脚,为高阻状态。寻址线:,A0,Al 上一页 下一页 返回9.1 总线I/O口扩展技术:为芯片选择,输入,低电平有效。当此引脚为低电平时,本芯片被CPU选中。AO和A1:这是两个输入信号,通常一一对应接到地址总线最低两位AO和A1上。当CS有效时,这两位的4种组合00,O1,10,11分另11用来选择A,B,C口和控制寄存器。所以一片8255共有4个地址单元。(3)8255的工作方式。8255有3种工作方式,即方式0、方式1、方式20 方式0(基本输入/输出方式):这种方式不需要任何选通信号。A口、B口及C口的高4位和低4位都可以被设定为输入或输出。作为输出口时,输出的数据被锁存;作为输入口时,其输入的数据不锁存。上一页 下一页 返回9.1 总线I/O口扩展技术 方式1(选通输入/输出方式):在这种工作方式下,A,B,C3个口将分为两组。A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高4位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口可由编程设定为输入口或输出口,C口的低4位则用来作为输入/输出操作的控制和同步信号。A口和B口的输入数据或输出数据都被锁存。方式2(双向总线方式):在这种方式下,A口为8位双向总线口,C口的PC3-PC7用来作为输入/输出的控制同步信号。应注意的是,只有A口允许作为双向总线口使用。这时B口和PCO-PC3则可编程为方式0或方式1工作。在不同工作方式选择下,各个口的输入、输出功能见表9-1所示。上一页 下一页 返回9.1 总线I/O口扩展技术(4)8255的控制字。8255的工作方式选择是通过对控制口输入控制字(或称命令字)的方式实现的。控制字有方式选择控制字和C口置/复位控制字。方式选择控制字。方式选择控制字的格式与定义如图9-3(a)所示。例如,当将83 H(10000011 H)写入控制寄存器后,8255被编程为A口为方式0输出,B口为方式0输入,PC7 PC4为输出;PC3 PC0为输入。C口置/复位控制字。上一页 下一页 返回9.1 总线I/O口扩展技术 C口置/复位控制字的格式及定义如图9-3(b)所示。C口具有位操作功能,把一个置/复位控制字送入8255的控制寄存器(控制口),就能把C口的某一位置1或清零而不影响其他位的状态。例如,将07写入控制寄存器后,8255的PC3置1;写入OEH时,PC7复位为0(5)8031和8255的接口方法。8031单片机与8255的接口逻辑简单,其接口电路如图9-4所示。8255的片选信号CS及口地址选择线A0,A1,分别由8031的P0.7.和P0.0,P0.1经地址锁存后提供。故本片8255的A,B,C口及控制口地址分别为即FF7CH,FF7DH,FF7EH,FF7FHo 8255的D0一D7分别与8031的P0.0一P0.7相连。8255的复位端与8031的复位端相连,都接到8031的复位电路上。另外8031的,与R255的,对应相接上一页 下一页 返回9.1 总线I/O口扩展技术 2.8155可编程I/()扩展接口(1)8155结构及引脚。8155具有3个可编程I/)端口(A口,B口,C口,其中,A口和B口是8位,C口是6位),1个14位可编程的定时/计数器和256字节的静态RAM,能方便地进行I/0扩展和RAM扩展,其组成框图及引脚见图9-5 8155共有40个引脚,按其功能特点分类说明如下。地址数据线:AD0。一AD7。ADO-AD7是低8位地址线和数据线共用输入口,当ALE=1时,输入的是地址信息,否则是数据信息。所以ADO一AD7应与MCS-51的PO口相连。上一页 下一页 返回9.1 总线I/O口扩展技术 端口线。PAO一PA7,PBO一PB7:用于8155与外设之间传送数据。PCO-PC7:既可用于8155与外设之间传送数据,也可作为A口、B口的控制信号线。地址锁存线:ALE 在A LE的下降沿将单片机PO口输出的低8位地址信息及,的状态都锁存到8155内部寄存器。因此,单片机PO口输出的低8位地址信号不需外接锁存器。上一页 下一页 返回9.1 总线I/O口扩展技术 RAM或I/0口选择线:当=0时,选中8155的片内RAM,AD0-AD7为RAM的地址(00 H-FFH);当=1时,选中8155片内3个I/O端口以及命令/状态寄存器和定时/计数器。AD0-AD7为I/0口地址,其分配如表9-2所示。片选线:为低电平,选中本芯片。读、写线:,控制对8155的读、写操作。定时/计数器的脉冲输入、输出线:TIMERIN,上一页 下一页 返回9.1 总线I/O口扩展技术 TIMERIN是外界向8155输入计数脉冲信号的输入端,是8155向外界输出脉冲或方波的输出端。(2)8155的工作方式与基本操作。8155可作为通用I/O口,也可作为片外256字节RAM及定时/计数器使用,在各种不同类型下使用时的基本操作分法如下:作片外256字节RAM 在这种工作状态使用时,将 引脚置低电平,这时8155只能作片外RAM使用,其寻址范围由片选线(高位地址译码)和ADS-AD:决定,应与应用系统中其他数据存储器统一编址。使用片外RAM的读/写操作指今“MOVX 作扩展I/O口使用。8155作扩展I/O时,引脚必须为高电平,这时PA,PB,PC口的口地址低8位分别为1,2,3(设地址无关位为0时)。上一页 下一页 返回9.1 总线I/O口扩展技术 8155的I/,O口工作方式选择是通过对8155内部命令寄存器送命令字来实现的。命令寄存器由8位锁存器组成,只能写入不能读出。命令字每位定义如图9-6所示 8155的工作状态由状态寄存器指示,与命令寄存器属同一地址,只能读出不能写入。状态字格式如图9-7所示。端口操作:A口寄存器和B口寄存器有完全相同的功能,可工作于基本I/O方式或选通I/0方式。C口可工作于基本I/O方式,也可作为A口,B口选通方式工作时的状态控制信号线。上一页 下一页 返回9.1 总线I/O口扩展技术 当8155设定为方式1和方式2时,A口,B口,C口均工作于基本输入/输出方式,由“MOVX”类指令进行输入/输出操作;设定为方式3时,A口定义为选通输入/输出,由C口低3位作A口联络线,C口其余位作I/O线;设定为方式4时,A口、B口均定义为选通输入/输出方式,由C口作为A口、B口的联络线,其逻辑组态如图9-8所示。C口工作方式及每位的关系见表9-3 INTR为中断请求输出线,作为CPU的中断源,高电平有效。当8155的A口或B口缓冲器接收到设备打入的数据或设备从缓冲器中取走数据时,中断请求线INTR升高(仅当命令寄存器相应中断允许位为1),向CPU请求中断,CPU对8155的相应I/O口进行一次读/写操作后,INTR自动变为低电平。上一页 下一页 返回9.1 总线I/O口扩展技术 BF为I/O口缓冲器标志输出线。缓冲器存有数据时,BF为高电平,否则为低电平。为设备选通信号输入线,低电平有效。在I/0口设定为输出口时,仍可用对应的口地址执行读操作,读取输出口的内容;设定为输入口时,输出锁存器被清除,无法将数据写入输出锁存器。所以每次通道由输入方式转为输出方式时,输出端总是低电平。8155复位时,清除所有输出寄存器,3个端口都为输入方式。上一页 返回9.2 并行I/O口扩展技术 简单I/O口的扩展 在实际应用中经常会遇到开关量、数字量的输入输出,如开关、键盘、数码显示器等外设,主机可以随时与这些外设进行信息交换。在这种情况下,只要按照“输入三态,输出锁存”与总线相连的原则,选择74 LS系列的TTL或MOS电路即能组成简单的I/O扩展口。例如,采用8位三态缓冲器74 LS244组成输入口,采用8D锁存器74 LS273,74 LS373,74 LS377等组成输入口。图9-10所示为一种简单的I/O口连接方法,图中P2.0和P2.1分别与,信号相或组合后分别作为输入口和输出口的片选控制及锁存信号。I/O口相应的地址号为下一页 返回9.2 并行I/O口扩展技术 输出口:1111 1101 1111 1111 B=FDFFH,对应74 LS273芯片。输入口:1111 1110 1111 1111 B=FEFFH,对应74 LS244芯片。此时CPU与外设交换信息所采用的指令为 输入操作:MOV DPTR,#OFFFFH;输入端口地址一DPTR MOVX A,DPTR;输入数据在A寄存器中 输出操作:MOV A,#DATA输出数据 MOV DPTR,#OFDFFH输出端口地址一DPTR MOVX DPTR,A输出数据上一页返回9.3 串行I/0口扩展技术 如果在应用系统中,串行口未被用于串行通信,可将片内串行口用于扩展并行I/0口。此时,串行口工作在方式0。在这种应用方式时,串行口作同步移位寄存器,其波特率是固定的,为fosc/12。数据由RXD端(P3.0)输入/输出,同步移位时钟由TXD端(P3.1)输出。发送、接收的是8位数据,低位在前。这样既不占用片外的RAM地址,又节省硬件,是一种经济实用的方法。下一页 返回9.3 串行I/0口扩展技术 9.3.1 用74LS165扩展并行输入口 74 LS165是8位并入/串出移位寄存器。当移位/置入 由高到低跳变时,并行输入端的数据被置入寄存器;当=1,且时钟禁止端(第15脚)低电平时,允许时钟输入,这时在时钟脉冲的作用下,数据将由SIN到H方移位。利用该器件可方便的扩展输入口。图9-11所示是采用两片74LS165扩两个8位并行输入口的接口电路。上一页 下一页 返回9.3 串行I/0口扩展技术 图9-11中,TXD(P3.1)作为移位脉冲输出端,该端连接两片74LS165的移位脉冲输入端CP;RXD(P3.0)作为串行输入端,该端与74LS165的串行输出端QH相连;P1.0用来控制74LS165的移位,与 相连;74 LS165的时钟禁止端(巧脚)接地,表示允许时钟输入。当扩展多个8位输入口时,可将两芯片的首尾(QH与SIN)相连。从16位扩展口读入10组数据(每组两个字节)的子程序如下,运行结果可把它们转存到内部RAM 50H开始的单元中。上一页 下一页 返回9.3 串行I/0口扩展技术 MOV R7,#10;设置读入组数 MOV RO,#50 H;设置内部RAM数据区首址 STAPT:CLR P1.0;并行置入数据,S/L=0 SETS Pl.0;允许串行移位,S/L=1 MOV R 1,#02 H设置每组字节数,即外扩74 LS165的个数 RXDATA:MOV SCON,#10H;设串行口方式0,允许接收,启动 接收过程 WAIT:JNB RI.WAIT;未接收完一帧,循环等待 CLR RI;清RI标志:准备下次接收 MOV A,SBUF:读入数据上一页 下一页 返回9.3 串行I/0口扩展技术 MOVRO,A;送至RAM缓冲区 TNC RO;指向下一个地址 DJNZ R1.RXDATA;未读完一组数据,继续 DJNZ R7.START;10组数据未读完重新并行置入RET 按上图的方法扩展的输入口几乎是无限的,但扩展的越多,口的操作速度也就越慢。这一点使用时必须要注意。上一页 下一页 返回9.3 串行I/0口扩展技术 9.3.2 用74LS164扩展并行输出口 74 LS164是8位串入并出移位寄存器。图9-12所示是利用74LS164扩展两个8位并行输出端口电路。当MCS-51单片机片内串行口工作在方式0发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。由于74LS164无并行输出控制端,因而在串行输入过程中,其输出的状态会不断变化,在某些应用场合,在74 LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。上一页 下一页 返回9.3 串行I/0口扩展技术 将RAM缓冲区30H,31H的内容经串行口由74 LS164并行输出子程序如下:START:MOV R7,#02 H;设置要发送的字节个数 MOV RO,#30 H;设置地址指针 MOV SCON,#20 H;设置串行口为方式0 SEND:MOV A,RO MOV SBUF,A;启动串行口发送数据 W AIT:JNB TI.WAIT;一帧数据未发送完,循环等待 GLR Tl上一页 下一页 返回9.3 串行I/0口扩展技术 TNC RO;取下一个数 DJNZ R7.SEND RET上一页 返回图9-1 简单I/O接口扩展电路返回图9-2 8255内部结构与引脚返回图9-2 8255内部结构与引脚返回表9-1 在不同工作方式选择下,各个口的输入、输出功能返回 下一页表9-1 在不同工作方式选择下,各个口的输入、输出功能上一页 下一页 返回表9-1 在不同工作方式选择下,各个口的输入、输出功能上一页 返回图9-3 控制字的格式与意义返回图9-4 8031与8255的接口电路返回图9-5 8155结构和引脚返回表9-2 AD0-AD7为I/Ok口地址分配返回图9-6 8155的命令寄存器格式返回图9-7 8155的状态字格式返回图9-8 8155方式4时逻辑结构返回表9-9 8051与8155的接口电路返回表9-3 C口工作方式返回图9-10 一种简单的I/O连接方法返回图9-11 用74LS165扩展并行接入口返回图9-12 采用74LS164扩展并行输出口返回