您好,欢迎访问三七文档
第九章51单片机外设扩展一、外部RAM扩展二、总线控制字符液晶1602三、外部键盘的扩展一、外部RAM扩展1、静态RAM存储芯片2、静态RAM总线3、静态RAM控制总线CE、CS、WE、OE为控制总线,它们的定义为:①CS(chipenable):片选信号2,在读/写方式时为高电平。②CE(chipenable):片选信号1,在读/写方式时为低电平。③WE(writeenable):写允许信号,低电平有效。④OE(outputenable):读出允许信号,低电平有效。4、电路设计方案(1)锁存器74373(2)地址总线和数据总线的连接(3)控制总线的连接方式(4)对外部RAM的寻址范围5、外部数据寻址指令(1)汇编语言指令对外部RAM单元只能使用间接寻址的方式,可以分别使用DPTR、R0或R1作间接寄存器,因此相应的指令有两组:①使用DPTR进行间接寻址MOVXA,@DPTRMOVX@DPTR,A因为DPTR是16位地址指针,因此该指令的寻址范围可达64K。②使用R0或R1进行间接寻址MOVXA,@R0或MOVXA,@R1MOVX@R0,A或MOVX@R1,A由于R0或R1是8位数据寄存器,因此指针的寻址范围为外部数据存储器的256单元。外部RAM数据传送指令与内部RAM数据传送比较,在指令助记符中增加了“X”,“X”是代表外部。当使用外部RAM传送指令:MOVX@DPTR,AMOVXA,@R0对外部存储器写入数据时,单片机的P3.6(WR)为0,WR同6264的WE相连,这样做间接对RAM实现了片选。当使用指令:MOVX@DPTR,AMOVX@R0,A读取外部RAM的数据时,单片机的P3.7(RD)置0,RD同6264的OE相连。同样在指令操作过程中,间接对外部设备实现了片选。(2)C语言实现对外部设备的存取方式C51对外部RAM的读取是非常简单的,Keil为我们提供了一个库文件“ABSACC.H”。在这个库文件里面有我们所需要的宏定义子程序,调用相应的子程序就可实现我们的目的。有6个宏定义子程序:CBYTE、DBYTE、XBYTE、CWORD、DWORD、XWORD这6个关键子程序又叫绝对存储区访问宏。利用它们,就可以方便的从不同程序段的特定地址获取数据,或者写入数据到特定地址之中。①XBYTE、XWORDXBYTE宏允许访问8051外部RAM区的单个字节。例如:unsignedcharrval;rval=XBYTE[0x0002];//读外部地址0x0002的单元数据XBYTE[0x002]=57;//将57传送到外部地址0x002的单元XWORD宏允许访问8051外部RAM区的单个字。例如:unsignedintral;rval=XWORD[0x0002];//读取外部地址0x0002、0x0003的数据XWORD[0x002]=0x2345;//将0x45传送到外部地址0x002,//将0x23传送到外部地部址0x003②DBYTE、DWORDDBYTE宏允许访问8051内部RAM区的单个字节。例如:unsignedcharrval;rval=XBYTE[0x02];//读内部RAM地址0x02的数据DBYTE[0x02]=57;//将57传送到内部RAM地址0x02的单元DWORD宏允许访问8051内部RAM区的单个字。例如:unsignedintral;rval=DWORD[0x02];//读取内部RAM地址0x02、0x03的数据DWORD[0x002]=0x2345;//将0x45传送到内部RAM地址0x02,将0x23传送到//内部RAM地址0x03③CBYTE、CWORDCBYTE宏允许访问8051程序(code)存储区的单个字节。例如:unsignedcharrval;rval=CBYTE[0x0002];//读程序存储器(code)地址0x0002的数据对程序存储器只能读取,不能写入。CWORD宏允许访问8051程序(code)存储区的每个字。例如:unsignedintral;rval=XWORD[0x0002];//读程序存储器(code)0x0002、0x0003的数据二、总线控制LCD方式(2)控制总线(3)总线控制LCD寻址范围(4)对LCD不同控制方式地址范围3、编程实现的方案(底层驱动)(1)宏定义地址范围(2)读状态子程序(忙碌查询)(3)写命令子程序(4)写数据子程序(5)汇编语言字符串输出子程序(基本运用)三、更多外设的扩展1、地址译码扩展2、各外设地址范围(1)外部RAM片选信号由于片选端OE为低电平触发,所以直接使用译码器输出端Y0提供片选信号即可。6264具有8k的存储容量,则对它的寻址地址范围为:0000H~1FFFH。(2)LCD1602片选信号RS、RW还是接到地址信号A0、A1,只不过片选信号ELCD的实现方式和上节所讲略有不同,LCD1602的E端为下降沿触发,常态为低电平。上节是电路由地址线A14直接供给,而译码器Y2输出为低电平片选,所以接入了一个由(与非门)组成的非门,再和单片机读写信号线WR、RD配合共同实现片选。电路中使用74373作为驱动芯片,而不用地址锁存的功能,因为地址锁存引脚LE已被接高电平。74373的输出端Q0~Q7接到单片机的数据总线,只有当OE端为低电平时,才能获取输入端D0~D7的信号,如果OE为高电平时,通道就会被阻塞。D0~D7的常态为高电平,因为它们接入了上拉电阻,如果某一按键被按下,则这一通道就会被拉低为低电平。如果此时单片机读取信号时,这个被拉低的位数,就会非常显眼。74138输出端Y2(线序为KEY_PORT1)和单片机读选通端RD共同接入或门(74LS32构成),即只有当两组信号都为低时,输出KEY_ADDR1才为低。因为对键盘的控制只有读取,所以用两组信号共同控制非常得当。键盘组1的寻址地址为:010xxxxxxxxxxxxxb。(3)键盘组1片选信号(4)键盘组2片选信号键盘组2和键盘组1的电路实现方式一模一样,只不过片选地址不同而已,键盘组2的寻址地址为:011xxxxxxxxxxxxxb。
本文标题:第9章-外设扩展
链接地址:https://www.777doc.com/doc-5730585 .html