《《扩展输入输出》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《扩展输入输出》PPT课件.ppt(22页珍藏版)》请在金锄头文库上搜索。
1、第第9 9章章 MCS-51MCS-51单片机单片机 的的I/OI/O扩展扩展12第第9章章目目录9.1I/O接口接口扩展概述展概述 9.1.1 扩展的I/O接口功能 9.1.2 I/O端口的编址 9.1.3 I/O数据的传送方式 9.1.4 I/O接口电路9.2利用利用74LSTTL电路路扩展并行展并行I/O口口9.3用用MCS-51单片机的串行口片机的串行口扩展并行口展并行口 9.3.1 用74LS165扩展并行输入口 9.3.2 用74LS164扩展并行输出口 内容概要内容概要MCS-51有4个I/O口P0P3,真正用作I/O口线的只有P1口口的8位I/O口线和P3P3口口的某些位线。因
2、此,大多需要大多需要外部I/O接口的扩展。介绍MCS-51与廉价的74LSTTL芯片芯片扩展并行I/O接口以及用MCS-51串行口串行口来扩展并行I/O接口的设计。最后介绍使用I/O口控制口控制的声音报警声音报警接口。39.1I/O接口扩展概述接口扩展概述扩展I/O接口与扩展存储器一样,都属于系统扩展系统扩展的内容。扩展的I/O接口应该具有哪些功能?9.1.1扩展的扩展的I/O接口功能接口功能扩展的I/O接口电路主要应满足以下功能要求。1实现和不同外设的速度匹配实现和不同外设的速度匹配大多数外设大多数外设的速度很慢速度很慢,无法和s量级的单片机速度量级的单片机速度相比。单片机在与外设间进行数据
3、传送时,只有在确认外设已为数据传送做好准备做好准备的前提下才能进行数据传送才能进行数据传送。外设是否准备好,就需要I/O接口电路与外设之间传送状态信传送状态信息息,以实现单片机与外设之间的速度匹配。42输出数据锁存输出数据锁存与外设比,单片机的工作速度快,与外设比,单片机的工作速度快,数据在数据总线上保数据在数据总线上保留的时间十分短暂留的时间十分短暂,无法满足慢速外设的数据接收。所以,无法满足慢速外设的数据接收。所以在扩展的在扩展的I/O接口电路中接口电路中应有输出数据锁存器应有输出数据锁存器,以保证输,以保证输出数据能出数据能为慢速的接收设备为慢速的接收设备所接收。所接收。3输入数据三态缓
4、冲输入数据三态缓冲数据总线数据总线上可能上可能“挂挂”有多个数据源有多个数据源,为使传送数据时,为使传送数据时不发生冲突不发生冲突,只允许当前时刻,只允许当前时刻正在接收数据的正在接收数据的I/O接口使接口使用数据总线用数据总线,其余的其余的I/O接口接口应处于隔离状态应处于隔离状态,为此要求,为此要求I/O接口电路能为数据输入提供三态缓冲功能。接口电路能为数据输入提供三态缓冲功能。59.1.2I/O端口的编址端口的编址介绍I/O端口编址端口编址之前,首先要弄清楚I/O接口接口和I/O端端口口的概念。I/O接口接口是单片机与外设间的连接电路的总称。I/O端口端口(简称I/O口)是指I/O接口电
5、路中具有单元地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,如数据口,命令口,状态口数据口,命令口,状态口。当然,并不是所有的外设都一定需要3种端口齐全的I/O接口。每个I/O接口中的端口接口中的端口都要有地址都要有地址,以便MCS-51通过读写端口来和外设交换信息和外设交换信息。常用的I/O端口编址端口编址有两种方式,独立编址方式独立编址方式与统一编址方式统一编址方式。61独立编址独立编址I/O端口地址空间和存储器地址空间分开编址。优点是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写I/O端口的指令和控制信号。2统一编址把I/O端口与数据存储器单元同
6、等对待。I/O端口和外部数据存储器RAM统一编址统一编址。因此外部数据存储器空间也包括I/O端口在内。优点优点是不需专门的I/O指令。缺点缺点是需要把数据存储器是需要把数据存储器单元地址与单元地址与I/O端口的地址划分清楚端口的地址划分清楚,避免数据冲突。79.1.3I/O数据的传送方式数据的传送方式为了实现和不同外设的速度匹配速度匹配,必须根据不同外设选择恰当的I/O数据传送方式数据传送方式。I/O数据传送方式有:同步传送、异步传送和中断传送。1同步传送同步传送同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片单片机和外部数据存储器之间机和外部
7、数据存储器之间的数据传送数据传送。2查询传送查询传送又称有条件传送(也称异步式传送)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但工作效率不高。83中断传送中断传送为了提高提高单片机对外设的工作效率工作效率,通常采用中断传送方式,来实现I/O数据的传送。单片机只有在外设准备好只有在外设准备好后,才中断主程序的执行后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大提高工作效率提高工作效率。99.2利用利用74LSTTL电路扩展并行电路扩展并行I/O口口在单片机应用中,有
8、些场合有些场合需要降低成本、缩小体积,这时采用TTL电路、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口。如图图9-20所示为一个利用用74LS244和和74LS273芯片芯片,将将P0口扩展成简单的输入口扩展成简单的输入/输出口的电路输出口的电路。74LS244和74LS273的工作受MCS-51的P2.0、3条条控制线控制。74LS244作为扩展输入口,8个输个输入端入端分别接8个按钮开关。74LS273是8D锁存器扩展输出扩展输出口口,接8个个LED发光二极管发光二极管,以显示以显示8个按钮个按钮开关状态。开关状态。10图9-2074LSTTLI/O扩展展举例例11当某
9、条输入口线的按钮开关按下时,该输入口线为低电为低电平平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。该电路的工作原理电路的工作原理如下。当P2.0=0,=0(=1)时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入MCS-51片内。12当P2.0=0,=1 ( =0)时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点
10、亮。总之,在图9-20中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可。13输入程序段:输入程序段:MOVDPTR,#0FEFFH;I/O地址地址DPTRMOVXA,DPTR;为低,为低,74LS244数据被读入数据被读入A中中输出程序段:输出程序段:MOVA,#data;数据;数据#dataAMOVDPTR,#0FEFFH;I/O地址地址#0FEFFHDPTRMOVXDPTR,A; 为低,数据经为低,数据经74LS273口输口输出出14【例例9-9】编写程序把按钮开关状态通过图9-20的发光二极管显示出
11、来。程序如下:DDIS:MOV DPTR,#0FEFFH;输入口地址;输入口地址DPTRLP:MOVXA,DPTR;按钮开关状态读入;按钮开关状态读入A中中MOVXDPTR,A;A中数据送显示输出口中数据送显示输出口SJMPLP ;反复连续执行;反复连续执行由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。图图9-20仅仅扩展了两片,如果仅仅扩展了两片,如果仍不够用,还可扩展多片仍不够用,还可扩展多片74LS244、74LS273之类的芯片之类的芯片。但作为输入输入口时,一定要求有三态功能要求有三态功能,否则将影响总线的正常工作。159.3用用MCS-51单片机的串行口
12、扩展并行口单片机的串行口扩展并行口串口的方式方式0用于用于I/O扩展扩展。方式0为同步移位寄存器同步移位寄存器工作方式,波特率为fosc/12。数据由数据由RXD端(端(P3.0)输入)输入,同步移位时钟由TXD端(端(P3.1)输出。9.3.1用用74LS165扩展并行输入口扩展并行输入口图9-21串口扩展两个扩展两个8位并行输入口。位并行输入口。74LS165是8位并行输入串行输出的寄存器。当74LS165的S/端由高到低跳变,并行输入端的数据被置入寄存器;当S/=1,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。16TXD与所有7
13、4LS165的的CP相连相连;RXD与74LS165的串串行输出端行输出端QH相连;P1.0与 S/相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连。 图图9-21 利用74LS165扩展并行输入口17【例例9-10】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元。 MOVR7,#05H;设置读入组数;设置读入组数MOVR0,#20H;设置内部;设置内部RAM数据区首址数据区首址START: CLRP1.0;并行置入数据,;并行置入数据,S/=0SETBP1.0;允许串行移位,
14、;允许串行移位,S/=1MOVR2,#02H;设每组字节数,;设每组字节数, 即即74LS165的个数的个数RXDATA:MOVSCON,#00010000H;设置串口方式;设置串口方式0,允许,允许;接收,启动接收过程;接收,启动接收过程18WAIT:JNB RI,WAIT;未接收完一帧,循环等待;未接收完一帧,循环等待CLRRI;RI标志清标志清“0”,准备下次接,准备下次接收收MOVA,SBUF;读入数据;读入数据MOVR0,A;送至;送至RAM缓冲区缓冲区INC R0;指向下一个地址;指向下一个地址DJNZR2,RXDATA;未读完一组数据,;未读完一组数据, 继续继续DJNZR7,S
15、TART;5组数据未读完重新并行置入组数据未读完重新并行置入;对数据进行处理;对数据进行处理19串行接收过程采用查询等待查询等待的方式,如必要,可改中断中断方式方式。9.3.2用用74LS164扩展并行输出口扩展并行输出口图图9-22为串口外接两片两片74LS164(8位串入并出移位寄存器)扩展两个8位并行输出口的接口电路。 图图9-22 利用74LS164扩展并行输出口20当串口工作在方式0的发送,串行数据由串行数据由P3.0(RXD)送出,移位时钟由送出,移位时钟由P3.1(TXD)送出)送出。注意,由于74LS164无并行输出控制端无并行输出控制端,在串行输入中,其输出端的输出端的状态会
16、不断变化状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。【例例9-11】将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序。START:MOVR7,#02H;设置要发送的字节个数;设置要发送的字节个数MOVR0,#30H;设置地址指针;设置地址指针MOV SCON,#00H;设置串行口为方式;设置串行口为方式021SEND: MOV A,R0MOV SBUF,A;启动串行口发送过程;启动串行口发送过程WAIT:JNB TI,WAIT;一帧未发完,等待;一帧未发完,等待CLR TIINCR0;取下一个数;取下一个数DJNZR7,SEND;未发完,继续,从子程序返回;未发完,继续,从子程序返回RET22