扩展输入输出

上传人:t****d 文档编号:243304721 上传时间:2024-09-20 格式:PPT 页数:92 大小:1.37MB
返回 下载 相关 举报
扩展输入输出_第1页
第1页 / 共92页
扩展输入输出_第2页
第2页 / 共92页
扩展输入输出_第3页
第3页 / 共92页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,章,AT89S51,单片机 的,I/O,扩展,1,1,2,第,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,的接口设计,2,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,口,P0P3,,真正用作,I/O,口线的只有,P1,口,的,8,位,I/O,口线和,P3,口,的某些位线,。因此,,大多需要,外部,I/O,接口的扩展。,介绍,AT89S51,与,两种,常用的可编程,I/O,接口芯片,82C55,和,81C55,的扩展接口设计。此外还介绍使用廉价的,74LSTTL,芯片,扩展并行,I/O,接口以及用,AT89S51,串行口,来扩展并行,I/O,接口的设计。最后介绍使用,I/O,口控制,的,声音报警,接口。,4,9.1 I/O,接口扩展概述,扩展,I/O,接口与扩展存储器一样,都属于,系统扩展,的内容。扩展的,I/O,接口应该具有哪些功能?,9.1.1,扩展的,I/O,接口功能,扩展的,I/O,接口电路主要应满足以下功能要求。,1,实现和不同外设的速度匹配,大多数外设,的,速度很慢,,无法和,s,量级的单片机速度,相比。单片机在与外设间进行数据传送时,只有在确认外设已为数据传送,做好准备,的前提下,才能进行数据传送,。外设是否准备好,就需要,I/O,接口电路与外设之间,传送状态信息,,以实现单片机与外设之间的速度匹配。,5,5,2,输出数据锁存,与外设比,单片机的工作速度快,,数据在数据总线上保留的时间十分短暂,,无法满足慢速外设的数据接收。所以在扩展的,I/O,接口电路中,应有输出数据锁存器,,以保证输出数据能,为慢速的接收设备,所接收。,3,输入数据三态缓冲,数据总线,上可能,“挂”有多个数据源,,为使传送数据时,不发生冲突,,只允许当前时刻,正在接收数据的,I/O,接口使用数据总线,,,其余的,I/O,接口,应处于隔离状态,,为此要求,I/O,接口电路能为数据输入提供三态缓冲功能。,6,6,9.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,端口编址,有,两种方式,,,独立编址方式,与,统一编址方式,。,7,7,1,独立编址,I/O,端口地址空间,和,存储器地址空间,分开编址,。,优点,是,I/O,地址空间和存储器地址空间相互独立,界限分明。但需要设置一套专门的读写,I/O,端口的指令和控制信号。,2,统一编址,把,I/O,端口,与,数据存储器单元,同等对待。,I/O,端口和外部数据存储器,RAM,统一编址,。因此外部数据存储器空间也包括,I/O,端口在内。,优点,是不需专门的,I/O,指令。,缺点,是需要把数据存储器单元地址与,I/O,端口的地址划分清楚,,避免数据冲突。,8,8,9.1.3 I/O,数据的传送方式,为了实现和不同外设的,速度匹配,,必须根据不同外设选择恰当的,I/O,数据传送方式,。,I/O,数据传送方式有:,同步传送、异步传送,和,中断传送,。,1,同步传送,同步传送又称无条件传送。当外设速度和单片机的速度相比拟时,常采用同步传送方式,典型的同步传送是,单片机和外部数据存储器之间,的,数据传送,。,2,查询传送,又称,有条件传送,(也称,异步式传送,)。通过查询外设“准备好”后,再进行数据传送。优点是通用性好,硬件连线和查询程序简单,但,工作效率不高,。,9,9,3,中断传送,为了,提高,单片机对外设的,工作效率,,通常采用中断传送方式,来实现,I/O,数据的传送。单片机,只有在外设准备好后,才中断主程序的执行,,从而进入与外设数据传送的中断服务子程序,进行数据传送。中断服务完成后又返回主程序断点处继续执行。采用中断方式可大大,提高工作效率,。,9.1.4 I/O,接口电路,常用的外围,I/O,接口芯片:,(,1,),82C55,:可编程通用并行接口(,3,个,8,位,I/O,口)。,10,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,所示,。,11,11,12,图,9-1,82C55,的引脚图,图,9-2,82C55,的内部结构,12,1,引脚说明,共,40,个引脚,,,引脚功能如下,:,D7,D0,:,三态双向数据线,与单片机的,P0,口连接,用来与单片机之间传送数据信息。,:,片选信号线,低有效,表示本芯片被选中。,:,读信号线,低有效,读,82C55,端口数据的控制信号。,:,写信号线,低电平有效,用来向,82C55,写入端口数据的控制信号。,V,CC,:,+5V,电源。,13,13,PA7,PA0,:,端口,A,输入,/,输出线。,PB7,PB0,:,端口,B,输入,/,输出线。,PC7,PC0,:,端口,C,输入,/,输出线。,A1,、,A0,:,地址线,用来选择,82C55,内部的,4,个端口。,RESET,:,复位引脚,高电平有效。,2,内部结构,如,图,9-2,所示,,,3,个并行数据输入,/,输出端口,,,两种工作方式,的控制电路,一个读,/,写控制逻辑电路和一个,8,位数据总线缓冲器。,各部件的功能如下:,14,14,(,1,)端口,PA,、,PB,、,PC,3,个,8,位并行口,PA,、,PB,和,PC,,都可以选为输入,/,输出工作模式,功能和结构上有差异。,PA,口:,一个,8,位数据,输出锁存器和缓冲器,;一个,8,位数据,输入锁存,器,。,PB,口:,一个,8,位数据,输出锁存器和缓冲器,;一个,8,位数据,输入缓冲器,。,PC,口:,一个,8,位的,输出锁存器,;一个,8,位数据,输入缓冲器,。,通常,PA,口、,PB,口,作为输入,/,输出口,,PC,口,既可作为输入,/,输出口,也可在软件控制下,分为两个,4,位的端口,作为端口,PA,、,PB,选通方式操作时的状态控制信号。,15,15,(,2,),A,组和,B,组控制电路,是两组根据,AT89S51,写入的,“命令字”,控制,82C55,工作方式的控制电路。,A,组,控制,PA,口和,PC,口的,上半部,(,PC7,PC4,);,B,组,控制,PB,口和,PC,口的,下半部,(,PC3,PC0,),并可用“命令字”来对端口,PC,的每一位实现按位置“,1,”或清“,0,”。,(,3,)数据总线缓冲器,数据总线缓冲器是一个三态双向,8,位缓冲器,作为,82C55,与系统总线之间的接口,,用来传送,数据、指令、控制命令以及外部状态信息。,16,16,(,4,)读,/,写控制逻辑电路,接收,AT89S51,单片机发来,的,控制信号,、,、,RESET,、,地址信号,A1,、,A0,等,然后根据控制信号的要求,端口数据被,AT89S51,单片机读出,或者将,AT89S51,单片机送来的数据写入端口。,各端口工作状态与控制信号的关系见,表,9-1,。,17,17,18,18,9.2.2,工作方式选择控制字及端口,PC,置位,/,复位控制字,可,向,82C55,控制寄存器写入两种,不同的控制字,。,1,工作方式选择控制字,82C55,有,3,种,基本工作方式:,(,1,)方式,0,基本输入,/,输出;,(,2,)方式,1,选通输入,/,输出;,(,3,)方式,2,双向传送(仅,PA,口有此工作方式)。,3,种工作方式方式控制字来决定。,格式,如,图,9-3,所示,。最高位,D7=1,,为本方式控制字的,标志,,以便与另一控制字相区别(最高位,D7=0,)。,19,19,20,图,9-3,82C55,的方式控制字格式,20,PC,口分两部分,,随,PA,口,称为,A,组,,随,PB,口,称为,B,组,。其中,PA,口,可工作于方式,0,、,1,和,2,,而,PB,口,只能工作在,方式,0,和,1,。,【,例,9-1】,AT89S51,向,82C55,的控制字寄存器写入,工作方式控制字,95H,,根据,图,9-3,,将,82C55,编程设置为:,PA,口方式,0,输入,,PB,口方式,1,输出,,PC,口的上半部分(,PC7,PC4,)输出,,PC,口的下半部分(,PC3,PC0,)输入。,MOVDPTR,,,#H,;控制字寄存器端口地址,;,H,送,DPTR,MOV A,,,#95H,; 方式控制字,83H,送,A,MOVXDPTR,,,A,; 控制字,83H,送控制字寄存器,21,21,2,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,送,A,22,22,图,9-4,PC,口按位置位,/,复位控制字格式,23,MOVXDPTR,,,A,; 控制字,83H,送控制寄存器,把,PC3,置,1,MOVDPTR,,,#H,; 控制字寄存器端口地址送,DPTR,MOV A,,,#08H,; 方式控制字,08H,送,A,MOVXDPTR,,,A,;,08H,送控制字寄存器,,PC4,清,0,24,24,9.2.3 82C55,的,3,种工作方式,1,方式,0,是,基本输入,/,输出方式,。,T89S51,可对,82C55,进行,I/O,数据的,无条件传送,。,例如,,AT89S51,单片机从,82C55,的某一输入口读入一组开关状态,从,82C55,输出控制一组指示灯的亮、灭。,并不需要任何条件,,外设,I/O,数据可在,82C55,的各端口得到锁存和缓冲。因此,,方式,0,称为,基本输入,/,输出方式,。,方式,0,下,,3,个端口都可以由软件设置为输入或输出,不需要应答联络信号。方式,0,的,基本功能,如下:,25,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,送,A,MOVXDPTR,,,A,; 控制字,83H,送控制字寄存器,27,27,2,方式,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,28,(,1,)方式,1,输入,方式,1,输入应答联络信号如,图,9-5,所示,。其中,与,IBF,为,一对,应答联络信号,。各,应答联络信号,的,功能,如下。,:,是由,输入外设,发给,82C55,的,选通输入信号,,低有效。,IBF,:,输入缓冲器满,应答信号。,82C55,通知外设已收到外设发来的且已进入输入缓冲器的数据,高有效。,INTR,:,由,82C55,向,AT89S51,单片机发出的中断请求信号,高有效。,INTE,A,:,控制,PA,口是否允许中断,的控制信号,由,PC4,的置位,/,复位来控制。,29,29,INTE,B,:,控制,PB,口是否允许中断的控制信号,由,PC2,的置位,/,复位来控制。,方式,1,输入如,图,9-6,所示,。下面以,PA,口的方式,1,输入为例,介绍,方式,1,输入的工作过程。, 当外设向,82C55,输入一个数据并送到,PA7,PA0,时,外设自动在,上向,82C55,发送一个低电平选通信号。,82C55,收到,后,先把,PA7,PA0,输入的数据,存入,PA,口的输入数据缓冲,/,锁存器,然后使输出应答线,IBF,变为高,通知输入外设,,PA,口已收到它送来的数据。,82C55,检测到,由低电平变为高电平、,IBF,A,(,PC5,)为“,1,”状态和中断允许,INTE,A,(,PC4,),=1,时,使,30,30,INTR,A,(,PC3,)变为高电平,,向单片机发出中断请求。,INTE,A,的状态可由用户通过指令对,PC4,的单一置位,/,复位控制字来控制。, 单片机响应中断后,,进入中断服务子程序,来,读取,PA,口的外设发来的输入数据,。当输入数据被单片机读走后,,82C55,撤销,INTR,A,上的中断请求,,并使,IBF,A,变,低,,,通知输入外设,可传送下一个输入数据。,31,31,32,图,9-5,方式,1,输入应答联络信号,32,33,图,9-6,PA,口方式,1,输入工作过程示意图,33,(,2,)方式,1,输出,方式,1,输出时,应答联络信号如,图,9-7,所示,。,与,构成,一对,应答联络信号,,应答联络信号功能如下。,:,端口输出缓冲器满信号,低有效,它是,82C55,发给外设的联络信号,表示外设可以将数据取走。,:,外设应答信号,低有效。表示外设已把,82C55,发出的数据取走。,INTR,:,中断请求信号,高有效。表示该数据已被外设取走,向,单片机,发出中断请求,如果,AT89S51,响应该中断,在中断服务子程序中向,82C55,写入要输出的下一数据。,34,34,INTE,A,控制,PA,口是否允许中断,由,PC6,控制。,INTE,B,控制,PB,口是否允许中断,由,PC2,控制。,方式,1,输出工作示意如,图,9-8,所示,。以,PB,口的方式,1,输出,为例,介绍工作过程。,AT89S51,可以通过,“,MOVX R,i,,,A,”,指令把输出数据送到,B,口的输出数据锁存器,,82C55,收到后便令输出缓冲器满引脚,(,PC1,)变低,以通知输出设备输出的数据已在,PB,口的,PB7,PB0,上。, 输出外设收到,上低电平后,先从,PB7,PB0,上取走输出数据,然后使,B,变低电平,以通知,82C55,输出外设已收到,82C55,输出的数据。,35,35,36,图,9-7,方式,1,输出应答联络信号,36,图,9-8,PB,口方式,1,输出工作过程示意图,37,37,82C55,从应答输入线,B,收到低电平后就对,B,和中断允许控制位,INTE,B,状态进行检测,若皆为高电平,则,INTR,B,变为高电平,而向单片机请求中断。,AT89S51,单片机,响应,INTR,B,上中断请求后便可通过中断服务程序把,下一个输出数据,送到,PB,口的输出数据锁存器。重复上述过程,完成数据的输出。,3,方式,2,只有,PA,口才有方式,2,。,图,9-9,为工作示意图。,方式,2,是,方式,1,输入,和,输出,组合,。,PA7,PA0,为双向,I/O,总线。当作为输入口使用,,PA7,PA0,受,STB,A,和,IBF,A,控制;当作,输出端口,使用,,PA7,PA0,受,A,、,A,控制。,38,38,39,图,9-9,PA,口在方式,2,下的工作示意图,39,方式,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,连接。,40,40,2,确定,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,、,FF7FH,。,41,41,42,图,9-10,AT89S51,单片机扩展一片,82C55,的接口电路,42,如果没有用到的位取“,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,DPTR,43,43,MOVXDPTR,,,A,;方式控制字控制寄存器,MOVDPTR,,,#0FF7CH,;,PA,口地址,FF7CH,DPTR,MOVXA,,,DPTR,;从,PA,口读入数据,A,MOVDPTR,,,#0FF7DH,;,PB,口地址,FF7DH,DPTR,MOVA,,,#data1,;要输出的数据,#data1,A,MOVXDPTR,,,A,;将,#data1,送,PB,口输出,MOVDPTR,,,#0FF7EH,;,PC,口地址,DPTR,MOVA,,,# data 2,;数据,#data 2,A,MOVXDPTR,,,A,;将数据,#data 2,送,PC,口输出,44,44,【,例,9-5,】,对端口,PC,的置位,/,复位。,1PC,口,1,中的任,1,一位,均可用指令来置位或复位。例如,如果想把,PC,口的,PC5,置“,1,”,相应的控制字为,00001011B=0BH,(关于,82C55,的,PC,口置位,/,复位的控制字说明见,图,9-4,)。程序如下:,MOVR1,,,7FH,;控制口地址,7FH,R1,MOV A,,,0BH,;控制字,0BH,A,MOVX R1,,,A,;控制字,7FH,控制口,把,PC5,置,1,45,45,如果想把,PC,口的,PC5,复位,,相应的控制字,0AH,,程序如下:,MOV R1,,,7FH,;控制口地址,7FH,R1,MOV A,,,0AH,;控制字,0AH,A,MOVX R1,,,A,;控制字,7FH,控制口,,PC5,清,0,82C55,接口芯片在,AT89S51,单片机应用系统中广泛用于与各种外部数字设备的连接,如打印机、键盘、显示器以及作为数字信息的输入、输出接口。,46,46,9.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,芯片基本特性。,47,47,1,81C55,的结构,逻辑结构如,图,9-11,。,图,9-11,81C55,的逻辑结构,48,2,81C55,的引脚功能,40,引脚,采用双列直插式封装,如,图,9-12,所示,。,图,9-12,81C55,的引脚图,49,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,50,(,3,)控制引脚,RESET,:,复位输入线,在,RESET,线上输入一个大于,600ns,宽的正脉冲时,,81C55,即可处于复位状态,,PA,、,PB,、,PC,三口也定义为输入方式。,、,IO/,:,为片选线,若,=0,,则,AT89S51,单片机选中本,81C55,工作;否则,本,81C55,未被选中。,IO/,为,I/O,端口或,RAM,存储器选择线,若,IO/,=0,,则,AT89S51,单片机选中,81C55,片内的,RAM,存储器;若,IO/,=1,,则,AT89S51,单片机选中,81C55,的某一,I/O,端口。,和 :,当,=0,且,=1,时,,81C55,被读出数据状态;当,=1,且,= 0,时,,81C55,被写入数据状态。,51,51,ALE,:,允许地址输入线,高有效。若,ALE=1,,则,81C55,允许,AT89S51,通过,AD7,AD0,线发出地址锁存到,81C55,片内“地址锁存器”;否则,,81C55,地址锁存器处于封锁状态。,81C55,的,ALE,常和,AT89S51,的,ALE,相连。,TIMERIN,和,:,TIMERIN,是计数器脉冲输入线,输入的脉冲上跳沿用于对,81C55,片内的,14,位计数器减,1,。,为,计数器输出线,,当,14,位计数器减为,0,时就可以在该引线上,输出脉冲或方波,,输出脉冲或方波与所选的计数器工作方式有关。,(,4,)电源线。,V,CC,为,+5V,电源输入线,,V,SS,接地。,52,52,3,CPU,对,81C55 I/O,端口的控制,3,个端口数据传送方式是由控制字和状态字来决定的。,(,1,),81C55,各端口地址分配,内部有,7,个端口,,需要,3,位地址,A2,A0,上的不同组合代码来加以区分。,表,6-2,为端口地址分配以及,RAM,单元的选择。,(,2,),81C55,的控制字,有一个控制寄存器和一个状态标志寄存器。工作方式由写入,控制寄存器,的,控制字,来确定,。控制字格式如,图,9-13,所示,。控制寄存器,只能写入不能读出,。,53,53,CE,*,IO/M,*,A7,A6,A5,A4,A3,A2,A1,A0,所选的端口,0,1,0,0,0,命令,/,状态寄存器,0,1,0,0,1,A,口,0,1,0,1,0,B,口,0,1,0,1,1,C,口,0,1,1,0,0,计数器低,8,位,0,1,1,0,1,计数器高,6,位,0,0,RAM,单元,(1) 8155H,各端口地址分配,54,图,9-13,81C55,的控制字格式,55,55,控制寄存器中的,D3D0,位,用来设置,PA,口、,PB,口和,PC,口的工作方式。,D4,、,D5,位,用来确定,A,口、,B,口以选通输入,/,输出方式工作时是否允许中断请求。,D6,、,D7,位,用来设置计数器的操作。当计数器未计数时,装入计数长度和方式后立即开始计数;,(,3,),81C55,的状态字,有一个状态标志寄存器,用来存入,PA,口和,PB,口的状态标志。它的,地址与控制寄存器地址相同,,,只能对其读出,不能写入,。格式如,图,9-14,所示,。,56,下面仅对状态字中的,D6,位,给出说明。,D6,为计数器,中断状态标志位,TIMER,。,若计数器正在,计数或开始计数前,,则,D6=0,;若计数器的,计数长度已计满,,即计数器减为,0,,则,D6=1,,可作为计数器中断请求标志。在硬件复位或对它读出后又恢复为,0,。,9.3.2 81C55,的工作方式,下面介绍,81C55,的,两种工作方式,。,57,57,图,9-14,81C55,状态字格式,58,58,1,存储器方式,存储器方式用于对片内,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,59,定。,例如,,若把,02H,的命令字送到,81C55,命令寄存器,则,81C55,的,PA,口和,PC,口各位设定为输入方式,,PB,口设定为输出方式。,(,2,)选通,I/O,方式。,由命令字中,D3,、,D2,状态设定,,PA,口和,PB,口都可独立工作于这种方式。此时,,PA,口和,PB,口用作数据口,,PC,口用作,A,口和,B,口的应答联络控制。,PC,口各位应答联络线的定义是在设计,81C55,时规定的,其分配和命名见,表,9-3,。,60,60,61,选通,I/O,方式又可分为,选通,I/O,数据输入,和,选通,I/O,数据输出,两种方式,。, 选通,I/O,数据输入,PA,口和,PB,口,都可设定为本方式。若命令字中,D0=0,且,D3,、,D2=10,,则,PA,口设定为本工作方式;若命令字中,D1=0,且,61,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,62,图,9-15,选通,I/O,方式示意图,63,63,3,内部计数器,/,计数器及使用,14,位,的计数器,/,计数器,,CPU,可通过,软件,来选择计数长度和计数方式,。计数长度和计数方式由写入计数器的控制字来确定。计数器的格式如,图,9-16,所示。,图,9-16,81C55,计数器的格式,其中,,T13,T0,为计数器的计数位;,M2,、,M1,用来设置计数器的输出方式。,81C55,计数器的,4,种工作方式,及对应的,引脚输出波形,如,图,9-17,所示。,64,64,65,图,9-17,81C55,计数器工作方式及 引脚输出波形,65,任何时候,都可设置计数器,长度,和,工作方式,,将控制字写入控制寄存器。,如果计数器正在计数,,,只有在,写入启动命令,后,计数器,才接收新计数长度,并按新的工作方式计数。,若写入计数器的,初值为,奇数,,,引脚的,方波输出,是,不对称,的。,例如,,,初值为,9,时,计数器的输出,在,5,个,计数脉冲周期内为,高电平,,,4,个,计数脉冲周期内为,低电平,,如,图,9-18,所示。,图,9-18,计数长度为奇数时的不对称方波输出(长度为,9,),66,66,注意,,81C55,的计数器,初值不是从,0,开始,,,从,2,开始,。这是因为,如果选择计数器的输出为方波形式(无论是单方波还是连续方波),则规定是从启动计数开始,前一半计数输出为高电平,后一半计数输出为低电平。,显然,如果计数初值是,0,或,1,,就无法产生这种方波,。因此,81C55,计数器的写入,初值范围是,3FFFH,2H,。,如果,硬要将,0,或,1,作为初值写入,,其效果将与送入,初值,2,的情况一样。,81C55,复位后使计数器停止计数。,9.3.3 AT89S51,单片机与,81C55,的接口设计及软件编程,1,硬件接口电路,接口如,图,9-19,所示。直接连接不需外加器件。,67,67,68,图,9-19,AT89S51,单片机与,81C55,的接口电路,68,在,图,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-4,。,69,69,70,70,2,81C55,的编程,根据,图,9-19,接口,介绍对,81C55,的具体操作。,初始化程序设计,【,例,9-6,】,若,PA,口定义为基本输入方式,,PB,口定义为基本输出方式,对输入脉冲进行,24,分频(,81C55,计数器的,最高计数频率,为,4MHz,),则,81C55,的,初始化程序,如下,START,:,MOV DPTR,,,7F04H,;,DPTR,指针指向计数器低,8,位,MOV A,,,18H,;计数初值,24,送,A,MOVX DPTR,,,A,;计数初值低,8,位装入计数器,INC DPTR,;指向计数器高,8,位,71,71,MOV 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,单元内容,A,72,72,【,例,9-8,】,将立即数,41H,写入,81C55 RAM,的,7E20H,单元。程序如下:,MOV A,,,#41H,;立即数,A,MOV DPTR,,,#7E20H,;,DPTR,指针指向,81C55,的,7E20H,单元,MOVX DPTR,,,A,;立即数,41H,送,81C55 RAM,的,7E20H,单元,81C55,既有,RAM,又有,I/O,口,此外,还有计数器。在同时需要扩展,RAM,、,I/O,和计数器的系统中,选用,81C55,特别经济,是单片机系统中,常用的外围接口芯片之一,。,73,73,9.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,74,图,9-20,74LSTTL I/O,扩展举例,75,当某条输入口线的,按钮开关,按下,时,该输入口线,为低电平,,读入单片机后,其相应位为“,0,”,然后再将口线的状态经,74LS273,输出,某位低电平时二极管发光,从而显示出按下的按钮开关的位置。,该,电路的工作原理,如下。,当,P2.0=0,,,=0,(,=1,),时,,选中,74LS244,芯片,,此时若无按钮开关按下,输入全为高电平。当某开关按下时则对应位输入为“,0,”,,74LS244,的输入端不全为“,1,”,其输入状态通过,P0,口数据线被读入,AT89S51,片内。,76,76,当,P2.0=0,,,=0,(,=1,),时,选中,74LS273,芯片,,CPU,通过,P0,口输出数据锁存到,74LS273,,,74LS273,的输出端低电平位对应的,LED,发光二极管点亮。,总之,在,图,9-20,中只要保证,P2.0,为“,0,”,其他地址位或“,0,”或“,1,”即可。如地址用,FEFFH,(无效位全为“,1,”),或用,0000H,(无效位全为“,0,”)都可。,77,77,输入程序段:,MOV DPTR,,,#0FEFFH,;,I/O,地址,DPTR,MOVX A,,,DPTR,;,为低,,74LS244,数据被读入,A,中,输出程序段:,MOV A,,,#data,;数据,#dataA,MOV DPTR,,,#0FEFFH,;,I/O,地址,#0FEFFHDPTR,MOVXDPTR,,,A,;,为低,数据经,74LS273,口输出,78,78,【,例,9-9,】,编写程序,把按钮开关状态,通过,图,9-20,的,发光二极管,显示出来。程序如下:,DDIS,:,MOV,DPTR,,,#0FEFFH,;输入口地址,DPTR,LP,:,MOVX,A,,,DPTR,;按钮开关状态读入,A,中,MOVX,DPTR,,,A,;,A,中数据送显示输出口,SJMP,LP,;反复连续执行,由程序可看出,对于扩展接口的输入,/,输出就像从外部,RAM,读,/,写数据一样方便。,图,9-20,仅仅扩展了两片,如果仍不够用,还可扩展多片,74LS244,、,74LS273,之类的芯片,。但作为,输入,口时,一定,要求有三态功能,,否则将影响总线的正常工作。,79,79,9.5,用,AT89S51,单片机的串行口扩展并行口,串口的,方式,0,用于,I/O,扩展,。,方式,0,为,同步移位寄存器,工作方式,波特率为,f,osc,/12,。,数据由,RXD,端(,P3.0,)输入,,同步移位时钟由,TXD,端(,P3.1,),输出。,9.5.1,用,74LS165,扩展并行输入口,图,9-21,串口,扩展两个,8,位并行输入口。,74LS165,是,8,位并行输入串行输出的寄存器。当,74LS165,的,S/,端由高到低跳变,并行输入端的数据被置入寄存器;当,S/ =1,,,且时钟禁止端(,15,脚)为低时,允许,TXD,(,P3.1,)移位时钟输入,在该脉冲作用下,数据由右向左方向移动。,80,80,TXD,与所有,74LS165,的,CP,相连,;,RXD,与,74LS165,的,串行输出端,Q,H,相连;,P1.0,与,S/,相连,控制,74LS165,的串行移位或并行输入;,15,脚接地,允许时钟输入。当扩展多个,8,位输入口时,相邻两芯片的首尾(,Q,H,与,SIN,)相连。,图,9-21,利用,74LS165,扩展并行输入口,81,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,,允许,;接收,启动接收过程,82,82,WAIT,:,JNB RI,,,WAIT,;未接收完一帧,循环等待,CLR RI,;,RI,标志清“,0,”,准备下次接收,MOV A,,,SBUF,;读入数据,MOV R0,,,A,;送至,RAM,缓冲区,INC R0,;指向下一个地址,DJNZ R2,,,RXDATA,;未读完一组数据, 继续,DJNZ R7,,,START,;,5,组数据未读完重新并行置入,;对数据进行处理,83,83,串行接收过程采用,查询等待,的方式,如必要,可改,中断方式,。,9.5.2,用,74LS164,扩展并行输出口,图,9-22,为串口外接,两片,74LS164,(,8,位串入并出移位寄存器,),扩展两个,8,位并行输出口的接口电路。,图,9-22,利用,74LS164,扩展并行输出口,84,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,;设置串行口为方式,0,85,85,SEND,:,MOV A,,,R0,MOV SBUF,,,A,;启动串行口发送过程,WAIT,:,JNB TI,,,WAIT,;一帧未发完,等待,CLR TI,INC R0,;取下一个数,DJNZ R7,,,SEND,;未发完,继续,从子程序返回,RET,9.6,用,I/O,口控制的声音报警接口,当单片机测控系统发生故障或处于某种紧急状态时,单片机系统应能,发出提醒,人们警觉的,声音报警,。用,I/O,口很容易实现该功能。,86,86,9.6.1,蜂鸣音报警接口,购买市售的压电式蜂鸣器,用一根,I/O,口线驱动蜂鸣器发声。约需,10mA,的驱动电流,可用,7406,或,7407,低电平驱动,如,图,9-23,所示,,也可以用一个晶体管驱动,如,图,9-24,所示,。,图,9-23,通过,74LS06,来驱动蜂鸣器的报警电路,87,87,图,9-24,使用三极管驱动的蜂鸣器报警电路,在,图,9-23,中,,,P1.7,接驱动器的输入端。当,输出高电平时,,,7406,的输出为低电平,使压电蜂鸣器两加上近,5V,的直流电压,由压电效应而,发出蜂鸣音,。,当,P1.7,端输出低电平,,,7406,的输出端高约,+5V,,压电蜂鸣器的两引线间的直流电压降至接近于,0V,,,发音停止,。,88,88,在,图,9-24,,当,P1.7,输出高电平时,,晶体管导通,压电蜂鸣器两端获得约,+5V,电压而,鸣叫,;,当,P1.7,输出低电平,,三极管截止,蜂鸣器,停止发声,。,下面是,连续蜂鸣,100ms,程序,两个接口电路都适用。,SOUND,:,SETB P1.7,;,P1.7,输出高电平,蜂鸣器开始鸣叫,MOV R4,#64H,;延时,100ms,LOOP,:,MOV R3,#0F9H,LOOP1,:,DJNZ R3, LOOP1,;延时,1ms,的循环,DJNZ R4, LOOP,CLR P1.7,;,P1.7,输出低电平,蜂鸣器停止鸣叫,RET,89,89,如果想要发出更大的声音,可采用功率大的扬声器,采用相应的功率驱动电路。,9.6.2,音乐报警接口,音乐报警电路克服了蜂鸣音,报警音调比较单调,的不足。发声电路可购买,市售的,乐曲发生器,,发出的乐曲声可用来作为某种提示信号或报警信号。设计者可根据自己对的喜好来购买。,音乐报警接口由,两部分,组成:,(1),乐曲发生器,,即集成电子音乐芯片;,(2),放大电路,,也可采用集成放大器。,90,90,音乐报警接口如图,9-25,所示,,图中采用,华尔兹乐曲的,电子音乐芯片,7920A,。当从,P1.7,输出高电平,时,输出端,Vout,便,发出乐曲信号,,经,M51182L,放大而驱动扬声器发出乐曲报警声,音量大小由,10k,电位器调整。,若,P1.7,输出低电平,,则,7920A,因,MT,输入电位变低而关闭,故,扬声器停止奏曲,。,参考程序:,START,:,SETB P1.7,;,P1.7,为高电平,发出音乐报警乐曲,RET,STOP,:,CLR P1.7,;,P1.7,为低电平,音乐报警乐曲停止,RET,91,91,92,图,9-25,音乐报警接口电路,92,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!