第8章51单片机的IO扩展.ppt
《第8章51单片机的IO扩展.ppt》由会员分享,可在线阅读,更多相关《第8章51单片机的IO扩展.ppt(98页珍藏版)》请在三一文库上搜索。
1、第8章 单片机的I/O扩展,本章内容,系统扩展的含义 I/O口的扩展 利用I/O接口芯片:82C51、81C51的I/O口扩展,8.1 单片机的系统扩展概述,系统扩展的含义 在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,称为系统扩展。 系统扩展包括:外部存储器扩展,I/O接口扩展,总线扩展等 系统扩展分类 单一功能的扩展 综合功能的扩展,8.1 单片机I/O扩展概述,扩展I/O接口电路的功能: 速度协调 输出数据锁存 输入数据三态缓冲 数据转换,为什么要扩展I/O口 单片机本身接口功能有限 单片机控制应用中的复杂接口要求,常用编址方法有:独立编址和统一编址。 MCS51单片机采用与外
2、部RAM统一编址方法,即每一个扩展的I/O口相当于一个扩展的RAM单元; 访问外部I/O口的指令同访问外部数据存储器指令。,51单片机扩展I/O接口编址方法,例如: MOVX DPTR , A MOVX A,DPTR MOVX RI,A MOVX A,RI ;其中,DPTR、RI中装I/O对应的地址,(1)无条件传送方式 无条件传送也称为同步程序传送。 只有那些能一直为数据I/O传送作好准备的设备,才能使用无条件传送方式。因为在进行I/O操作时,不测试设备的状态,可以根据需要随时进行数据传送操作。 该方式适用于两类设备的数据输入输出: 具有常驻的数据信号 变化缓慢的数据信号的设备。 无条件传送
3、接口逻辑示于图8-1,单片机I/O控制方式,图8-1 无条件传送的接口逻辑,在I/O操作之前,要先检浏设备的状态,以了解设备是否已为数据I/O作好了准备; 只有在确认设备已“准备好”的情况下,单片机才能执行数据I/O操作。操作流程见图8-2 为了实现查询方式的数据传送,需要由接口电路提供设备状态,并以软件方法进行状态测试。这是一种软硬件方法结合的数据传送方式。 程序查询方式,电路简单,查询软件也不复杂,而且通用性强。,(2)查询方式(有条件传送方式),图8-2 查询传送流程,中断方式又称程序中断方式、它与查询方式的主要区别在于知何知道设备是否为数据传送作好了准备,查询方式是单片机的主动形式,而
4、中断方式则是单片机等待通知(中断请求)的被动形式。 采用中断方式进行数据传送时,当设备为数据传送作好准备之后,就向单片机发出中断请求; 单片机接收到中断请求之后,即作出响应,暂停正在执行的原程序,而转去为设备的数据输入输出服务 待服务完成之后,程序返回,单片机再继续执行被中断的原程序。中断传送逻辑见图8-3。,(3)中断方式,图8-3 中断方式数据传送逻辑,I/O扩展的分类,利用锁存器、缓冲器进行并行口简单扩展 用可编程并行接口芯片进行扩展I/O接口扩展常用芯片 51单片机常用I/O扩展芯片示于表8-1。,表8-1 MCS-51单片机I/O扩展常用芯片,8.2 简单I/O口扩展,8.2.1 简
5、单接口常用锁存器、缓冲器芯片,I/O口的简单扩展 输出口-利用锁存器扩展 输入口-利用缓冲器扩展,74LS377、74LS273、74LS244、74LS245,8位数据/地址锁存器74LS273/373,(1)74LS273 74LS273是一种带清除功能的8D触发器 其内部结构如图8-4所示 引脚分布如图8-5所示 真值表见表8-2所示 1D8D为数据输入端 1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。,表8-2 74LS273真值表,图8.4 74LS273内部结构图,图8-5 74LS273封装图,(2)74LS373,74LS373是一种带有三态输出门的8D触
6、发器 其内部结构如图8-6所示 引脚分布如图8-7所示 数据输入由允许端G控制 数据输出由数据输出控制端控制 各触发器仅输出单一状态 D1D8为数据输入端 Q1Q8为数据输出端 触发器的功能如表8-3所示 常用作数据/地址锁存器,图8-6 74LS373内部结构图,表8-3 74LS373真值表,图8-7 74LS373引脚功能图,(3)74LS244,74LS244是三态八缓冲器/线驱动器/线接收器(3S,两组控制) 内部结构逻辑图(见图8-8):,图8-8 74LS244引脚功能图,(3)74LS244(续),引出端符号: 1A11A4,2A12A4: 输入端 1G#, 2G#: 三态允许
7、端(低电平有效) 1Y11Y4,2Y12Y4: 输出端,真值表: (见表8-4),表8-4 74LS244真值表,(4)74LS245,74LS245: 8位双向3态缓冲电路,主要用在数据的双向缓冲 内部结构逻辑见图8-9,图8-9 74LS245引脚功能图,(4)74LS245(续),74LS245的真值表见表8-5,表8-5 74LS245真值表,8.2.2 简单I/O口扩展,简单输入口扩展,图8-10 74LS244扩展输入接口电路,简单输出口扩展,图8-11 74LS377扩展输出接口电路,简单并行口扩展应用举例,图8-12 74LS系列扩展输入/输出接口电路,【例8-1】 如图8-1
8、2所示为一个利用74LS244和74LS273芯片,将P0口扩展成简单的输入/输出口的电路。 74LS244和74LS273的工作受AT89S51的P2.0、RD#、WR# 3条控制线控制。 74LS244作为扩展输入口,8个输入端分别接8个按钮开关。 74LS273是8D锁存器扩展输出口,接8个LED发光二极管,以显示8个按钮开关状态。 当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。,简单并行口扩展应用举例,该电路的工作原理如下 当P2.0=0,RD#=0(W
9、R#=1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51片内。 当P2.0=0,WR#=0(RD#=1)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮。 总之,在图8-12中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。,【例8-1】 分析,输入程序段: MOV DPTR,#0FEFF
10、H ;I/O地址DPTR MOVX A,DPTR ;RD#为低,74LS244数据被读入A中 输出程序段: MOV A,#data ;数据#dataA MOV DPTR,#0FEFFH ;I/O地址#0FEFFHDPTR MOVX DPTR,A ;WR#为低,数据经74LS273口输出,【例8-1】 输入、输出程序,程序如下: DDIS: MOV DPTR,#0FEFFH ;输入口地址DPTR LP: MOVX A,DPTR ;按钮开关状态读入A中 MOVX DPTR,A ;A中数据送显示输出口 SJMP LP ;反复连续执行 由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一
11、样方便。图8-12仅仅扩展了两片,如果仍不够用,还可扩展多片74LS244、74LS273之类的芯片。但作为输入口时,一定要求有三态功能,否则将影响总线的正常工作。,【例8-1】 程序编写程序把按钮开关状态通过图8-12的发光二极管显示出来。,8.3 用51单片机的串行口扩展并行口,串口的方式0用于I/O扩展。方式0为同步移位寄存器工作方式,波特率为fosc/12。数据由RXD端(P3.0)输入,同步移位时钟由TXD端(P3.1)输出。,用74LS165扩展并行输入口 如图8-13,用51单片机的串口扩展两个8位并行输入口。 74LS165是8位并行输入串行输出的寄存器。当74LS165的S/
12、L#端由高到低跳变,并行输入端的数据被置入寄存器; 当S/L#=1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。,用74LS165扩展并行输入口,TXD与所有74LS165的CP相连;RXD与74LS165的串行输出端QH相连;P1.0与 S/L#相连,控制74LS165的串行移位或并行输入; 15脚接地,允许时钟输入。 当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。,图8-13 利用74LS165扩展16位并行输入口,【例8-2】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元。编程如
13、下:,MOV R7,#05H ;设置读入组数 MOV R0,#20H ;设置内部RAM数据区首址 START: CLR P1.0 ;并行置入数据,S/L#=0 SETB P1.0 ;允许串行移位,S/L#=1 MOV R2,#02H ;设每组字节数,即74LS165的个数 RXDATA: MOV SCON,#00010000H ;设置串口方式0,允许 ;接收,启动接收过程 WAIT: JNB RI,WAIT ;未接收完一帧,循环等待 CLR RI ;RI标志清“0”,准备下次接收 MOV A,SBUF ;读入数据 MOV R0,A ;送至RAM缓冲区 INC R0 ;指向下一个地址 DJNZ
14、R2,RXDATA ;未读完一组数据, 继续 DJNZ R7,START ;5组数据未读完重新并行置入 ;对数据进行处理 串行接收过程采用查询等待的方式,如必要,可改中断方式。,用74LS164扩展并行输出口,图8-14为51单片机的串口外接两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。,图8-14 利用74LS164扩展16位并行输出口,当串口工作在方式0的发送,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。 注意,由于74LS164无并行输出控制端,在串行输入中,其输出端的状态会不断变化,故某些场合,在74LS164输出端应加接输出三态
15、门控制,以便保证串行输入结束后再输出数据。,用74LS164扩展并行输出口,START:MOV R7,#02H ;设置要发送的字节个数 MOV R0,#30H ;设置地址指针 MOV SCON,#00H ;设置串行口为方式0 SEND: MOV A,R0 MOV SBUF,A ;启动串行口发送过程 WAIT: JNB TI,WAIT ;一帧未发完,等待 CLR TI INC R0 ;取下一个数 DJNZ R7,SEND ;未发完,继续,从子程序返回 RET,【例8-3】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。,8.4 可编程并行接口芯片的扩展,8.4.1
16、利用可编程并行接口芯片8255的I/O扩展,常用的外围I/O接口芯片: 82C55:可编程通用并行接口(3个8位I/O口)。 81C55:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256RAM单元,1个14位的减法计数器)。 都可以和AT89S51直接连接,接口逻辑简单。,8255的结构,图8-15 8255的内部结构框图,图8-16 8255的扩展逻辑电路图,8255的扩展逻辑电路,MCS-51单片机可以和8255直接连接,图8-16给出了一种扩展电路。,8255并口扩展举例,【例8-4】8255与8031连接如图8-17所示,要求: 试确定8255A的端口地址
17、欲使A口: 方式0,输出口;B口:方式1,输入口; 上C口:方式0,输出。编写初始化程序 欲使8051内部RAM30H的内容从PA口输出,试编程。 欲使PC7向外输出一个正脉冲信号,试编程。,图8-17 8255与8031连接图,【例8-4】解答,P2 P0 0, ,0 0 A口: 7FFCH(0000H) 0, ,0 1 B口: 7FFDH(0001H) 0, ,1 0 C口: 7FFEH(0002H) 0, ,1 1 控制口: 7FFFH(0003H),MOV DPTR ,#7FFFH ;控制口地址 MOV A ,#86H ;方式字:10000110B=86H MOVX DPTR ,A,初
18、始化编程,确定地址,程序段 MOV A,30H MOV DPTR,#7FFCH MOVX DPTR,A, 程序段 MOV DPTR,#7FFFH MOV A,#86H ;设工作方式 MOVX DPTR,A MOV A,#0EH ;C口置位字,PC7=0 MOVX DPTR ,A ACALL DELAY1 ;延时 MOV A,#0FH ;C口置位字,PC7=1 MOVX DPTR ,A ACALL DELAY1 ;延时 DEC A ;C口置位字,PC7=0 MOVX DPTR,A ACALL DELAY2 ;延时,【例8-4解答】,【例8-5】 设单片机通过8255来控制一顺序控制过程,该系统连
19、接如图8-18,A口输出6路顺序控制信号,以指示灯指示,6道工序,每道工序时间为10秒。PC0输入启动信号,PC7输入停止信号,分别与SA1和SA2相连。试编写此应用程序。,图8-18 8255A的应用举例,(2)端口的工作方式为方式0,A口为输出口,C口为输入口, 8255的控制字为89H。,(1)8255四个端口的地址: ,00,00B A口地址:FCFCH ,00,01B B口地址:FCFDH ,00,10B C口地址:FCFEH ,00,11B 控制口地址:FCFFH,【例8-5】解答,ORG 0100H MA: MOV DPTR,#0FCFFH ;控制寄存器地址 MOV A,#89H
20、 ;控制字 MOVX DPTR,A ;控制字送控制寄存器 MOV DPTR,#0FCFEH ;C口地址 QD: MOVX A,DPTR ;读C口 JNB ACC.0,QD ;判断有无启动信号 LOOP: MOV DPTR,#0FCFCH ; A口地址 MOV A,#01H ;第一路控制信号 LOOP1: MOVX DPTR,A ;输出第一路控制信号 ACALL DELAY ;延迟10秒 RL A ;下一路控制信号 JNB ACC.6,LOOP1 ;判断6路控制信号有无输出完,()控制程序如下:,MOV DPTR,#0FCFEH ;C口地址 MOVX A,DPTR ;读C口 JB ACC.7,T
21、Z ;判断有无停止信号 JMP LOOP ;无停止信号则进行下一轮控制 TZ: MOV DPTR,#0FCFCH ;有停止信号则使A口输出清零 CLR A MOVX DPTR,A SJMP $ ORG 1000H ;延时子程序 DELAY:MOV 22H,#50H L1: MOV 21H,#100H L2: MOV 20H,#250H L3: NOP NOP DJNZ 20H,L3 DJNZ 21H,L2 DJNZ 22H,L1 RET,()控制程序(续):,8.4.2 可编程并行接口芯片8155的扩展,8155的结构,8155芯片内部逻辑由三部分组成: 存储单元为256字节静态RAM 三个可
22、编程I/O口: PA口,8位 PB口,8位 PC口,6位 14位二进制减法计数器,8155芯片的内部结构(图8-19),图8-19 8155芯片的内部结构,8155的引脚功能,8155芯片40引脚,采用双列直插式封装,如图8-20所示。 8155芯片的引脚功能见表8-6,图8-20 8155芯片的引脚,表8-6 8155芯片的引脚功能,8155各引脚功能如下 地址/数据线 AD7AD0,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。 I/O总线(22条) PA7PA0为通用I/O线,数据传送方向由写入81C55的命令字决定(图9-13); PB7PB0为通用I/O线,用于传送
23、PB口上的外设数据,数据传送方向也由写入81C55的控制字决定。 PC5PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息(见表9-3)。,8155的引脚功能,控制引脚 RESET:复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式。 CE#:片选线,若CE#=0,则AT89S51单片机选中本81C55工作,否则,本81C55未被选中。 IO/M#:I/O端口或RAM存储器选择线。若IO/M#=0,则AT89S51单片机选中81C55片内的RAM存储器;
24、若IO/M#=1,则AT89S51单片机选中81C55的某一I/O端口。 RD#:读控制。当RD#=0且WR#=1时,81C55为读出数据状态; WR#:写控制。当WR#=0且RD#=0时,81C55为写入数据状态。,8155的引脚功能,控制引脚 ALE:允许地址输入线,高有效。若ALE=1,则81C55允许AT89S51通过AD7AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态。81C55的ALE常和AT89S51的ALE相连。 TIMERIN:计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1。 TIMEROUT:计数器输出线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 IO 扩展
链接地址:https://www.31doc.com/p-2257894.html