资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机地址锁存及,IO,扩展,/,端口,P0,P3(80H,,,90H,,,A0H,,,B0H),P0P3,为,4,个,8,位特殊功能寄存器,分别是,4,个并行,/,端口的锁存器。它们都有字节地址,,端口的每一位可以进行位操作,,每一条,/,线均可,独立用作输入或输出,。,用作输出时,可以,锁存,数据;用作输入时,数据可以,缓冲,。,在单片机接口扩展系统中各端口功能,无论有无片外存储器扩展,,P1,端口,均可用作,通用,I/O,端口使用。,在单片机接口扩展系统中,,P0,口用作输出,地址,/,数据总线,,此时,,P0,无法再作,I/O,口使用了。,在单片机接口扩展系统中,,P2,口只输出,高,8,位地址,。,P3,口可以用作,第二功能,使用,地址总线宽度为,16,位,可寻址范围,64,K,字节。,地址锁存器,锁存器在地址扩展中的作用就是锁存地址,地址锁存器74,373,是带,三态缓冲,输出的,8,D,锁存器,.,锁存器锁存原理,ALE,作为低8位地址锁存选通信号,当为高电平时,复用数据总线上为地址数据。,地址锁存器(,74373,),74373,内部逻辑,芯片介绍,SRAM 6264,6264,是,8K*8,的,静态,随机存储器。,A0-A12,为片内,13,位地址线,,I/O0-I/O7,为,双向三态,数据线,,/CE,为片选信号,,,/OE,为读允许信号,,/WE,为写信号。,硬件接口电路设计,#include,xdata,unsigned char *port;,xdata,unsigned char Buffer256 _at_,0 x6000,;,main(),unsigned char,tmp,=0 x55;,unsigned char j;,port=,while(1),for(j,=0;j256;j+),tmp,+;,*port+=,tmp,;,向连续存储空间写入数据的,C51,程序,简单并行输出接口的扩展,在单片机的并行接口扩展中,常采用,TTL,、,CMOS,锁存器、缓冲器构成简单的扩展接口。其中,在输出接口的扩展中经常选用具备锁存功能的芯片实现,一般有:,74273,,,74373,,,74573,、,74574,等。在本节以,74273,为例,介绍输出接口的扩展实现。,74273,引脚和功能原理,D0D7,为数据输入引脚,,Q0Q7,为数据输出引脚,,CP,为时钟脉冲输入端,,/MR,为清零端。从内部逻辑图看出,,74273,为内部集成,八路,D,触发器的锁存器,,芯片的,CP,引脚与八路,D,触发器的时钟控制端相连,完成数据锁存的控制。,简单并行输出接口的扩展,访问外设端口的软件设置,单片机系统外扩的接口芯片或外扩片外数据存储器统一编址,占用外部数据存储器,0000-FFFFH,空间,因此,片外扩展,I/O,口的硬件译码地址,看作片外数据存储单元访问。,#include,#define,变量名,XBYTE,地址常数,举例,对片外的,1000H,单元进行数据的写操作,设计方法如下,#include,#include,#define port XBYTE 0 x1000;,void,main(void,),int,temp;,While(1),temp=port;,注意:,程序中,,#define,用于定义将外部,1000H,端口命名为,port,,定义端口寄存器的长度为,8,位。通过上述定义,于是,在程序中出现的,Port,变量映射为外部寄存器地址单元,访问地址为,1000H,。程序设计中,对外部,1000H,地址的读操作就可以直接写作“,temp=port”,即可,其中,,temp,为设计的临时变量。,应用设计举例,应用,74273,扩展单片机的输出端口,设定,74273,的端口访问地址为,7FFFH,,控制在数码块上轮回显示从,0F,的,16,个字符。,C51,源程序为:,#include ,#include,#define port XBYTE 0 x7FFF,unsigned char table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/,设置数码块显示数据表,void,delay(void,),unsigned,int,i;,for(i,=0;i40000;i+);,void,main(void,),unsigned,int,i;,while(1),for(i,=0;i10;i+),port=,tablei,;/,从数码块显示字表读取数据,通过,74273,输出显示,delay();,74244,设计应用举例,应用,74273,、,74244,芯片实现简单的并行接口的扩展。电路实现的功能:按键的状态通过,74244,芯片缓冲读入,通过,74273,锁存输出,在八个,LED,发光二极管上显示。,程序设计,#include,#define port_273 XBYTE 0 xFEFF /,定义访问的外部端口变量,#define port_244 XBYTE 0 xFDFF /,定义访问的外部端口变量,void,delay(void,),unsigned,int,i;,for(i,=0;i40000;i+);,void main(),unsigned,int,tmp,;,While,(,1,),tmp,=port_244,;,/,从,74244,端口读取数据,delay();,port_273=,tmp,;,/,将读取的数据通过,74273,锁存输出,,/,通过硬件电路在发光二极管上显示,分析与讨论:如果将,74273,和,74244,的功能交换,即用,273,作输入口扩展,,244,作输出口扩展,是否可行?,答案是否定的。,由于,P0,口分时输出数据,/,地址信息,因此,作为输出端口要求具有锁存功能,当芯片选通时,锁存输出数据,当芯片选通结束,数据依然能够保持在输出端口。,在作为输入端口使用时,由于单片机的总线端口常常要对多个外设端口进行分时访问,因此,要求作为输入与总线相连的接口芯片具有缓冲功能。即当总线访问该接口芯片时,选片信号有效,该芯片的缓冲器三态门打开,数据输入总线。当该芯片不被选中时,芯片三态门处与高阻态,此时,芯片的输出被断开,对总线不起作用,总线此时可以被其他器件占用。,数据线,D0D7:,接于,P0,接口,连接,I/O,设备信号线:,PA、PB、PC,共24条端线。,A1 A0,端口选择:,00,A,口 01,B,口,10,C,口 11 控制口,/CS,:片选信号。低电平有效,/RD,/WR,:芯片读出,写入信号;,低电平有效。,RESET,:复位端。为,1,时,清除内部寄存器内容,,3,个数据口为输入方式。,可编程,并行,接口芯片,8255A,8255,A,的三种工作方式,方式,可用端口,用途,方式0,A,口,B,口,C,口,基本输入输出方式。,A,口、,B,口、,C,口都可以设定为输入或输出。作为输入口时,数据不锁存。作为输出口时,输出数据被锁存。,A,、,B,口,8,位数据口;,C,口既可作,8,位数据口,也可作为两个,4,位数据口。,方式1,A,口,B,口,选通输入输出方式。,A,、,B,、,C,三个口分为两组:,A,组包括,A,口和,C,口的高,4,位,,A,口可由编程设定为输入或输出,,C,口的高,4,位作为输入,/,输出操作的控制信号;,B,组包括,B,口和,C,口的低,4,位,,B,口可由编程设定为输入或输出,,C,口的低,4,位作为输入,/,输出操作的控制信号。,方式2,A,口,双向传输,设置,A,、,B,、,C,端口的工作模式,8255A,与单片机的接口电路设计实例,采用,8255A,实现输入和输出扩展功能的电路原理图,要求实现外接发光二极管由拨动开关相应位的状态进行控制的功能。,硬件电路分析,电路中单片机的,/RD,、,/WR,信号分别与,8255,的读写信号相连,,RESET,通过电阻接低电平。,8255,的,/CS,信号与单片机的,P2.7,引脚相连,74373,为地址锁存器,单片机的,A0,、,A1,经过所存与,8255,的,A0,、,A1,脚连接,根据硬件电路连接,则在,8255,内部的四个寄存器的访问地址分别为:,A,口:,7FFC B,口:,7FFD C,口:,7FFE D,口:,7FFF,在地址译码时,不被使用的地址线设置访问地址时默认为高电平。,编写,C51,程序如下,#include,#include,#define COM8255 XBYTE0 x7FFF /,根据硬件电路,设置命令控制寄存器,地址,#define PA8255 XBYTE0 x7FFC /,设置输入端口,A,的访问物理地址,#define PB8255 XBYTE0 x7FFD /,设置输出端口,B,的访问物理地址,unsigned char temp;,void,main(void,),COM8255=0 x83;/,初始化,8255,内部寄存器,根据题目要求,将,B,口设置为输入,,A,口设置为输出,,A,、,B,、,C,口均工作,的方式,0,下。,while(1),temp =PB8255;/,读入,B,口数据,PA8255=temp;/,从,A,口输出,
展开阅读全文