如何通过8051单片机与片外存储器的连接来解决8051片内RAM和ROM容量不够用的问题
系列文章目录
上期文章回归:
《你真的熟悉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容量不够用的问题相关推荐
- 《迷人的8051单片机》----3.4 程序
本节书摘来自华章出版社<迷人的8051单片机>一书中的第3章,第3.4节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.4 程序 3.4.1 ...
- 《迷人的8051单片机》---- 1.2小元器件有大智慧
本节书摘来自华章出版社<迷人的8051单片机>一书中的第1章,第1.2节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 小元器件有大智慧 ...
- 《迷人的8051单片机》---3.2 语句
本节书摘来自华章出版社<迷人的8051单片机>一书中的第3章,第3.2节,作者高显生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.2 语句 C语言用语句 ...
- 基于 8051单片机的线跟随小车
线跟随小车是一种跟随线的机器,它可以是黑线或白线,线路跟随器感应到线路并越过它.在此项目中,如果感应到白线,会往白线的一侧转弯,直到没有感应到白线,再继续前进. 线跟随小车的原理 线跟随器的概念与光有 ...
- idata 单片机 新唐_【nuvoton新唐8051单片机】NuTiny-SDK-N76E003开发板
型号:NuTiny-SDK-N76E003 内核架构:8-bit 产品简介: N76E003为新唐高速1T 8051 单片机系列产品,提供18 KB Flash ROM.可配置Data Flash与高 ...
- 《迷人的8051单片机》——导读
前 言 在单片机的"江湖"中,8051单片机历来都是兵家必争之地.这是因为8051单片机有着悠久的历史和最为庞大的用户群,很多时候它已经成为8位单片机领域的一种行业标准,众多器件都 ...
- 用c语言给8051编程,8051单片机的C语言编程
8051的C语言编程和传统的C语言编程是类似的.当然其中有些数据类型是不一样的,我们知道8051支持强大的位寻址能力,因此8051的C语言编程增加了一些新的数据类型,为了不使的8051的能力被浪费.下 ...
- 8051单片机的存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器 2.片外程序存储器 3.片内数据存储器 4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外 ...
- 51单片机C语言波特率十六进制,8051单片机波特率计算公式(配套C语言例程)
8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod/32)×(定时器T1溢出率),其中smod是PCON<7>,表示是否波特率加倍,Fsoc是系统的 ...
最新文章
- linux下字符串处理工具二:awk( 二),awk脚本
- QT中如何读写ini配置文件
- 【C】浅谈strcpy
- C# 泛型编程学习总结
- 电网调度优化学习笔记:不考虑经济损耗的调度方式(算例代码求解)
- linux 双机直连设置
- php-css外边距
- Linux Shell基础 - Shell 脚本的执行方式
- keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...
- 输入符号,宽,高,打印此符号组成的矩形
- Android现学现用第十一天
- 集成学习 Bagging, Boosting, Stacking
- 常用工业相机及其SDK
- 【JAVA】while的用法。
- Keil下无法跳转查看函数定义
- finecms aip.php漏洞,FineCMS漏洞挖掘
- 用Python写了个工具,完美破解了MySQL!!(建议收藏)
- Matplotlib从入门到精通05-样式色彩秀芳华
- RabbitMQ的基础应用
- scad的oracle性质,变量选择之SCAD算法