系列文章目录

上期文章回归:
《你真的熟悉8051单片机的引脚功能及其使用吗?》


提示:读本文前可先阅读上期文章回归下51单片机的引脚,以便更好的阅读本文。

文章目录

  • 系列文章目录
  • 前言
  • 一、片内RAM是什么?
  • 二、片内ROM是什么?
  • 三、RAM或ROM容量会不会不够用?
  • 四、解决办法
    • 1.8051单片机与片外RAM或片外ROM连接
    • 2.单片机从片外 RAM 写入数据
    • 3.单片机往片外RAM写入数据
    • 4.单片机从片外RAM读取数据
    • 5.外部存储器是ROM(只读存储器)
  • 五、与片外的连接
    • 1.地址总线
    • 2.数据总线
    • 3.控制总线
  • 总结
  • 写在最后:

前言

很多人在开发时遇到单片机片内RAM和ROM容量不够用的问题:

今天就来说说如何通过单片机与片外存储器的连接来解决片内RAM和ROM容量不够用的问题


提示:在阅读时如果有什么问题大家可以评论区留言

一、片内RAM是什么?

我们所熟知的8051单片机,其内部有很多存储器:

其中就有RAM:可读写存储器,也称数据存储器

RAM的容量为256字节(这里面当然包含一些特殊功能的寄存器)


二、片内ROM是什么?

8051单片机,其内部除了有RAM,还有ROM:

8051内部的ROM:只读存储器,也被称程序存储器

ROM的容量为4KB


三、RAM或ROM容量会不会不够用?

通过了解,我们发现这个RAM和ROM的容量比较小,那到底够不够我们用呢?

这就要看我们是用它来干什么,正常情况下是够用的。

那万一不够用怎么办呢:
小编我就出现生过单片机内部的RAM或ROM容量不够用的情况;

下面就来通过外接RAM或ROM来解决下


四、解决办法

1.8051单片机与片外RAM或片外ROM连接

在8051单片机与片外RAM或片外ROM连接时:

使用P0.0~P0.7和P2.0~P2.7引脚输出16位地址,可以最大寻址216=65536=64K个存储单元,每个存储单元可以存储1个字节(1Byte),也就是8位二进制数(8bit),即1Byte=8bit

需要注意的是:8051单片机外接RAM或ROM容量最大不要超过64KB,超出范围的存储单元就无法识别和使用了。

2.单片机从片外 RAM 写入数据

当单片机需要从片外 RAM 写入数据时:

读写时会从 P0.0~P0.7 引脚输出低 8 位地址(如00000011),再通过8路锁存器送到片外RAM的A0~A7引脚,它与P2.0~P2.7引脚输出并送到片外RAM的A8~A15引脚的高8位地址一起拼成16位地址,从64K个(即216个)存储单元中选中某个存储单元。

3.单片机往片外RAM写入数据

如果单片机要往片外RAM写入数据:

写入数据会从WR引脚送出低电平到片外 RAM 的WE脚,片外 RAM 被选中的单元准备接收数据。

与此同时,单片机的ALE端送出ALE脉冲信号去锁存器的C端,将1Q~8Q端与1D~8D端隔离开,并将1Q~8Q端的地址锁存起来(保持输出不变),单片机再从P0.0~P0.7引脚输出8位数据,送到片外RAM的D0~D7引脚,存入内部选中的存储单元。

4.单片机从片外RAM读取数据

如果单片机要从片外RAM读取数据:

跟上面同样先要发出地址选中片外RAM的某个存储单元,并让RD端输出低电平去片外RAM的OE端;
再将P0.0~P0.7引脚输出低8位地址锁存起来;
然后让P0.0~P0.7引脚接收片外RAM的D0~D7引脚送来的8位数据。

5.外部存储器是ROM(只读存储器)

如果我们外部存储器是ROM(也就是只读存储器)时:

此时单片机不使用WR端和RD端,但会用到PSEN端,并将PSEN引脚与片外ROM的OE引脚连接起来,在单片机从片外ROM读数据时,会从PSEN引脚送出低电平到片外ROM的OE引脚,除此之外,单片机读片外ROM的过程与片外RAM基本相同。


五、与片外的连接

上图所示的是8051 单片机与片外存储器连接线:
具体有:

  • 有地址总线(AB)
  • 数据总线(DB)
  • 控制总线(CB)

1.地址总线

地址总线由A0~A15共16根线组成,最大可寻址216=65536=64K个存储单元:

2.数据总线

数据总线由D0~D7共8根线组成(与低8位地址总线分时使用),一次可存取8位二进制数(即一个字节)

3.控制总线

控制总线由RD、WR和ALE共3根线组成。


总结

通过上面的接线后,单片机在执行到读写片外存储器的程序时,会自动按一定的时序发送地址和控制信号,再读写数据,无需人工编程参与。


写在最后:

推荐大家看下我之前的几篇文章,对你学习51单片机实战项目有莫大的帮助。

《C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-上)》
《C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)》

如何通过8051单片机与片外存储器的连接来解决8051片内RAM和ROM容量不够用的问题相关推荐

  1. 《迷人的8051单片机》----3.4 程序

    本节书摘来自华章出版社<迷人的8051单片机>一书中的第3章,第3.4节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.4 程序 3.4.1 ...

  2. 《迷人的8051单片机》---- 1.2小元器件有大智慧

    本节书摘来自华章出版社<迷人的8051单片机>一书中的第1章,第1.2节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 小元器件有大智慧 ...

  3. 《迷人的8051单片机》---3.2 语句

    本节书摘来自华章出版社<迷人的8051单片机>一书中的第3章,第3.2节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.2 语句 C语言用语句 ...

  4. 基于 8051单片机的线跟随小车

    线跟随小车是一种跟随线的机器,它可以是黑线或白线,线路跟随器感应到线路并越过它.在此项目中,如果感应到白线,会往白线的一侧转弯,直到没有感应到白线,再继续前进. 线跟随小车的原理 线跟随器的概念与光有 ...

  5. idata 单片机 新唐_【nuvoton新唐8051单片机】NuTiny-SDK-N76E003开发板

    型号:NuTiny-SDK-N76E003 内核架构:8-bit 产品简介: N76E003为新唐高速1T 8051 单片机系列产品,提供18 KB Flash ROM.可配置Data Flash与高 ...

  6. 《迷人的8051单片机》——导读

    前 言 在单片机的"江湖"中,8051单片机历来都是兵家必争之地.这是因为8051单片机有着悠久的历史和最为庞大的用户群,很多时候它已经成为8位单片机领域的一种行业标准,众多器件都 ...

  7. 用c语言给8051编程,8051单片机的C语言编程

    8051的C语言编程和传统的C语言编程是类似的.当然其中有些数据类型是不一样的,我们知道8051支持强大的位寻址能力,因此8051的C语言编程增加了一些新的数据类型,为了不使的8051的能力被浪费.下 ...

  8. 8051单片机的存储器结构

    MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器 2.片外程序存储器 3.片内数据存储器 4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外 ...

  9. 51单片机C语言波特率十六进制,8051单片机波特率计算公式(配套C语言例程)

    8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod/32)×(定时器T1溢出率),其中smod是PCON<7>,表示是否波特率加倍,Fsoc是系统的 ...

最新文章

  1. linux下字符串处理工具二:awk( 二),awk脚本
  2. QT中如何读写ini配置文件
  3. 【C】浅谈strcpy
  4. C# 泛型编程学习总结
  5. 电网调度优化学习笔记:不考虑经济损耗的调度方式(算例代码求解)
  6. linux 双机直连设置
  7. php-css外边距
  8. Linux Shell基础 - Shell 脚本的执行方式
  9. keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...
  10. 输入符号,宽,高,打印此符号组成的矩形
  11. Android现学现用第十一天
  12. 集成学习 Bagging, Boosting, Stacking
  13. 常用工业相机及其SDK
  14. 【JAVA】while的用法。
  15. Keil下无法跳转查看函数定义
  16. finecms aip.php漏洞,FineCMS漏洞挖掘
  17. 用Python写了个工具,完美破解了MySQL!!(建议收藏)
  18. Matplotlib从入门到精通05-样式色彩秀芳华
  19. RabbitMQ的基础应用
  20. scad的oracle性质,变量选择之SCAD算法

热门文章

  1. python3 实现火车票查询 代码+知识点
  2. 四种做动态数据可视化的方法
  3. 加群android代码那个是,QQ加群组件-iPhone、Android、网页上加入QQ群
  4. java 基本数据类型的默认初始值
  5. uniapp离线打包SDK
  6. 测试排期估时多长合理?
  7. 服务器系统获取最高权限,webshell+serv-u获取系统最高权限
  8. keil 对于 ERROR: FILE DOES NOT EXIST错误的解决办法
  9. 产业分析:线上线下融合会展
  10. JAVA计算机毕业设计晨光文具店进销存系统设计与开发计算机(附源码、数据库)