
扩展输入输出.ppt
92页第第9 9章章 AT89S51AT89S51单片机单片机 的的I/OI/O扩展扩展12 第第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的接口设计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 音乐报警接口3内容概要内容概要AT89S51有4个I/O口P0~P3,真正用作I/O口线的只有P1口口的8位I/O口线和P3P3口口的某些位线。
因此,大多需要大多需要外部I/O接口的扩展介绍AT89S51与两种两种常用的可编程I/O接口芯片82C55和81C55的扩展接口设计此外还介绍使用廉价的74LSTTL芯片芯片扩展并行I/O接口以及用AT89S51串行口串行口来扩展并行I/O接口的设计最后介绍使用I/O口控制口控制的声音声音报警报警接口49.1 I/O接口扩展概述接口扩展概述扩展I/O接口与扩展存储器一样,都属于系统扩展系统扩展的内容扩展的I/O接口应该具有哪些功能?9.1.1 扩展的扩展的I/O接口功能接口功能扩展的I/O接口电路主要应满足以下功能要求1.实现和不同外设的速度匹配.实现和不同外设的速度匹配大多数外设大多数外设的速度很慢速度很慢,无法和µs量级的单片机速度量级的单片机速度相比单片机在与外设间进行数据传送时,只有在确认外设已为数据传送做好准备做好准备的前提下才能进行数据传送才能进行数据传送外设是否准备好,就需要I/O接口电路与外设之间传送状态信传送状态信息息,以实现单片机与外设之间的速度匹配52.输出数据锁存.输出数据锁存与外设比,单片机的工作速度快,与外设比,单片机的工作速度快,数据在数据总线上保数据在数据总线上保留的时间十分短暂留的时间十分短暂,无法满足慢速外设的数据接收。
所以,无法满足慢速外设的数据接收所以在扩展的在扩展的I/O接口电路中接口电路中应有输出数据锁存器应有输出数据锁存器,以保证输,以保证输出数据能出数据能为慢速的接收设备为慢速的接收设备所接收3.输入数据三态缓冲.输入数据三态缓冲数据总线数据总线上可能上可能““挂挂””有多个数据源有多个数据源,为使传送数据时,为使传送数据时不发生冲突不发生冲突,只允许当前时刻,只允许当前时刻正在接收数据的正在接收数据的I/O接口使接口使用数据总线用数据总线,,其余的其余的I/O接口接口应处于隔离状态应处于隔离状态,为此要求,为此要求I/O接口电路能为数据输入提供三态缓冲功能接口电路能为数据输入提供三态缓冲功能69.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端口编址端口编址有两种方式,独立编址方式独立编址方式与统一编址方式统一编址方式71.独立编址.独立编址I/O端口地址空间和存储器地址空间分开编址优点是I/O地址空间和存储器地址空间相互独立,界限分明但需要设置一套专门的读写I/O端口的指令和控制信号2.统一编址把I/O端口与数据存储器单元同等对待I/O端口和外部数据存储器RAM统一编址统一编址因此外部数据存储器空间也包括I/O端口在内优点优点是不需专门的I/O指令缺点缺点是需要把数据存储器是需要把数据存储器单元地址与单元地址与I/O端口的地址划分清楚端口的地址划分清楚,避免数据冲突89.1.3 I/O数据的传送方式数据的传送方式为了实现和不同外设的速度匹配速度匹配,必须根据不同外设选择恰当的I/O数据传送方式数据传送方式I/O数据传送方式有:同步传送、异步传送和中断传送1.同步传送.同步传送同步传送又称无条件传送当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是单片单片机和外部数据存储器之间机和外部数据存储器之间的数据传送数据传送2.查询传送.查询传送又称有条件传送(也称异步式传送)通过查询外设“准备好”后,再进行数据传送。
优点是通用性好,硬件连线和查询程序简单,但工作效率不高93.中断传送.中断传送为了提高提高单片机对外设的工作效率工作效率,通常采用中断传送方式,来实现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所示所示1112图9-1 82C55的引脚的引脚图 图9-2 82C55的内部的内部结构构1.引脚说明.引脚说明共40个引脚个引脚,引脚功能如下引脚功能如下:D7~~D0::三态双向数据线,与单片机的P0口连接,用来与单片机之间传送数据信息 ::片选信号线,低有效,表示本芯片被选中 ::读信号线,低有效,读82C55端口数据的控制信号 ::写信号线,低电平有效,用来向82C55写入端口数据的控制信号VCC::+5V电源13PA7~~PA0::端口A输入/输出线PB7~~PB0::端口B输入/输出线PC7~~PC0::端口C输入/输出线A1、、A0::地址线,用来选择82C55内部的4个端口RESET::复位引脚,高电平有效2.内部结构.内部结构如图图9-2所示所示,3个并行数据输入个并行数据输入/输出端口输出端口,两种工作两种工作方式方式的控制电路,一个读/写控制逻辑电路和一个8位数据总线缓冲器各部件的功能如下:14((1)端口)端口PA、、PB、、PC3个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口的上半部上半部(PC7~PC4);B组组控制PB口和PC口的下半部下半部(PC3~PC0),并可用“命令字”来对端口PC的每一位实现按位置“1”或清“0”3)数据总线缓冲器)数据总线缓冲器数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送用来传送数据、指令、控制命令以及外部状态信息16((4)读)读/写控制逻辑电路写控制逻辑电路接收接收AT89S51单片机发来单片机发来的控制信号控制信号 、 、RESET、地址信号地址信号A1、A0等,然后根据控制信号的要求,端口数据被AT89S51单片机读出,或者将AT89S51单片机送来的数据写入端口。
各端口工作状态与控制信号的关系见表表9-117189.2.2 工作方式选择控制字及端口工作方式选择控制字及端口PC置位置位/复位控制字复位控制字可向向82C55控制寄存器写入两种控制寄存器写入两种不同的控制字不同的控制字1.工作方式选择控制字.工作方式选择控制字82C55有3种种基本工作方式:((1)方式)方式0—基本输入/输出;((2)方式)方式1—选通输入/输出;((3)方式)方式2—双向传送(仅PA口有此工作方式)3种工作方式方式控制字来决定格式格式如图图9-3所示所示最高位D7=1,为本方式控制字的标志标志,以便与另一控制字相区别(最高位D7 = 0)1920图9-3 82C55的方式控制字格式的方式控制字格式PCPC口分两部分口分两部分,随,随PAPA口口称为称为A A组组,随,随PBPB口口称为称为B B组组其中PAPA口口可工作于方式可工作于方式0 0、、1 1和和2 2,而,而PBPB口口只能工作在只能工作在方式方式0 0和和1 1例例9-19-1】】 AT89S51AT89S51向向82C5582C55的控制字寄存器写入的控制字寄存器写入工作工作方式控制字方式控制字95H95H,根据,根据图图9-39-3,将,将82C5582C55编程设置为:编程设置为:PAPA口口方式方式0 0输入,输入,PBPB口方式口方式1 1输出,输出,PCPC口的上半部分(口的上半部分(PC7PC7~~PC4PC4)输出,)输出,PCPC口的下半部分(口的下半部分(PC3PC3~~PC0PC0)输入。
输入MOVMOVDPTRDPTR,,#××××H#××××H;控制字寄存器端口地址;控制字寄存器端口地址;;××××H××××H送送DPTR DPTR MOV MOV A A,,#95H#95H;; 方式控制字方式控制字83H83H送送A AMOVXMOVX@DPTR@DPTR,,A A;; 控制字控制字83H83H送控制字寄存器送控制字寄存器212..PC口按位置位口按位置位/复位控制字复位控制字为另一控制字即PC口中任何一位,可用一个写入82C55控制口的置位置位/复位控制字复位控制字来对PC口按位置置““1””或清“0”用于位控位控格式如图图9-4所示所示例例9-2】】 AT89S51向82C55的控制字寄存器写入工作工作方式控制字方式控制字07H,则PC3置置1;08H写入控制口,则PC4清清0程序段如下:MOVDPTR,#××××H; 控制寄存器端口地址;××××H送DPTR MOV A,#07H; 方式控制字83H送A22图9-4 PC口按位置位口按位置位/复位控制字格式复位控制字格式23MOVX@DPTR,A; 控制字83H送控制寄存器,把PC3置1…………MOVDPTR,#××××H; 控制字寄存器端口地址送DPTR MOV A,#08H; 方式控制字08H送AMOVX@DPTR,A; 08H送控制字寄存器,PC4清0249.2.3 82C55的的3种工作方式种工作方式1.方式.方式0是基本输入基本输入/输出方式输出方式。
T89S51可对82C55进行I/O数据的无条件传送无条件传送例如,例如,AT89S51单片机从82C55的某一输入口读入一组开关状态,从82C55输出控制一组指示灯的亮、灭并不并不需要任何条件,需要任何条件,外设I/O数据可在82C55的各端口得到锁存和缓冲因此,方式方式0称为基本输入基本输入/输出方式输出方式方式0下,3个端口都可以由软件设置为输入或输出,不需要应答联络信号方式0的基本功能基本功能如下:25((1))具有两个8位端口(PA、PB)和两个4位端口(PC的上半部分和下半部分)2))任何端口都可以设定为输入或输出,各端口的输入、输出共有16种组合PA口、口、PB口和口和PC口口均可设定为均可设定为方式方式0,并可根据需要,向控制寄存器写入工作方式控制字,规定各端口为输入或输出方式26【【例例9-3】】 假设82C55的控制字寄存器控制字寄存器端口地址为端口地址为FF7FH,令PA口和口和PC口口的高高4位位为方式0输出,PB口口和PC口口的低低4位位为方式0输入,初始化程序:MOVDPTR,#0FF7FH; 端口地址#0FF7F送DPTR MOV A,#83H; 方式控制字83H送AMOVX@DPTR,A; 控制字83H送控制字寄存器272 2.方式.方式1 1是一种采用应答联络应答联络的输入的输入/输出工作方式输出工作方式。
PA口、PB口皆可设成这种工作方式在方式1下,82C55的PA口和口和PB口口通常用于I/O数据的传送,PC口口用作PA口和PB口的应答联络信号线应答联络信号线,以实现采用中断方式来传送I/O数据PC口的PC7~PC0的应答联络线是规定好的应答联络线是规定好的,其各位分配如如图图9-5和图图9-7所示,图中,标有I/O的各位仍可用作基本输入/输出,不作应答联络用下介绍方式1输入/输出时的应答联络信号应答联络信号与工作原理工作原理28((1)方式)方式1输入输入方式1输入应答联络信号如图图9-5所示所示其中 与IBF为一对一对应答联络信号各应答联络信号应答联络信号的功能功能如下n :是由输入外设输入外设发给82C55的选通输入信号选通输入信号,低有效nIBF::输入缓冲器满,应答信号82C55通知外设已收到外设发来的且已进入输入缓冲器的数据,高有效nINTR::由82C55向AT89S51单片机发出的中断请求信号,高有效nINTEA::控制PA口是否允许中断口是否允许中断的控制信号,由PC4的置位/复位来控制29nINTEB::控制PB口是否允许中断的控制信号,由PC2的置位/复位来控制。
方式1输入如图图9-6所示所示下面以PA口的方式1输入为例,介绍方式方式1输入的工作过程输入的工作过程① 当外设向82C55输入一个数据并送到PA7~PA0时,外设自动在 上向82C55发送一个低电平选通信号② 82C55收到 后,先把PA7~PA0输入的数据存入存入PA口的输入数据缓冲/锁存器,然后使输出应答线IBF变为高,通知输入外设,PA口已收到它送来的数据③ 82C55检测到 由低电平变为高电平、IBFA(PC5)为“1”状态和中断允许INTEA(PC4)=1时,使30INTRA((PC3)变为高电平)变为高电平,向单片机发出中断请求INTEA的状态可由用户通过指令对PC4的单一置位/复位控制字来控制 ④ 单片机响应中断后,进入中断服务子程序进入中断服务子程序来读取读取PA口的外设发来的输入数据口的外设发来的输入数据当输入数据被单片机读走后,82C55撤销撤销INTRA上的中断请求上的中断请求,并使IBFA变低低,通知输通知输入外设入外设可传送下一个输入数据3132图9-5 方式方式1输入入应答答联络信号信号33图9-6 PA口方式口方式1输入工作入工作过程示意程示意图((2)方式)方式1输出输出方式1输出时,应答联络信号如图图9-7所示所示。
与与 构成一对一对应答联络信号应答联络信号,应答联络信号功能如下n :端口输出缓冲器满信号,低有效,它是82C55发给外设的联络信号,表示外设可以将数据取走n ::外设应答信号,低有效表示外设已把82C55发出的数据取走nINTR::中断请求信号,高有效表示该数据已被外设取走,向单片机单片机发出中断请求,如果AT89S51响应该中断,在中断服务子程序中向82C55写入要输出的下一数据34nINTEA—控制PA口是否允许中断,由PC6控制nINTEB—控制PB口是否允许中断,由PC2控制方式1输出工作示意如图图9-8所示所示以PB口的方式口的方式1输出输出为例,介绍工作过程① AT89S51可以通过““MOVX @Ri,,A””指令把输出数据送到B口的输出数据锁存器,82C55收到后便令输出缓冲器满引脚 (PC1)变低,以通知输出设备输出的数据已在PB口的PB7~PB0上② 输出外设收到 上低电平后,先从PB7~PB0上取走输出数据,然后使 B 变低电平,以通知82C55输出外设已收到82C55输出的数据。
3536图9-7 方式方式1输出出应答答联络信号信号 图图9-8 PB口方式口方式1输出工作过程示意图输出工作过程示意图37③ 82C55从应答输入线 B收到低电平后就对 B 和中断允许控制位INTEB状态进行检测,若皆为高电平,则INTRB变为高电平变为高电平而向单片机请求中断④ AT89S51单片机响应响应INTRB上中断请求后便可通过中断服务程序把下一个输出数据下一个输出数据送到PB口的输出数据锁存器重复上述过程,完成数据的输出3.方式.方式2只有PA口才有方式2图图9-9为工作示意图方式方式2是是方方式式1输入输入和和输出输出组合组合PA7~~PA0为双向I/O总线当作为输入口使用,PA7~PA0受STBA 和IBFA控制;当作输出输出端口端口使用,PA7~PA0受 A、 A 控制3839图9-9 PA口在方式口在方式2下的工作示意下的工作示意图方式方式2特别适用于像键盘、显示器一类的外部设备特别适用于像键盘、显示器一类的外部设备,因为有时需要把键盘上输入的编码信号通过PA口送给单片机,有时又需把单片机发出的数据通过PA口送给显示器显示。
9.2.4 AT89S51单片机与单片机与82C55的接口设计的接口设计1.硬件接口电路.硬件接口电路如图9-10为AT89S51扩展一片82C55的电路P0.1、、P0.0经经74LS373与与82C55的的A1、、A0连接连接;P0.7经74LS373与片选端 相连,其它地址线悬空;82C55的控制线 、、 直接与单片机 和和 端相连;单片机数据总线P0.0~P0.7与82C55数据线D0~D7连接402.确定.确定82C55端口地址端口地址图图9-10中中82C55只有只有3条线与条线与AT89S51地址线相接,片地址线相接,片选端选端 、端口地址选择端、端口地址选择端A1、、A0,分别接于,分别接于P0.7、、P0.1和和P0.0,其他地址线全悬空显然只要保证,其他地址线全悬空显然只要保证P0.7为低为低电平时,电平时,即可选中即可选中82C55;若;若P0.1、、P0.0再为再为““00””,则,则选中选中82C55的的PA口同理P0.1、、P0.0为为““01””、、““10””、、““11””分别选中分别选中PB口、口、PC口及控制口。
口及控制口若端口地址用若端口地址用16位表示,其他无用端全设为位表示,其他无用端全设为““1””(也(也可把无用端全设为可把无用端全设为““0””),则),则82C55的的A、、B、、C及控制及控制口口地址地址分别为分别为FF7CH、、FF7DH、、FF7EH、、FF7FH4142图9-10 AT89S51单片机片机扩展一片展一片82C55的接口的接口电路路如果没有用到的位取“0”,则4个端口地址分别为个端口地址分别为0000H、、0001H、、0002H、、0003H,,只要保证 、A1、A0的状态,无用位设为“0”或“1”均可3.软件编程.软件编程在实际设计中,须根据外设的类型选择82C55的操作方式,并在初始化程序中把相应控制字写入控制口在初始化程序中把相应控制字写入控制口下面根据图图9-10,介绍对82C55进行操作的编程例例9-4】】要求82C55工作在方式0,且PA口作为输入,PB口、PC口作为输出,程序如下:MOVA,#90H ;控制字送A MOVDPTR,#0FF7FH;控制寄存器地址FF7FH→DPTR43MOVX@DPTR,A;方式控制字→控制寄存器MOVDPTR,#0FF7CH;PA口地址FF7CH→DPTRMOVXA,@DPTR;从PA口读入数据→AMOVDPTR,#0FF7DH;PB口地址FF7DH→DPTRMOVA,#data1;要输出的数据#data1→AMOVX@DPTR,A;将#data1送PB口输出MOVDPTR,#0FF7EH;PC口地址→DPTRMOVA,# data 2;数据#data 2→AMOVX@DPTR,A;将数据#data 2送PC口输出44【【例例9-5】】对端口PC的置位/复位。
1PC口1中的任1一位,均可用指令来置位或复位例如,如果想把PC口的PC5置“1”,相应的控制字为00001011B = 0BH(关于82C55的PC口置位/复位的控制字说明见图9-4)程序如下:MOVR1,#,#7FH;控制口地址;控制口地址7FH→→R1MOV A,#,#0BH ;控制字;控制字0BH→→AMOVX @R1,, A ;控制字;控制字7FH→→控制口,把控制口,把PC5置置145如果想把PC口的PC5复位复位,相应的控制字0AH,程序如下:MOV R1,#,#7FH;控制口地址;控制口地址7FH→→ R1MOV A,#,#0AH;控制字;控制字0AH→→AMOVX @R1,,A;控制字;控制字7FH→→控制口,控制口, PC5清清082C55接口芯片在AT89S51单片机应用系统中广泛用于与各种外部数字设备的连接,如打印机、键盘、显示器以及作为数字信息的输入、输出接口469.3 AT89S51扩展扩展I/O接口芯片接口芯片81C55的设计的设计包含256B的RAM存储器(静态),RAM的存取时间为400ns,可编程的两个两个8位并行口位并行口PA和和PB,可编程的一个一个6位并行口位并行口PC,以及一个一个14位的减位的减1计数器计数器。
PA口和口和PB口可工作于基本输入口可工作于基本输入/输出方式输出方式(同82C55的方式0)或选或选通输入通输入/输出方式输出方式(同82C55的方式1)81C55可直接与AT89S51相连,不需增加任何硬件逻辑电路由于81C55片内集成有I/O口、RAM和减1计数器,因而是被选用的I/O接口芯片之一9.3.1 81C55芯片介绍芯片介绍介绍81C55芯片基本特性471..81C55的结构的结构逻辑结构如图图9-11 图图9-11 81C55的逻辑结构482..81C55的引脚功能的引脚功能40引脚,采用双列直插式封装,如图图9-12所示所示 图图9-12 81C55的引脚图的引脚图49各引脚功能如下1))AD7~~AD0,为地址/数据线,与AT89S51单片机的P0口相连,用于分时传送地址/数据信息。
2))I/O总线(总线(22条)PA7~~PA0为通用I/O线,数据传送方向由写入81C55的命令字决定(图9-13);PB7~~PB0为通用I/O线,用于传送PB口上的外设数据,数据传送方向也由写入81C55的控制字决定PC5~~PC0为数据/控制线,共有6条,在通用I/O方式下,用作传送I/O数据;在选通I/O方式下,用作传送命令/状态信息(见表9-3) 50((3)控制引脚)控制引脚nRESET::复位输入线,在RESET线上输入一个大于600ns宽的正脉冲时,81C55即可处于复位状态,PA、PB、PC三口也定义为输入方式n 、、IO/ :: 为片选线,若 =0,则AT89S51单片机选中本81C55工作;否则,本81C55未被选中IO/ 为I/O端口或RAM存储器选择线,若IO/ =0,则AT89S51单片机选中81C55片内的RAM存储器;若IO/ =1,则AT89S51单片机选中81C55的某一I/O端口n 和和 ::当 =0且 =1时,81C55被读出数据状态;当 =1且 = 0时,81C55被写入数据状态。
51nALE::允许地址输入线,高有效若ALE=1,则81C55允许AT89S51通过AD7~AD0线发出地址锁存到81C55片内“地址锁存器”;否则,81C55地址锁存器处于封锁状态81C55的ALE常和AT89S51的ALE相连nTIMERIN和和 ::TIMERIN是计数器脉冲输入线,输入的脉冲上跳沿用于对81C55片内的14位计数器减1 为计数器输出线计数器输出线,当14位计数器减为0时就可以在该引线上输出脉冲或方波输出脉冲或方波,输出脉冲或方波与所选的计数器工作方式有关4)电源线VCC为+5V电源输入线,VSS接地523..CPU对对81C55 I/O端口的控制端口的控制 3个端口数据传送方式是由控制字和状态字来决定的1))81C55各端口地址分配各端口地址分配内部有7个端口个端口,需要3位地址位地址A2~~A0上的不同组合代码来加以区分表表6-2为端口地址分配以及RAM单元的选择2))81C55的控制字的控制字有一个控制寄存器和一个状态标志寄存器工作方式由写入控制寄存器控制寄存器的的控制字控制字来确定来确定。
控制字格式如图9-13所所示示控制寄存器只能写入不能读出只能写入不能读出53CECE* *IO/MIO/M* *A7A7A6A6A5A5A4A4A3A3A2A2A1A1A0A0所选的端口所选的端口0 01 1××××××××××0 00 00 0命令命令/ /状态寄存器状态寄存器0 01 1××××××××××0 00 01 1A A口口0 01 1××××××××××0 01 10 0B B口口0 01 1××××××××××0 01 11 1C C口口0 01 1××××××××××1 10 00 0计数器低计数器低8 8位位0 01 1××××××××××1 10 01 1计数器高计数器高6 6位位0 00 0××××××××××××××××RAMRAM单元单元(1) 8155H(1) 8155H各端口地址分配各端口地址分配54 图图9-13 81C55的控制字格式的控制字格式55控制寄存器中的控制寄存器中的D3~D0位位用来设置PA口、PB口和PC口的工作方式D4、、D5位位用来确定A口、B口以选通输入/输出方式工作时是否允许中断请求D6、、D7位位用来设置计数器的操作。
当计数器未计数时,装入计数长度和方式后立即开始计数;((3))81C55的状态字的状态字有一个状态标志寄存器,用来存入PA口和PB口的状态标志它的地址与控制寄存器地址相同地址与控制寄存器地址相同,只能对其读出,不能写只能对其读出,不能写入入格式如图9-14所示所示56下面仅对状态字中的D6位位给出说明D6为计数器中断状态标志位中断状态标志位TIMER若计数器正在计数或开始计数前计数或开始计数前,则D6=0;若计数器的计数长度已计满计数长度已计满,即计数器减为0,则D6=1,可作为计数器中断请求标志在硬件复位或对它读出后又恢复为09.3.2 81C55的工作方式的工作方式下面介绍81C55的两种工作方式两种工作方式57 图图9-14 81C55状态字格式状态字格式581.存储器方式.存储器方式存储器方式用于对片内256B RAM单元进行读/写,若IO/ =0且 =0,则AT89S51可通过AD7~~AD0上的地址选择RAM存储器中任意单元读/写2..I/O方式方式分基本基本I/O和选通选通I/O两种方式,见表表9-3在I/O方式下,81C55可选择片内任意端口寄存器读/写,端口地址由A2、A1、A0三位决定(见表9-2)。
1)基本)基本I/O方式方式本方式下,PA、PB、PC三口用作输入/输出,由图9-13的命令字决定其中,PA、、PB两口的输入/输出由D1、、D0决定,PC口口各位由D3、、D2状态状态决59定例如,例如,若把02H的命令字送到81C55命令寄存器,则81C55的PA口和PC口各位设定为输入方式,PB口设定为输出方式 ((2)选通)选通I/O方式由命令字中D3、D2状态设定,PA口和PB口都可独立工作于这种方式此时,PA口和PB口用作数据口,PC口用作A口和B口的应答联络控制PC口各位应答联络线的定义是在设计81C55时规定的,其分配和命名见表表9-36061 选通通I/O方式又可分方式又可分为选通通I/O数据数据输入入和和选通通I/O数据数据输出出两两种方式种方式①① 选通通I/O数据数据输入入 PA口和口和PB口口都可设定为本方式若命令字中D0=0且D3、D2=10,则PA口设定为本工作方式;若命令字中D1= 0且D3、D2=11,则PB口设定为本工作方式本工作方式和82C55的选通I/O输入情况类似,如图图9-15((a))所示② ② 选通选通I/O数据输出数据输出PA口和口和PB口口都可设定为本方式。
若命令字命令字D0=1且且D3、、D2=10,则PA口设定为本工作方式;若命令字命令字D1=1且D3、、D2=11,则PB口设定为本工作方式选通I/O数据的输出过程也和82C55的选通I/O输出情况类似,图图9-15((b))所示为选通I/O数据输出的示意图62 图图9-15 选通I/O方式示意图633.内部计数器.内部计数器/计数器及使用计数器及使用14位位的计数器/计数器,CPU可通过软件软件来选择计数长来选择计数长度和计数方式度和计数方式计数长度和计数方式由写入计数器的控制字来确定计数器的格式如图图9-16所示 图图9-16 81C55计数器的格式计数器的格式其中,T13~~T0为计数器的计数位;M2、、M1用来设置计数器的输出方式81C55计数器的4种工作方式种工作方式及对应的 引脚输出波形引脚输出波形如图图9-17所示6465图9-17 81C55计数器工作方式及数器工作方式及 引脚引脚输出波形出波形任何时候任何时候都可设置计数器长度长度和工作方式,工作方式,将控制字写入控制寄存器如果计数器正在计数如果计数器正在计数,只有在写入启动命写入启动命令令后,计数器才接收新计数长度才接收新计数长度并按新的工作方式计数。
若写入计数器的初值为初值为奇数奇数, 引脚的方波输出方波输出是不对不对称称的例如例如,初值为初值为9时,计数器的输出,在5个计数脉冲周期内为高电平高电平,4个计数脉冲周期内为低电平,如图图9-18所示 图图9-18 计数长度为奇数时的不对称方波输出(长度为计数长度为奇数时的不对称方波输出(长度为9))66注意,注意,81C55的计数器初值不是从初值不是从0开始开始,从从2开始开始这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平显然,如果显然,如果计数初值是计数初值是0或或1,就无法产生这种方波,就无法产生这种方波因此81C55计数器的写入初值范围是初值范围是3FFFH~~2H如果硬要将硬要将0或或1作为初值写入作为初值写入,其效果将与送入初值初值2的情况一样81C55复位后使计数器停止计数9.3.3 AT89S51单片机与单片机与81C55的接口设计及软件编程的接口设计及软件编程1.硬件接口电路.硬件接口电路接口如图图9-19所示直接连接不需外加器件6768图9-19 AT89S51单片机与片机与81C55的接口的接口电路路在在图图9-19中,单片机P0口口输出的低低8位地址不需要另外位地址不需要另外加锁存器加锁存器(81C55片内集成有地址锁存器),而直接与81C55的AD0~AD7相连,既可作为低8位地址总线,又可作为数据总线,地址锁存控制直接用AT89S51发出的ALE信号。
81C55的 端接P2.7,IO/ 端与P2.0相连当P2.7=0时,若P2.0=0,则访问81C55的RAM单元由此可得到图9-19中81C55的各端口以及RAM单元的地址编码,见表表9-469702..81C55的编程的编程根据图9-19接口,介绍对81C55的具体操作初始化程序设计初始化程序设计【【例例9-6】】若PA口定义为基本输入方式,PB口定义为基本输出方式,对输入脉冲进行24分频(81C55计数器的最最高计数频率高计数频率为4MHz),则81C55的初始化程序初始化程序如下START::MOV DPTR,#,#7F04H;;DPTR指针指向计数器低指针指向计数器低8位位MOV A,#,#18H ;计数初值;计数初值24送送AMOVX @ DPTR,,A;计数初值低;计数初值低8位装入计数器位装入计数器INC DPTR;指向计数器高;指向计数器高8位位71MOV A,#,#40H;计数器为连续方波输出;计数器为连续方波输出MOVX@ DPTR,,A;计数初值高;计数初值高6位装入计数器位装入计数器MOV DPTR,#,#7F00H;指向命令;指向命令/状态口状态口MOV A,,#0C2H;设定命令控制字;设定命令控制字MOVX @ DPTR,,A;;A口基本输入,口基本输入,B口基本输出,开启计数口基本输出,开启计数【【例例9-7】】读81C55的7EF1H单元。
程序如下:程序如下:MOVDPTR,#7EF1H;DPTR指针指向81C55的7EF1H单元MOVX A,@DPTR;7EF1H单元内容→A72【【例例9-8】】将立即数41H写入81C55 RAM的7E20H单元程序如下:MOV A,,#41H;立即数;立即数→→AMOV DPTR,,#7E20H;;DPTR指针指向指针指向81C55的的7E20H单元单元MOVX @DPTR,,A;立即数;立即数41H送送81C55 RAM的的7E20H单元单元81C55既有RAM又有I/O口,此外,还有计数器在同时需要扩展RAM 、I/O和计数器的系统中,选用81C55特别经济,是单片机系统中常用的外围接口芯片之一常用的外围接口芯片之一739.4 利用利用74LSTTL电路扩展并行电路扩展并行I/O口口在单片机应用中,有些场合有些场合需要降低成本、缩小体积,这时采用TTL电路、CMOS电路锁存器或三态门电路也可构成各种类型的简单输入/输出口如图图9-20所示为一个利用用74LS244和和74LS273芯片芯片,将将P0口扩展成简单的输入口扩展成简单的输入/输出口的电路输出口的电路74LS244和74LS273的工作受AT89S51的P2.0、、 、、 3条条控制线控制。
74LS244作为扩展输入口,8个输个输入端入端分别接8个按钮开关74LS273是8D锁存器扩展输出扩展输出口口,接8个个LED发光二极管发光二极管,以显示以显示8个按钮个按钮开关状态开关状态74图9-20 74LSTTL I/O扩展展举例例75当某条输入口线的按钮开关按下时,该输入口线为低电为低电平平,读入单片机后,其相应位为“0”,然后再将口线的状态经74LS273输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置该电路的工作原理电路的工作原理如下当P2.0=0,, =0(( =1))时,选中74LS244芯片,此时若无按钮开关按下,输入全为高电平当某开关按下时则对应位输入为“0”,74LS244的输入端不全为“1”,其输入状态通过P0口数据线被读入AT89S51片内76当P2.0 = 0,, =0 (( = 1))时,选中74LS273芯片,CPU通过P0口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮总之,在图9-20中只要保证P2.0为“0”,其他地址位或“0”或“1”即可。
如地址用FEFFH(无效位全为“1”),或用0000H(无效位全为“0”)都可77输入程序段:输入程序段:MOV DPTR,,#0FEFFH;;I/O地址地址→→DPTRMOVX A,,@DPTR ;; 为低,为低,74LS244数据被读入数据被读入A中中输出程序段:输出程序段:MOV A,,#data;数据;数据#data→AMOV DPTR,,#0FEFFH;;I/O地址地址#0FEFFH→DPTRMOVX@DPTR,,A;; 为低,数据经为低,数据经74LS273口输口输出出78【【例例9-9】】 编写程序把按钮开关状态通过图9-20的发光二极管显示出来程序如下:DDIS::MOV DPTR,,#0FEFFH ;输入口地址;输入口地址→→DPTRLP::MOVX A,,@DPTR;按钮开关状态读入;按钮开关状态读入A中中 MOVX @DPTR,,A;;A中数据送显示输出口中数据送显示输出口 SJMP LP ;反复连续执行;反复连续执行由程序可看出,对于扩展接口的输入/输出就像从外部RAM读/写数据一样方便。
图图9-20仅仅扩展了两片,如果仅仅扩展了两片,如果仍不够用,还可扩展多片仍不够用,还可扩展多片74LS244、、74LS273之类的芯片之类的芯片但作为输入输入口时,一定要求有三态功能要求有三态功能,否则将影响总线的正常工作799.5 用用AT89S51单片机的串行口扩展并行口单片机的串行口扩展并行口串口的方式方式0用于用于I/O扩展扩展方式0为同步移位寄存器同步移位寄存器工作方式,波特率为fosc/12数据由数据由RXD端(端(P3.0)输入)输入,同步移位时钟由TXD端(端(P3.1))输出9.5.1 用用74LS165扩展并行输入口扩展并行输入口图9-21串口扩展两个扩展两个8位并行输入口位并行输入口74LS165是8位并行输入串行输出的寄存器当74LS165的S/ 端由高到低跳变,并行输入端的数据被置入寄存器;当S/ = 1,,且时钟禁止端(15脚)为低时,允许TXD(P3.1)移位时钟输入,在该脉冲作用下,数据由右向左方向移动80TXD与所有74LS165的的CP相连相连;RXD与74LS165的串串行输出端行输出端QH相连;P1.0与 S/ 相连,控制74LS165的串行移位或并行输入;15脚接地,允许时钟输入。
当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连 图图9-21 利用74LS165扩展并行输入口81【【例例9-10】】从16位扩展口读入5组数据(每组2B),把它们转存到内部RAM 20H开始的单元 MOVR7,,#05H;设置读入组数;设置读入组数 MOV R0,,#20H;设置内部;设置内部RAM数据区首址数据区首址START:: CLR P1.0;并行置入数据,;并行置入数据,S/ =0 SETB P1.0;允许串行移位,;允许串行移位,S/ =1 MOV R2,,#02H;设每组字节数,;设每组字节数, 即即74LS165的个数的个数RXDATA::MOV SCON,,#00010000H;设置串口方式;设置串口方式0,允许,允许;接收,启动接收过程;接收,启动接收过程82WAIT::JNB RI,,WAIT;未接收完一帧,循环等待;未接收完一帧,循环等待 CLR RI;;RI标志清标志清““0””,准备下次接,准备下次接收收 MOV A,,SBUF;读入数据;读入数据 MOV @R0,,A;送至;送至RAM缓冲区缓冲区 INC R0;指向下一个地址;指向下一个地址 DJNZ R2,,RXDATA;未读完一组数据,;未读完一组数据, 继续继续 DJNZ R7,,START;;5组数据未读完重新并行置入组数据未读完重新并行置入 …………;对数据进行处理;对数据进行处理83串行接收过程采用查询等待查询等待的方式,如必要,可改中断中断方式方式。
9.5.2 用用74LS164扩展并行输出口扩展并行输出口图图9-22为串口外接两片两片74LS164((8位串入并出移位寄存器))扩展两个8位并行输出口的接口电路 图图9-22 利用74LS164扩展并行输出口84当串口工作在方式0的发送,串行数据由串行数据由P3.0((RXD))送出,移位时钟由送出,移位时钟由P3.1((TXD)送出)送出注意,由于74LS164无并行输出控制端无并行输出控制端,在串行输入中,其输出端的输出端的状态会不断变化状态会不断变化,故某些场合,在74LS164输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据例例9-11】】 将内部RAM单元30H、31H的内容经串行口由74LS164并行输出的子程序START::MOVR7,,#02H;设置要发送的字节个数;设置要发送的字节个数 MOV R0,,#30H;设置地址指针;设置地址指针 MOV SCON,,#00H;设置串行口为方式;设置串行口为方式085SEND:: MOV A,,@R0 MOV SBUF,,A;启动串行口发送过程;启动串行口发送过程WAIT::JNB TI,,WAIT;一帧未发完,等待;一帧未发完,等待 CLR TI INC R0;取下一个数;取下一个数 DJNZ R7,,SEND ;未发完,继续,从子程序返回;未发完,继续,从子程序返回 RET9.6 用用I/O口控制的声音报警接口口控制的声音报警接口当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能发出提醒发出提醒人们警觉的声音报警声音报警。
用I/O口很容易实现该功能869.6.1 蜂鸣音报警接口蜂鸣音报警接口购买市售的压电式蜂鸣器,用一根I/O口线驱动蜂鸣器发声约需10mA的驱动电流,可用7406或7407低电平驱动,如图图9-23所示所示,也可以用一个晶体管驱动,如图图9-24所示所示 图图9-23 通过74LS06 来驱动蜂鸣器的报警电路87 图图9-24 使用三极管驱动的蜂鸣器报警电路在在图图9-23中中,P1.7接驱动器的输入端当输出高电平时输出高电平时,7406的输出为低电平,使压电蜂鸣器两加上近5V的直流电压,由压电效应而发出蜂鸣音发出蜂鸣音当当P1.7端输出低电平端输出低电平,7406的输出端高约+5V,压电蜂鸣器的两引线间的直流电压降至接近于0V,发音停止发音停止88在图9-24,当P1.7输出高电平时输出高电平时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫鸣叫;当当P1.7输出低电平输出低电平,三极管截止,蜂鸣器停止发声停止发声下面是连续蜂鸣连续蜂鸣100ms程序,两个接口电路都适用SOUND::SETB P1.7;;P1.7输出高电平,蜂鸣器开始鸣叫输出高电平,蜂鸣器开始鸣叫MOV R4,#64H;延时;延时100msLOOP:: MOV R3,#0F9HLOOP1:: DJNZ R3, LOOP1;延时;延时1ms的循环的循环DJNZ R4, LOOPCLR P1.7 ;;P1.7输出低电平,蜂鸣器停止鸣叫输出低电平,蜂鸣器停止鸣叫RET89如果想要发出更大的声音,可采用功率大的扬声器,采用相应的功率驱动电路。
9.6.2 音乐报警接口音乐报警接口音乐报警电路克服了蜂鸣音报警音调比较单调报警音调比较单调的不足发声电路可购买市售的市售的乐曲发生器乐曲发生器,发出的乐曲声可用来作为某种提示信号或报警信号设计者可根据自己对的喜好来购买音乐报警接口由音乐报警接口由两部分两部分组成:组成:(1) 乐曲发生器乐曲发生器,即集成电子音乐芯片;(2) 放大电路放大电路,也可采用集成放大器90音乐报警接口如图9-25所示所示,图中采用华尔兹乐曲的华尔兹乐曲的电电子音乐芯片子音乐芯片7920A当从P1.7输出高电平输出高电平时,输出端Vout 便发出乐曲信号发出乐曲信号,经M51182L放大而驱动扬声器发出乐曲报警声,音量大小由10kΩ电位器调整若若P1.7输出低电平输出低电平,则7920A因MT输入电位变低而关闭,故扬声器停止奏曲扬声器停止奏曲参考程序:START::SETB P1.7 ;;P1.7为高电平,发出音乐报警乐曲为高电平,发出音乐报警乐曲RETSTOP:: CLR P1.7 ;;P1.7为低电平,音乐报警乐曲停止为低电平,音乐报警乐曲停止RET9192图9-25 音音乐报警接口警接口电路路。