MCS-51单片机 存储器的扩展 [附:锁存器的分析]

       存储器扩展分为ROM的扩展、RAM的扩展。它们的扩展能力为:①ROM可扩展至64KB;②RAM可扩展至64KB。

       单片机的扩展能力是由地址总线来决定的。

       单片机的扩展问题,就是将各扩展部件采用适当的方法“挂”在总线上,但单片机与通用微型计算机不同,由于受引脚控制,MCS-51单片机本身没有提供专用的地址线和数据线,地址线和数据线是复用的,而且是借助I/O线经过改造而成的。因此,单片机存储器的扩展过程中使用的外部总线有以下3种。

       1)地址总线(AB):P0口(A0~A7),P2口(A8~A159);地址总线是一种单向的总线。地址总线的根数决定了单片机可以访问的存储单元数量和I/O端口的数量。有n根线,则可以产生2n个地址编码,访问2n个地址单元。

       2)数据总线(DB):P0口(D0~D7);在51单片机中,数据的传递是用8根线同时进行的,也就是51单片机的数据总线的宽度是8位,这8根线就被称之为数据总线。数据总线是双向的,既可以由单片机传到外部芯片,也可以由外部芯片传入单片机。

       3)控制总线(CB):这是一组控制信号线,有一些是由单片机送出(去控制其他芯片)的,而有一些则是由其他芯片送出(由单片机接收以确认这些芯片的工作状态等)的。



1、地址锁存器的使用

       单片机用P2口作为片外存储器地址高8位输出口,用P0口作为地址低8位的输出口,并分时兼做数据传输线。由于数据总线、地址总线共用P0口,所以要分时复用。先送地址信息,由ALE使能锁存器将地址信息锁存在外设的地址端,然后送数据信息和读写使能信号,在指定的地址进行读写操作。

       用作单片机地址锁存器的芯片一般有两类:一类是8D触发器,如74LS273、74LS377等;另一类是8位触发器,如74LS373、8282等。74LS273、74LS377内部由8个边沿触发的D触发器组成,在时钟信号的正跳变完成输入信号的锁存。因此用74LS273、74LS377作为外接触发器时,应将ALE反向后再加到它们的时钟端。而74LS373和8282的内部结构和用法相似,但引脚不一致。74LS373的使能端G有效时,输出直接跟随输入变化,当使能端由高变低时,才将输入状态锁存,直到下一次使能信号变高为止。因此在选用74LS373或8282作单片机地址锁存器时,可直接将单片机的ALE加到它们的使能端。这两种芯片带有三态输出功能,但用作地址锁存时,无需三态功能,因此,它们的输出控制端OC或OE可以直接接地。

2、存储空间冲突问题

       由于MCS-51单片机在访问外部的数据存储器和程序存储器时使用了不同指令的控制信号,ROM和RAM可以同时使用0000H~FFFFH地址段而不会冲突,因此MCS-51单片机的片外的扩展能力是外部数据存储器和外部程序存储器各64K。

       访问片外RAM时使用专门的指令MOVX,这时读(RD)或写(WR)信号有效;而访问片内RAM使用MOV指令,不产生读写信号;另外,与片内RAM不同,片外RAM不能进行堆栈操作。



程序存储器的扩展

1、ROM芯片及引脚

以27C512为例对EPROM的引脚做介绍。其中:

CE:片选信号端,低电平有效;

OE:读选通(输出允许)信号输入线,低电平有效;

Vpp :编程电源输入端;

Vcc:工作电源输入端,一般为+5V;

PGM:编程脉冲输入端;9

2、扩展电路

       P2口虽然没有全部用完(还有P2.7),但是这个引脚一般不能再作为通用I/O口来使用了,可以悬空。通过锁存器74LS373进行数据和地址总线的分离,分离后的低8位地址线接到EPROM的A0~A7引脚,P2口与EPROM的高8位地址线A8~A14相连。EPROM的OE引脚接到单片机的PSEN引脚。MCS-51单片机的PSEN引脚是专门用作程序存储器扩展的,在MCS-51单片机从外部程序存储器中取指令的时候,PSEN引脚会产生由高电平变为低电平的变化,允许EPROM进行数据的输出,而在不存取EPROM中的数据时,PSEN引脚是高电平,EPROM的输出引脚全部处于“高阻”(相当于从电路中断开)的状态,不会干扰其他芯片使用总线。


数据存储器的扩展

1)地址线的连接,与程序存储器连法相同

2)数据线的连接,与程序存储器连法相同

3)控制线的连接,主要有下列控制信号:

       存储器输出信号OE和单片机读信号RD相连,即和P3.7相连

       存储器写信号WE和单片机写信号WR相连,即和P3.6相连

       ALE:其连接方法与程序存储器相同


       所谓锁存器,就是输出端的状态不会随输入端的状态变化而变化,仅在有锁存信号时输入的状态才被保存到输出,直到下一个锁存信号到来时才改变。还有些芯片具有锁存器,比如芯片74LS244,它可以通过把一个引脚置高后,输出就会保持现有的状态,直到把该引脚清0后才能继续变化。

锁存器的主要作用:

1、缓存

2、完成高速的控制器与慢速的外设的不同步问题

3、解决驱动的问题(提供的电流比51IO口输出电流大)

4、解决一个I/O口既能输出也能输入的问题(可以用锁存器幂叠加方法,即锁存器的Q端再接锁存器,实现IO口的无限拓展)

       如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用到锁存器。例如:一个I/O口要控制两个LED,对第一个LED送数据时,“打开”第一个锁存器而“锁住”第二个锁存器,使第二个LED上的数据不变。对第二个LED送数据时,“打开”第二个锁存器而“锁住”第一个锁存器,使第一个LED上的数据不变。如果单片机的一个口要做三种用途,则可用三个锁存器,操作过程相似。就这一种用法而言,可以把锁存器视为单片机的I/O口的扩展器。

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值