《第9章AT89S52单片机的IO扩展PPT课件》由会员分享,可在线阅读,更多相关《第9章AT89S52单片机的IO扩展PPT课件(68页珍藏版)》请在金锄头文库上搜索。
1、1 1第第9 9章章 AT89S52AT89S52单片机的单片机的 I/OI/O扩展扩展2第第9章章 AT89S52单片机的单片机的I/O扩展扩展9.1I/O接口扩展概述接口扩展概述9.1.1扩展的扩展的I/O接口功能接口功能9.1.2I/O端口的编址端口的编址9.1.3I/O数据的传送方式数据的传送方式9.1.4I/O接口电路接口电路9.2AT89S52扩展扩展I/O接口芯片接口芯片82C55的设计的设计9.2.182C55芯片简介芯片简介9.2.2工作方式选择控制字及端口工作方式选择控制字及端口PC置位置位/复位控制字复位控制字9.2.382C55的的3种工作方式种工作方式9.2.4单片机
2、扩展单片机扩展82C55的接口设计的接口设计9.2.5AT89S52扩展扩展82C55的应用举例的应用举例9.3利用利用74LSTTL电路扩展并行电路扩展并行I/O口口39.4用用AT89S52单片机的串行口扩展并行口单片机的串行口扩展并行口9.4.1用用74LS165扩展并行输入口扩展并行输入口9.4.2用用74LS164扩展并行输出口扩展并行输出口9.5用用I/O口控制的声音报警接口口控制的声音报警接口9.5.1蜂鸣音报警接口蜂鸣音报警接口9.5.2音乐报警接口音乐报警接口4【内容概要】【内容概要】AT89S52本本身身有有4个个I/O口口P0P3,但但是是真真正正用用作作I/O口口线线的
3、的只只有有P1口口的的8位位I/O口口线线和和P3口口的的某某些些位位线线。因因此此,在在部部分分应应用用系系统统设设计计中中,AT89S52单单片片机机都都需需要要进进行行外外部部I/O接接口口的的扩展。扩展。 本本章章介介绍绍AT89S52单单片片机机与与常常用用的的可可编编程程I/O接接口口芯芯片片82C55的的扩扩展展接接口口设设计计。此此外外还还介介绍绍了了使使用用廉廉价价的的74LSTTL芯芯片片以以及及使使用用AT89S52串串行行口口进进行行扩扩展展并并行行I/O接接口口的的设设计计。本章最后介绍使用本章最后介绍使用I/O口控制的声音报警接口设计。口控制的声音报警接口设计。59
4、.1I/O接口扩展概述接口扩展概述 扩展扩展I/O接口与扩展存储器一样,都属于接口与扩展存储器一样,都属于系统扩展系统扩展的内容。的内容。扩展的扩展的I/O接口应该具有哪些功能?接口应该具有哪些功能?9.1.1扩展的扩展的I/O接口功能接口功能 扩展的扩展的I/O接口电路主要应满足以下功能要求。接口电路主要应满足以下功能要求。1实现和不同外设的速度匹配实现和不同外设的速度匹配 大多数外设大多数外设的的速度很慢速度很慢,无法和,无法和s量级的单片机速度量级的单片机速度相比。相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据单片机在与外设间进行数据传送时,只有在确认外设已为数据传送传送做
5、好准备做好准备的前提下的前提下才能进行数据传送才能进行数据传送。外设是否准备好,。外设是否准备好,就需要就需要I/O接口电路与外设之间接口电路与外设之间传送状态信息传送状态信息,以实现单片机与,以实现单片机与外设之间的速度匹配。外设之间的速度匹配。6 62输出数据锁存输出数据锁存 与外设比,单片机的工作速度快,与外设比,单片机的工作速度快,数据在数据总线上保数据在数据总线上保留的时间十分短暂留的时间十分短暂,无法满足慢速外设的数据接收。所以在,无法满足慢速外设的数据接收。所以在扩展的扩展的I/O接口电路中接口电路中应有输出数据锁存器应有输出数据锁存器,以保证输出数据,以保证输出数据能能为慢速的
6、接收设备为慢速的接收设备所接收。所接收。3输入数据三态缓冲输入数据三态缓冲 数据总线数据总线上可能上可能“挂挂”有多个数据源有多个数据源,为使传送数据,为使传送数据时时不发生冲突不发生冲突,只允许当前时刻,只允许当前时刻正在接收数据的正在接收数据的I/O接口使用接口使用数据总线数据总线,其余的其余的I/O接口接口应处于隔离状态应处于隔离状态,为此要求,为此要求I/O接接口电路能为数据输入提供三态缓冲功能。口电路能为数据输入提供三态缓冲功能。7 79.1.2I/O端口的编址端口的编址 介绍介绍I/O端口编址端口编址之前,首先要弄清楚之前,首先要弄清楚I/O接口接口和和I/O端口端口的概念。的概念
7、。I/O接口接口是单片机与外设间的连接电路的总称。是单片机与外设间的连接电路的总称。I/O端口端口(简称(简称I/O口)是指口)是指I/O接口电路中具有单元地址的接口电路中具有单元地址的寄存器或缓冲器。一个寄存器或缓冲器。一个I/O接口芯片可以有多个接口芯片可以有多个I/O端口,如端口,如数据口,命令口,状态口数据口,命令口,状态口。当然,并不是所有的外设都一定。当然,并不是所有的外设都一定需要需要3种端口齐全的种端口齐全的I/O接口。接口。 每个每个I/O接口中的端口接口中的端口都要有地址都要有地址,以便,以便AT89S52通过读通过读写端口来写端口来和外设交换信息和外设交换信息。常用的。常
8、用的I/O端口编址端口编址有有两种方式两种方式,独立编址方式独立编址方式与与统一编址方式统一编址方式。81独立编址独立编址I/O端口地址空间端口地址空间和和存储器地址空间存储器地址空间分开编址分开编址。优点优点是是I/O地址空间和存储器地址空间相互独立,界限分明。但需要设地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写置一套专门的读写I/O端口的指令和控制信号。端口的指令和控制信号。2统一编址统一编址 把把I/O端口端口与与数据存储器单元数据存储器单元同等对待。同等对待。I/O端口和外部端口和外部数据存储器数据存储器RAM统一编址统一编址。因此外部数据存储器空间也包括。因此
9、外部数据存储器空间也包括I/O端口在内。端口在内。 优点优点是不需专门的是不需专门的I/O指令。指令。缺点缺点是需要把数据存储器是需要把数据存储器单元地址与单元地址与I/O端口的地址划分清楚端口的地址划分清楚,避免数据冲突。,避免数据冲突。9 99.1.3I/O数据的传送方式数据的传送方式 为了实现和不同外设的为了实现和不同外设的速度匹配速度匹配,必须根据不同外设选择,必须根据不同外设选择恰当的恰当的I/O数据传送方式数据传送方式。I/O数据传送方式有:数据传送方式有:同步传送、异同步传送、异步传送步传送和和中断传送中断传送。1同步传送同步传送 同步传送又称无条件传送。当外设速度和单片机的速度
10、相同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是比拟时,常采用同步传送方式,典型的同步传送是单片机和外单片机和外部数据存储器之间部数据存储器之间的的数据传送数据传送。2查询传送查询传送 又称又称有条件传送有条件传送(也称(也称异步式传送异步式传送)。通过查询外设)。通过查询外设“准准备好备好”后,再进行数据传送。优点是通用性好,硬件连线和查后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但询程序简单,但工作效率不高工作效率不高。103中断传送中断传送 为了提高单片机对外设的工作效率,通常采用中断传送为了提高单片机对外设的工作效率,通常
11、采用中断传送方式,即利用方式,即利用AT89S51单片机本身的中断功能和单片机本身的中断功能和I/O接口的中断接口的中断功能来实现功能来实现I/O数据的传送。单片机只有在外设准备好后,才中数据的传送。单片机只有在外设准备好后,才中断主程序的执行,从而进入与外设数据传送的中断服务子程序,断主程序的执行,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。进行数据传送。中断服务完成后又返回主程序断点处继续执行。因此,采用中断方式可以大大提高单片机的工作效率。因此,采用中断方式可以大大提高单片机的工作效率。9.1.4I/O接口电路接口电路 目前常用的外围目
12、前常用的外围I/O接口芯片有:接口芯片有:1011(1)82C55可编程的通用并行接口电路(可编程的通用并行接口电路(3个个8位位I/O口);口);(2)81C55可编程的可编程的IO/RAM扩展接口电路(扩展接口电路(2个个8位位I/O口,口,1个个6位位I/O口,口,256个个RAM字节单元,字节单元,1个个14位的减法计数器)。位的减法计数器)。 它们都可以和它们都可以和AT89S52单片机直接连接,且接口逻辑十分单片机直接连接,且接口逻辑十分简单。本章仅介绍简单。本章仅介绍AT89S52单片机扩展单片机扩展I/O接口芯片接口芯片82C55的设的设计。计。129.2AT89S51扩展扩展
13、I/O接口芯片接口芯片82C55的设计的设计 本节首先简要介绍可编程并行本节首先简要介绍可编程并行I/O接口芯片接口芯片82C55的应的应用特性,然后介绍用特性,然后介绍AT89S52单片机与单片机与82C55的接口电路设计以的接口电路设计以及软件设计。及软件设计。9.2.182C55芯片简介芯片简介82C55是是Intel公司生产的可编程并行公司生产的可编程并行I/O接口芯片,它具有接口芯片,它具有3个个8位的并行位的并行I/O口,口,3种工作方式,可通过编程改变其功能,种工作方式,可通过编程改变其功能,因而使用灵活方便,可作为单片机与多种外围设备连接时的中因而使用灵活方便,可作为单片机与多
14、种外围设备连接时的中间接口电路。间接口电路。82C55的引脚及内部结构如的引脚及内部结构如图图9-1和和图图9-2所示。所示。 121313图图9-182C55的引脚的引脚 图图9-282C55的内部结构的内部结构141引脚说明引脚说明 由由图图9-1可知,可知,82C55共有共有40个引脚,采用双列直插式封个引脚,采用双列直插式封装,各引脚功能如下。装,各引脚功能如下。D7D0:三态双向数据线,与单片机的三态双向数据线,与单片机的P0口连接,用来与单口连接,用来与单片机之间传送数据信息。片机之间传送数据信息。CS*:片选信号线,低电平有效,表示本芯片被选中。片选信号线,低电平有效,表示本芯片
15、被选中。RD*:读信号线,用来读出:读信号线,用来读出82C55端口数据的控制信号。端口数据的控制信号。WR*:写信号线,用来向:写信号线,用来向82C55写入端口数据的控制信号。写入端口数据的控制信号。Vcc:+5V电源。电源。15PA7PA0:端口:端口A输入输入/输出线。输出线。PB7PB0:端口端口B输入输入/输出线。输出线。PC7PC0:端口:端口C输入输入/输出线。输出线。A1、A0:地址线,用来选择:地址线,用来选择82C55内部的内部的4个端口。个端口。RESET:复位引脚,高电平有效。:复位引脚,高电平有效。2内部结构内部结构82C55内部结构见内部结构见图图9-2,包括,包
16、括3个并行数据输入个并行数据输入/输出端口,输出端口,两种工作方式的控制电路,一个读两种工作方式的控制电路,一个读/写控制逻辑电路和一个写控制逻辑电路和一个8位位数据总线缓冲器。数据总线缓冲器。图图9-2中左侧的引脚与单片机相连,右侧的引中左侧的引脚与单片机相连,右侧的引脚与外设连接。各部件的功能如下。脚与外设连接。各部件的功能如下。16(1)端口)端口PA、PB、PC82C55有有3个个8位并行口位并行口PA、PB和和PC,它们都可选为输入,它们都可选为输入/输输出工作模式,但在功能和结构上有些差异。出工作模式,但在功能和结构上有些差异。PA口:口:一个一个8位数据输出的锁存器和缓冲器;一个
17、位数据输出的锁存器和缓冲器;一个8位数据输入位数据输入的锁存器。的锁存器。PB口:口:一个一个8位数据输出的锁存器和缓冲器;一个位数据输出的锁存器和缓冲器;一个8位数据输入位数据输入的缓冲器。的缓冲器。PC口:口:一个一个8位数据输出的锁存器;一个位数据输出的锁存器;一个8位数据输入的缓冲器。位数据输入的缓冲器。通常通常PA口、口、PB口作为输入口作为输入/输出口,输出口,PC口既可作为输入口既可作为输入/输出口,输出口,也可在软件的控制下,作为两个也可在软件的控制下,作为两个4位端口,作为端口位端口,作为端口PA、PB选选通方式操作时的状态控制信号。通方式操作时的状态控制信号。1617(2)
18、A组和组和B组控制电路组控制电路 这是两组根据这是两组根据AT89S51单片机写入的单片机写入的“命令字命令字”控制控制82C55工作方式的控制电路。工作方式的控制电路。A组控制组控制PA口和口和PC口的上半部口的上半部(PC7PC4););B组控制组控制PB口和口和PC口的下半部(口的下半部(PC3PC0),并可使用),并可使用“命令字命令字”来对端口来对端口PC的每一位实现按位置的每一位实现按位置“1”或清或清“0”。(3)数据总线缓冲器)数据总线缓冲器 数据总线缓冲器是一个三态双向数据总线缓冲器是一个三态双向8位缓冲器,作为位缓冲器,作为82C55与与系统总线之间的接口,用来传送数据、指
19、令、控制命令以及外系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。部状态信息。1718(4)读)读/写控制逻辑电路写控制逻辑电路读读/写控制逻辑电路接收写控制逻辑电路接收AT89S52单片机发来的控制信号、单片机发来的控制信号、RESET、地址信号、地址信号A1、A0等,然后根据控制信号的要求,端口等,然后根据控制信号的要求,端口数据被数据被AT89S52单片机读出,或者将单片机读出,或者将AT89S52单片机送来的数单片机送来的数据写入端口。据写入端口。各端口的工作状态与控制信号的关系如各端口的工作状态与控制信号的关系如表表9-1所示。所示。181919209.2.2工作方
20、式选择控制字及端口工作方式选择控制字及端口PC置位置位/复位控制字复位控制字 向向82C55控制寄存器写入两种不同的控制字。首先来介控制寄存器写入两种不同的控制字。首先来介绍工作方式选择控制字。绍工作方式选择控制字。1工作方式选择控制字工作方式选择控制字82C55的端口有如下的端口有如下3种基本工作方式:种基本工作方式:(1)方式方式0基本输入基本输入/输出;输出;(2)方式方式1选通输入选通输入/输出;输出;(3)方式方式2双向传送(仅双向传送(仅PA口有此工作方式)。口有此工作方式)。 2021 端口的端口的3种工作方式由写入控制寄存器的方式控制字来种工作方式由写入控制寄存器的方式控制字来
21、决定。方式控制字的格式如决定。方式控制字的格式如图图9-3所示。最高位所示。最高位D7=1,为本,为本方式控制字的标志,以便与后面介绍的端口方式控制字的标志,以便与后面介绍的端口PC口置位口置位/复位复位控制字相区别(端口控制字相区别(端口PC置位置位/复位控制字的最高位复位控制字的最高位D7=0)。)。3个端口中个端口中PC口被分为两个部分,口被分为两个部分,上半部分上半部分随随PA口称为口称为A组,组,下半部分下半部分随随PB口称为口称为B组。其中组。其中PA口可工作于方式口可工作于方式0、1和和2,而,而PB口只能工作在方式口只能工作在方式0和和1。22图图9-39-3 82C55 82
22、C55的方式控制字格式的方式控制字格式23【例例9-1】AT89S52单片机向单片机向82C55的控制寄存器写入工作方的控制寄存器写入工作方式控制字式控制字95H,根据,根据图图9-3所示,可将所示,可将82C55编程设置为:编程设置为:PA口口方式方式0输入,输入,PB口方式口方式1输出,输出,PC口的上半部分(口的上半部分(PC7PC4)方式方式0输出,输出,PC口的下半部分(口的下半部分(PC3PC0)方式)方式1输入。输入。MOV DPTR,#H ;控制字寄存器端口地址;控制字寄存器端口地址H送送DPTRMOV A,#95H;方式控制字;方式控制字95H送送AMOVXDPTR,A;控制
23、字;控制字95H送控制字寄存器送控制字寄存器2PC口按位置位口按位置位/复位控制字复位控制字 单片机控制单片机控制82C55的另一个控制字为的另一个控制字为PC口按位置位口按位置位/复位控复位控24制字。即制字。即PC口口8位中的任何一位,可用一个写入位中的任何一位,可用一个写入82C55控制口控制口的置位的置位/复位控制字来对复位控制字来对PC口按位置口按位置“1”或清或清“0”,这一功能,这一功能主要用于位控。主要用于位控。PC口按位置位口按位置位/复位控制字的格式如复位控制字的格式如图图9-4所示。所示。【例例9-2】单片机向单片机向82C55的控制字寄存器写入置位的控制字寄存器写入置位
24、/复位控复位控制字制字07H,则,则PC3置置1;08H写入控制口,则写入控制口,则PC4清清0。程序段如。程序段如下:下:242525图图9-4PC口按位置位口按位置位/复位控制字格式复位控制字格式269.2.382C55的的3种工作方式种工作方式82C55的的3种工作方式介绍如下。种工作方式介绍如下。1方式方式0 方式方式0是基本输入是基本输入/输出方式。方式输出方式。方式0下,单片机可对下,单片机可对82C55进行进行I/O数据的无条件传送。例如,单片机从数据的无条件传送。例如,单片机从82C55的某一输入的某一输入口读入一组开关状态,从口读入一组开关状态,从82C55输出控制一组输出控
25、制一组LED指示灯的亮、指示灯的亮、灭。实现这些操作,并不需要任何条件,外设的灭。实现这些操作,并不需要任何条件,外设的I/O数据可在数据可在82C55的各端口得到锁存和缓冲。因此,的各端口得到锁存和缓冲。因此,82C55的方式的方式0称为基称为基本输入本输入/输出方式。输出方式。 方式方式0下,下,3个端口都可以由软件设置为输入或输出,不需个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式要应答联络信号。方式0基本功能如下:基本功能如下:2627(1)具有两个)具有两个8位端口(位端口(PA、PB)和两个)和两个4位端口(位端口(PC的上的上半部分和下半部分);半部分和下半部分);
26、(2)任何端口都可以设定为输入或输出,各端口的输入、输)任何端口都可以设定为输入或输出,各端口的输入、输出共有出共有16种组合。种组合。82C55的的PA口、口、PB口和口和PC口均可设定为方式口均可设定为方式0,并可根据需,并可根据需要,向控制寄存器写入工作方式控制字(见要,向控制寄存器写入工作方式控制字(见图图9-3),来规),来规定各端口为输入或输出方式。定各端口为输入或输出方式。【例例9-3】假设假设82C55的控制字寄存器端口地址为的控制字寄存器端口地址为FF7FH,则,则令令PA口和口和PC口的高口的高4位工作在方式位工作在方式0输出,输出,PB口和口和PC口的口的低低4位工作于方
27、式位工作于方式0输入,初始化程序如下:输入,初始化程序如下:28MOVDPTR,#0FF7FH;控制寄存器端口地址控制寄存器端口地址0FF7F送送DPTRMOVA,#83H; 方式控制字方式控制字83H送送AMOVXDPTR,A; 控制字控制字83H送控制寄存器送控制寄存器2方式方式1方式方式1是采用应答联络的输入是采用应答联络的输入/输出工作方式。输出工作方式。PA口和口和PB口皆口皆可独立地设置成这种工作方式。方式可独立地设置成这种工作方式。方式1下,下,PA口和口和PB口通常用于口通常用于I/O数据的传送,数据的传送,PC口用作口用作PA口和口和PB口的应答联络信号线,以实口的应答联络信
28、号线,以实现采用中断方式来传送现采用中断方式来传送I/O数据。数据。PC口的口的PC7PC0的应答联络的应答联络线是在设计线是在设计82C55时规定好的,其各位分配如时规定好的,其各位分配如图图9-5和和图图9-7所示,所示,图中,标有图中,标有I/O的各位仍可用作基本输入的各位仍可用作基本输入/输出,不作应答联络用。输出,不作应答联络用。下面简单介绍方式下面简单介绍方式1输入输入/输出时的应答联络信号与工作原理。输出时的应答联络信号与工作原理。2829(1)方式)方式1输入输入 当任意端口工作于方式当任意端口工作于方式1输入时,各应答联络信号如输入时,各应答联络信号如图图9-5所所示。其中示
29、。其中STB*与与IBF为一对应答联络信号。为一对应答联络信号。图图9-5中各应答联络中各应答联络信号的功能如下。信号的功能如下。 STB*是由输入外设发给是由输入外设发给82C55的选通输入信号,低电平有的选通输入信号,低电平有效。效。 IBF输入缓冲器满,应答信号。输入缓冲器满,应答信号。82C55通知外设已收到外设通知外设已收到外设发来的且已进入输入缓冲器的数据,高电平有效。发来的且已进入输入缓冲器的数据,高电平有效。 INTR由由82C55向单片机发出的中断请求信号,高电平有效。向单片机发出的中断请求信号,高电平有效。 INTEA控制控制PA口是否允许中断的控制信号,由口是否允许中断的
30、控制信号,由PC4的置位的置位/复位来控制。复位来控制。2930 INTEB控制控制PB口是否允许中断的控制信号,由口是否允许中断的控制信号,由PC2的置的置位位/复位来控制。复位来控制。方式方式1输入的工作示意图如输入的工作示意图如图图9-6所示。下面以所示。下面以PA口的方式口的方式1输输入为例,介绍方式入为例,介绍方式1输入的工作过程。输入的工作过程。 当外设向当外设向82C55输入一个数据并送到输入一个数据并送到PA7PA0上时,外上时,外设自动在选通输入线设自动在选通输入线STBA*上向上向82C55发送一个低电平选通信号。发送一个低电平选通信号。 82C55收到选通信号后,首先把收
31、到选通信号后,首先把PA7PA0上的输入数据上的输入数据存入存入PA口的输入数据缓冲口的输入数据缓冲/锁存器,然后使输出应答线锁存器,然后使输出应答线IBFA变为变为高电平,以通知输入外设,高电平,以通知输入外设,82C55的的PA口已收到它送来的输入口已收到它送来的输入数据。数据。3131图图9-5方式方式1输入应答联络信号输入应答联络信号32图图9-6PA口方式口方式1输入工作过程示意图输入工作过程示意图33 82C55检测到检测到STBA*由低电平变为高电平、由低电平变为高电平、IBFA(PC5)为为“1”状态和中断允许状态和中断允许INTEA(PC4)=1时,使时,使INTRA(PC3
32、)变为高电平,向单片机发出中断请求。)变为高电平,向单片机发出中断请求。INTEA的状态的状态可由用户通过指令对可由用户通过指令对PC4的单一置位的单一置位/复位控制字来控制。复位控制字来控制。 单片机响应中断后,进入中断服务子程序来读取单片机响应中断后,进入中断服务子程序来读取PA口的口的外设发来的输入数据。当输入数据被单片机读走后,外设发来的输入数据。当输入数据被单片机读走后,82C55撤撤销销INTEA上的中断请求,并使上的中断请求,并使IBFA变为低电平,以通知输入外变为低电平,以通知输入外设可传送下一个输入数据。设可传送下一个输入数据。 3334(2)方式)方式1输出输出 当当PA口
33、、口、PB口按照方式口按照方式1输出时,应答联络信号如输出时,应答联络信号如图图9-7所所示。示。OBF*与与ACK*构成了一对应答联络信号,构成了一对应答联络信号,图图9-7中各应答联中各应答联络信号的功能如下。络信号的功能如下。 OBF* :端口输出缓冲器满信号,低电平有效,它是端口输出缓冲器满信号,低电平有效,它是82C55发给外设的联络信号,表示单片机已经把数据输出到发给外设的联络信号,表示单片机已经把数据输出到82C55的的指定端口,外设可以将数据取走。指定端口,外设可以将数据取走。 ACK* :外设的应答信号,低电平有效。表示外设已把外设的应答信号,低电平有效。表示外设已把82C5
34、5端口的数据取走。端口的数据取走。35图图9-7方式方式1输出应答联络信号输出应答联络信号36 INTR:中断请求信号,高电平有效。表示该数据已被外设取中断请求信号,高电平有效。表示该数据已被外设取走,向单片机发出中断请求,如果走,向单片机发出中断请求,如果AT89S52响应该中断,则在中响应该中断,则在中断服务子程序中向断服务子程序中向82C55的端口写入要输出的下一个数据。的端口写入要输出的下一个数据。 INTEA:控制控制PA口是否允许中断的控制信号,由口是否允许中断的控制信号,由PC6的置位的置位/复位来控制。复位来控制。 INTEB:控制控制PB口是否允许中断的控制信号,由口是否允许
35、中断的控制信号,由PC2的置位的置位/复位来控制。复位来控制。 方式方式1输出工作示意图如输出工作示意图如图图9-8所示。下面以所示。下面以PB口的方式口的方式1输输出为例,介绍方式出为例,介绍方式1输出的工作过程。输出的工作过程。 3637图图9-8PB口方式口方式1输出工作过程示意图输出工作过程示意图38单片机可以通过单片机可以通过“MOVXRi,A”指令把输出数据送到指令把输出数据送到B口口的输出数据锁存器,的输出数据锁存器,82C55收到后便令输出缓冲器满引脚收到后便令输出缓冲器满引脚OBFB*(PC1)变为低电平,以通知输出设备输出的数据已在)变为低电平,以通知输出设备输出的数据已在
36、PB口的口的PB7PB0上。上。 输出外设收到输出外设收到OBFB*上低电平后,先从上低电平后,先从PB7PB0上取上取走输出数据,然后使走输出数据,然后使ACKB*变为低电平,以通知变为低电平,以通知82C55输出外设输出外设已收到已收到82C55输出给外设的数据。输出给外设的数据。 82C55从应答输入线从应答输入线ACKB*收到低电平后就对和中断允收到低电平后就对和中断允许控制位许控制位INTEB状态进行检测,若它们皆为高电平,则状态进行检测,若它们皆为高电平,则INTRB变变为高电平而向单片机请求中断。为高电平而向单片机请求中断。39 AT89S52单片机响应单片机响应INTRB上中断
37、请求后便可通过中断上中断请求后便可通过中断服务程序把下一个输出数据送到服务程序把下一个输出数据送到PB口的输出数据锁存器。重复口的输出数据锁存器。重复上述过程,完成数据的输出。上述过程,完成数据的输出。3方式方式2 只有只有PA口才能设定为方式口才能设定为方式2。图图9-9所示为方式所示为方式2下的工作下的工作过程示意图。方式过程示意图。方式2实质上是方式实质上是方式1输入和方式输入和方式1输出的组合。在输出的组合。在方式方式2下,下,PA7PA0为双向为双向I/O总线。当作为输入端口使用时,总线。当作为输入端口使用时,PA7PA0受受OBFA*和和IBFA控制,其工作过程和方式控制,其工作过
38、程和方式1输入时相输入时相同;当作为输出端口使用时,同;当作为输出端口使用时,PA7PA0受受OBFA*、ACKA*控制,控制,其工作过程和方式其工作过程和方式1输出时相同。输出时相同。40图图9-9PA口在方式口在方式2下的工作示意图下的工作示意图41 方式方式2特别适用于像键盘、显示器一类的外部设备,因为特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过有时需要把键盘上输入的编码信号通过PA口送给单片机,有口送给单片机,有时又需要把单片机发出的数据通过时又需要把单片机发出的数据通过PA口送给显示器显示。口送给显示器显示。9.2.4AT89S52单片机与单片机与8
39、2C55的接口设计的接口设计1硬件接口电路硬件接口电路 图图9-10所示为所示为AT89S52单片机扩展一片单片机扩展一片82C55的电路图。的电路图。图中,图中,74LS373是地址锁存器,是地址锁存器,P0.1、P0.0经经74LS373与与82C55的地址线的地址线A1、A0连接;连接;P0.7经经74LS373与片选端相连,与片选端相连,其它地址线悬空;其它地址线悬空;82C55的控制线的控制线RD*、WR*直接与直接与AT89S52单片机的单片机的RD*和和WR*端相连;单片机的数据总线端相连;单片机的数据总线P0.0P0.7与与82C55的数据线的数据线D0D7连接。连接。4142
40、282C55各端口地址的确定各端口地址的确定 图图9-10中中82C55只有只有3条线与单片机的地址线相接,片选端条线与单片机的地址线相接,片选端CS*、端口地址选择端、端口地址选择端A1、A0,分别接与,分别接与P0.7、P0.1、P0.0相相连的连的8D锁存器的输出端锁存器的输出端Q7、Q1、Q0,其他地址线全悬空。显,其他地址线全悬空。显然只要保证然只要保证P0.7为低电平时,即可选中为低电平时,即可选中82C55;若;若P0.1、P0.0再为再为“00”,则选中,则选中82C55的的PA口。同理口。同理P0.1、P0.0为为“01”、“10”、“11”分别选中分别选中PB口、口、PC口
41、及控制口。口及控制口。 4243图图9-10AT89S52单片机扩展一片单片机扩展一片82C55的接口电路的接口电路 4444 若端口地址用若端口地址用16位表示,其他未用端全设为位表示,其他未用端全设为“1”(也可把(也可把无用端全设为无用端全设为“0”,但一般习惯上把未用端置,但一般习惯上把未用端置“1”),则),则82C55的的PA、PB、PC及控制口地址分别为及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH。3软件编程软件编程 在实际应用设计中,必须根据外部设备的类型选择在实际应用设计中,必须根据外部设备的类型选择82C55的工作方式,并在初始化程序中把相应控制字写入控
42、制口。下的工作方式,并在初始化程序中把相应控制字写入控制口。下面根据面根据图图9-10,介绍对,介绍对82C55进行操作的编程。进行操作的编程。【例例9-4】要求要求82C55工作在方式工作在方式0,且,且PA口作为输入,口作为输入,PB口、口、PC口作为输出,则程序如下:口作为输出,则程序如下:4545【例例9-5】对端口对端口PC的置位的置位/复位。复位。82C55的的PC口口8位中的任意一位,均可用指令来置位或复位。位中的任意一位,均可用指令来置位或复位。例如,例如, 如果想把如果想把PC口的口的PC5置置“1”,相应的控制字为,相应的控制字为4682C55接口芯片在单片机应用系统中广泛
43、用于与各种外部数字接口芯片在单片机应用系统中广泛用于与各种外部数字设备,如打印机、键盘、显示器的接口电路,以及作为数字信设备,如打印机、键盘、显示器的接口电路,以及作为数字信息的输入、输出接口。息的输入、输出接口。00001011B=0BH(关于(关于82C55的的PC口置位口置位/复位的控制字说明复位的控制字说明见见图图9-4)。程序段如下:)。程序段如下:47 9.2.5AT89S52扩展扩展82C55的应用举例的应用举例 图图9-11为单片机通过扩展的并行为单片机通过扩展的并行I/O口口82C55与微型打印机与微型打印机连接的接口电路。为便于理解,这里把扩展连接的接口电路。为便于理解,这
44、里把扩展82C55的的PA、PC口口看作为单片机本身附加的并行看作为单片机本身附加的并行I/O口。有关微型打印机口。有关微型打印机TPP-40A/16A的特性在的特性在7.7节节已作介绍。已作介绍。【例例9-6】把把单片机内部单片机内部RAM的的3FH4FH单元中的单元中的ASCII码码数据送到打印机打印。数据送到打印机打印。82C55的端口的端口A与端口与端口C的高的高4位设置为位设置为方式方式0输出,端口输出,端口C的低的低4位为方式位为方式0输入。输入。 采用查询法,即单片机通过读与采用查询法,即单片机通过读与82C55的的PC0脚相连的打脚相连的打印机印机BUSY脚的状态,判断单片机送
45、给微型打印机的一个字节脚的状态,判断单片机送给微型打印机的一个字节的数据是否处理完毕;这里也可采用中断法,即的数据是否处理完毕;这里也可采用中断法,即BUSY脚直接脚直接与单片机的与单片机的INT0*引脚相连。引脚相连。 参考程序如下参考程序如下:48图图9-11AT89S52单片机通过扩展的单片机通过扩展的I/O与与TPP-40A/16A连接连接49509.3利用利用74LSTTL电路扩展并行电路扩展并行I/O口口 在单片机应用系统中,有些场合需要降低成本、缩小体积,在单片机应用系统中,有些场合需要降低成本、缩小体积,这时采用这时采用TTL、CMOS电路锁存器或三态门电路也可构成各种类电路锁
46、存器或三态门电路也可构成各种类型的简单输入型的简单输入/输出口。通常这种输出口。通常这种I/O都是通过都是通过P0口扩展。由于口扩展。由于P0口只能分时复用,故构成输出口时,接口芯片应具有锁存功口只能分时复用,故构成输出口时,接口芯片应具有锁存功能;构成输入口时,要求接口芯片应能三态缓冲输入,而数据能;构成输入口时,要求接口芯片应能三态缓冲输入,而数据的输入、输出则由单片机的读的输入、输出则由单片机的读/写信号控制。写信号控制。 图图9-12所示为一个利用所示为一个利用74LS244(缓冲输入驱动器)和(缓冲输入驱动器)和74LS273(8D锁存器)芯片,将锁存器)芯片,将P0口扩展成简单的输
47、入口扩展成简单的输入/输出口输出口的电路。的电路。5051图图9-1274LSTTLI/O扩展举例扩展举例5274LS244和和74LS273的工作受单片机的的工作受单片机的P2.0、3条控制条控制线控制。线控制。74LS244作为扩展输入口,它的作为扩展输入口,它的8个输入端分别接个输入端分别接8个按钮开关。个按钮开关。74LS273的输出端接的输出端接8个个LED发光二极管,以显发光二极管,以显示示8个按钮开关状态。当某条输入口线的按钮开关按下时,该个按钮开关状态。当某条输入口线的按钮开关按下时,该输入口线为低电平,读入单片机后,其相应位为输入口线为低电平,读入单片机后,其相应位为“0”,
48、然后,然后再将口线的状态经再将口线的状态经74LS273输出,某位低电平时二极管发光,输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。从而显示出按下的按钮开关的位置。该电路的工作原理如下。该电路的工作原理如下。当当P2.0=0,RD*=0(WR*=1)时,选中)时,选中74LS244芯片,芯片,此时若无按钮开关按下,输入全为高电平。当某开关按下时则此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为对应位输入为“0”,5374LS244的输入端不全为的输入端不全为“1”,其输入状态通过,其输入状态通过P0口数据线口数据线被读入被读入AT89S51单片机片内。单片机片
49、内。当当P2.0=0,WR*=0(RD*=1)时,选中)时,选中74LS273芯片,芯片,CPU通过通过P0口输出数据锁存到口输出数据锁存到74LS273,74LS273的输出端低的输出端低电平位对应的电平位对应的LED发光二极管点亮。发光二极管点亮。总之,在总之,在图图9-12中只要保证中只要保证P2.0为为“0”,其他地址位或,其他地址位或“0”或或“1”即可。如地址用即可。如地址用FEFFH(无效位全为(无效位全为“1”),或),或用用0000H(无效位全为(无效位全为“0”)都可。)都可。5354输入程序段:输入程序段:MOVDPTR,#0FEFFH;I/O地址地址DPTRMOVXA,
50、DPTR;RD*为低电平,为低电平,74LS244接口数据读入片内接口数据读入片内A中中输出程序段:输出程序段:MOV A,#data;数据;数据#dataAMOV DPTR,#0FEFFH;I/O地址地址#0FEFFHDPTRMOVX DPTR,A; WR*为低电平,数据经为低电平,数据经74LS273口输出口输出【例例9-6】编写程序把按钮开关状态通过编写程序把按钮开关状态通过图图9-12中的点亮的发中的点亮的发光二极管的位置显示出来。程序段如下:光二极管的位置显示出来。程序段如下:5455 由以上程序可以看出,对于所扩展接口的输入由以上程序可以看出,对于所扩展接口的输入/输出就像从输出就
51、像从外部外部RAM读读/写数据一样方便。写数据一样方便。图图9-12仅仅扩展了两片,如果仍仅仅扩展了两片,如果仍不够用,还可扩展多片不够用,还可扩展多片74LS244、74LS273之类的芯片。但作之类的芯片。但作为输入口时,一定要求有三态输入缓冲功能,否则将影响总线为输入口时,一定要求有三态输入缓冲功能,否则将影响总线的正常工作。的正常工作。9.4用用AT89S52单片机的串行口扩展并行口单片机的串行口扩展并行口AT89S52单片机串行口的方式单片机串行口的方式0用于用于I/O扩展。在方式扩展。在方式0时,串时,串行口为同步移位寄存器工作方式,其波特率是固定的,为行口为同步移位寄存器工作方式
52、,其波特率是固定的,为fosc/12(fosc为系统的振荡器频率)。数据由为系统的振荡器频率)。数据由RXD端(端(P3.0)输入,同步移位时钟由输入,同步移位时钟由TXD端(端(P3.1)输出。发送、接收的数)输出。发送、接收的数据是据是8位,低位在先。位,低位在先。56569.4.1用用74LS165扩展并行输入口扩展并行输入口图图9-13所示为串行口外接两片所示为串行口外接两片74LS165扩展两个扩展两个8位并行输入位并行输入口的接口电路。口的接口电路。74LS165是是8位并行输入串行输出的寄存器。当位并行输入串行输出的寄存器。当74LS165的的S/L*端由高到低跳变时,并行输入端
53、的数据被置入寄存器;当端由高到低跳变时,并行输入端的数据被置入寄存器;当S/L*=1,且时钟禁止端(第,且时钟禁止端(第15脚)为低电平时,允许脚)为低电平时,允许TXD(P3.1)移位时钟输入,这时在时钟脉冲作用下,数据由)移位时钟输入,这时在时钟脉冲作用下,数据由右向左方向移动。右向左方向移动。在在图图9-13中,中,TXD(P3.1)作为移位脉冲输出与所有)作为移位脉冲输出与所有74LS165的移位脉冲输入端的移位脉冲输入端CP相连;相连;RXD(P3.0)作为串行数)作为串行数据输入端与据输入端与74LS165的串行输出端的串行输出端QH相连;相连;P1.0与与S/L*5757图图9-
54、13利用利用74LS165扩展并行输入口扩展并行输入口相连,用来控制相连,用来控制74LS165的串行移位或并行输入;的串行移位或并行输入;74LS165的的时钟禁止端(第时钟禁止端(第15脚)接地,表示允许时钟输入。当扩展多个脚)接地,表示允许时钟输入。当扩展多个8位输入口时,相邻两芯片的首尾(位输入口时,相邻两芯片的首尾(QH与与SIN)相连。)相连。5858【例例9-7】由由图图9-13,编写程序从,编写程序从16位扩展口读入位扩展口读入5组数据(每组数据(每组组2B),并把它们转存到内部),并把它们转存到内部RAM20H开始的单元。开始的单元。59 上面程序中串行接收过程采用的是查询等
55、待的控制方式,上面程序中串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。从理论上讲,按如有必要,也可改用中断方式。从理论上讲,按图图9-13方法扩方法扩展的输入口几乎是无限的,但扩展越多,口的操作速度也就越展的输入口几乎是无限的,但扩展越多,口的操作速度也就越慢。慢。9.4.2用用74LS164扩展并行输出口扩展并行输出口 图图9-14所示为串行口外接两片所示为串行口外接两片74LS164扩展两个扩展两个8位并行输位并行输出口的接口电路。出口的接口电路。74LS164是是8位串入并出移位寄存器。位串入并出移位寄存器。 当当AT89S52单片机串行口工作在方式单片机串行口工作
56、在方式0的发送状态时,串行的发送状态时,串行数据由数据由P3.0(RXD)送出,移位时钟由)送出,移位时钟由P3.1(TXD)送出。在)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从移位时钟的作用下,串行口发送缓冲器的数据一位一位地从5960图图9-14利用利用74LS164扩展并行输出口扩展并行输出口P3.0移入移入74LS164中。需要指出的是,由于中。需要指出的是,由于74LS164无并行输无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在化,故在某些应用场合,在74LS164的输出端
57、应加接输出三态的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。门控制,以便保证串行输入结束后再输出数据。61【例例9-8】下面是将内部下面是将内部RAM单元单元30H、31H的内容经串行口的内容经串行口由由74LS164并行输出的子程序。并行输出的子程序。629.5用用I/O口控制的声音报警接口口控制的声音报警接口 当单片机测控系统发生故障或处于某种紧急状态时,单片当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒人们警觉的声音报警。使用单片机系统的机系统应能发出提醒人们警觉的声音报警。使用单片机系统的I/O口很容易实现该功能。口很容易实现该功能。9.5.1蜂
58、鸣音报警接口蜂鸣音报警接口 蜂鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,蜂鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过然后通过AT89S51的一根的一根I/O口线通过驱动器驱动蜂鸣器发声。口线通过驱动器驱动蜂鸣器发声。压电式蜂鸣器约需压电式蜂鸣器约需10mA的驱动电流,可以使用的驱动电流,可以使用TTL系列集成电系列集成电路路7406的低电平驱动,如图的低电平驱动,如图9-15所示,也可以用一个晶体三极所示,也可以用一个晶体三极管驱动,如管驱动,如图图9-16所示。所示。6263图图9-15通过通过74LS06来驱动蜂鸣器的报警电路来驱动蜂鸣器的报警电路图图9-16使用三
59、极管驱动的蜂鸣器报警电路使用三极管驱动的蜂鸣器报警电路64 在在图图9-15中,中,AT89S52的口线的口线P1.7接驱动器的输入端。当接驱动器的输入端。当P1.7输出高电平时,输出高电平时,7406的输出为低电平,使压电蜂鸣器两的输出为低电平,使压电蜂鸣器两条引线加上近条引线加上近5V的直流电压,由压电效应而发出蜂鸣音。当的直流电压,由压电效应而发出蜂鸣音。当P1.7端输出低电平时,端输出低电平时,7406的输出端高电平约的输出端高电平约+5V,压电蜂,压电蜂鸣器的两引线间的直流电压降至接近于鸣器的两引线间的直流电压降至接近于0V,发音停止。,发音停止。 在在图图9-16中,中,P1.7接
60、晶体管基极输入端。当接晶体管基极输入端。当P1.7输出高电输出高电平时,晶体管导通,压电蜂鸣器两端获得约平时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;电压而鸣叫;当当P1.7输出低电平,三极管截止,蜂鸣器停止发声。输出低电平,三极管截止,蜂鸣器停止发声。 下面是连续蜂鸣下面是连续蜂鸣100ms参考程序,该程序对上述两个接口参考程序,该程序对上述两个接口电路都适用。电路都适用。646565 如果想要发出更大的声音,可采用功率大的扬声器作为发如果想要发出更大的声音,可采用功率大的扬声器作为发声器件,这时要采用相应的功率驱动电路。声器件,这时要采用相应的功率驱动电路。669.5.2音乐报警
61、接口音乐报警接口 音乐报警电路可使报警声优美悦耳,克服了蜂鸣音报警音音乐报警电路可使报警声优美悦耳,克服了蜂鸣音报警音调较单调的不足。可购买市售的乐曲发生器,发出的乐曲声可调较单调的不足。可购买市售的乐曲发生器,发出的乐曲声可用来作为某种提示信号或报警信号。音乐报警接口由两部分组用来作为某种提示信号或报警信号。音乐报警接口由两部分组成:成:(1)乐曲发生器,即集成电子音乐芯片;乐曲发生器,即集成电子音乐芯片;(2)放大电路,也可采用集成放大器。放大电路,也可采用集成放大器。 音乐报警接口电路如音乐报警接口电路如图图9-17所示,图中采用华尔兹乐曲的所示,图中采用华尔兹乐曲的电子音乐芯片电子音乐
62、芯片7920A。当。当AT89S51从从P1.7输出高电平时,电子输出高电平时,电子音乐芯片音乐芯片7920A的输入控制端的输入控制端MT变为变为1.5V高电平,输出端高电平,输出端Vout便发出乐曲信号,经便发出乐曲信号,经M51182L放大而驱动扬声器发出乐放大而驱动扬声器发出乐666767图图9-17音乐报警接口电路音乐报警接口电路68曲报警声,音量大小由曲报警声,音量大小由10k电位器调整。相反,若电位器调整。相反,若P1.7输出低输出低电平,则电平,则7920A因因MT输入电位变低而关闭,故扬声器停止奏曲。输入电位变低而关闭,故扬声器停止奏曲。音乐报警接口的参考程序为:音乐报警接口的参考程序为:START:SETBP1.7;P1.7为高电平,发出音乐报警乐曲为高电平,发出音乐报警乐曲RETSTOP: CLRP1.7;P1.7为低电平,音乐报警乐曲停止为低电平,音乐报警乐曲停止RET