51单片机片外扩展RAM

发布者:MysticDreamer最新更新时间:2013-03-04 来源: 21IC 关键字:51单片机  片外扩展  RAM 手机看文章 扫描二维码
随时随地手机看文章

一.概述

普通51单片机可以片外扩展ROM和RAM各64K字节的空间,在实际应用中很少扩展外部ROM,一般都是扩展RAM,因为普通51单片机的内部RAM实在太少,只有128-256字节,处理数据量较大时往往不够用。而片外扩展RAM需要占用P0口、P2口和P3.6、P3.7,消耗了18个IO口,导致IO口又不够用。为了解决以上矛盾,大容量的51单片机(增强型51单片机)应运而生,这种单片机一般内置1K-16K的RAM和16K-64K的ROM,价格也相对昂贵。在某些情况下,用普通51单片机通过片外扩展RAM要比直接使用增强型51单片机更能节约成本。所以,学习51单片机片外扩展RAM是很有必要的。

二.电路设计

在WSF-51DB开发板上,扩展了32K RAM(HM62256B),地址锁存芯片用74HC573。如果片外扩展RAM,P0口作为数据和地址低字节的复用端口,不需要加上拉排阻,当然,加上拉排阻也没有影响。需要注意的是,当使用片外扩展RAM时,P0口和P2口最好不要接有其他资源。访问外部扩展的32K RAM只用到15根地址线,所以用P2.7作为地址锁存器74HC573的使能引脚和HM62256B的片选。如下图,为了减少交叉连线,74HC573作了向下翻转,看起来有些别扭。

三.软件设计

/***************************************************

*程序名称: 51单片机片外扩展RAM测试

*程序功能: 把数据写入片外RAM,再从片外RAM读取数据,点亮P1口的8个LED

*开发工具:WSF-51DB开发板

* MCU型号:AT89S52-24PU

*时钟频率:12MHZ

*程序作者: 吴师傅

*版权说明:吴师傅版权所有,转载请注明来源地址和作者。

**************************************************/

#i nclude

#i nclude //包含片外存储空间绝对地址访问函数:XBYTE[]

sbit oe=P2^7;//片外RAM芯片片选和地址锁存器74HC573使能

unsigned char code ramdata[100]= //定义100个数据[page]

{

0,1,2,3,4,5,6,7,8,9,

10,11,12,13,14,15,16,17,18,19,

20,21,22,23,24,25,26,27,28,29,

30,31,32,33,34,35,36,37,38,39,

40,41,42,43,44,45,46,47,48,49,

50,51,52,53,54,55,56,57,58,59,

60,61,62,63,64,65,66,67,68,69,

70,71,72,73,74,75,76,77,78,79,

80,81,82,83,84,85,86,87,88,89,

90,91,92,93,94,95,96,97,98,99

};

//延时ms函数:

void Delayms(unsigned int t)

{

unsigned int i,j;

for(i=t;i>0;i--)

for(j=120;j>0;j--);

}

//主函数:

int main(void)

{

unsigned char i;

oe=0;//使能RAM芯片片选和地址锁存器

for(i=0;i<100;i++)

XBYTE[300+i]=ramdata[i];

//将100个数据写入片外RAM,起始地址为:300

while(1)

{

for(i=0;i<100;i++)

{

P1=XBYTE[300+i];//从片外RAM读取数据,点亮P1口的8个LED

Delayms(500);

}

}

return 0;

}

关键字:51单片机  片外扩展  RAM 引用地址:51单片机片外扩展RAM

上一篇:51单片机Keil C 延时程序
下一篇:51单片机总线时序

推荐阅读最新更新时间:2024-03-16 13:19

51单片机+315M无线射频模块发射程序
用的就是那种最普通的 最便宜的 大约几块钱 的315兆的无线模块接受发射,不带解码的,433m的程序也是一样的不用修改 压缩包中的内容: 上位机以及完整程序在文件夹中,大家可自己下载 地址是: http://www.51hei.com/bbs/dpj-19033-1.html 下面是发射端的源代码: #include AT89X52.H #include string.h sbit LED1 = P1^1; sbit LED2 = P1^2; sbit W_IN = P2^2; //电路是用11.0592MHz晶振 sbit W_OUT = P2^0; sbit DQ =P2^1;
[单片机]
<font color='red'>51单片机</font>+315M无线射频模块发射程序
51单片机晶振与波特率的关系
在串行通信中,MCS 51串口可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。 波特率是指串行端口每秒内可以传输的波特位数。这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输,那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600 10=960字节。 一、方式0和方式2的波特率 方式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。 方式2的波特率是固定在f
[单片机]
<font color='red'>51单片机</font>晶振与波特率的关系
51单片机,18B20,1602温度计+串口通信
制作出来的实物图如下: 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 上位机: 安装程序解压到同一目录下。再运行setup安装。。。。 温度计.exe 编写环境Win10 x64. VS2010 x86 C++ MFC 测试环境Win10 x64. 在32位系统上,能不能正常使用还不清楚。 所以公布了源代码文件,如果在32位系统上,不能正常使用。 请使用源代码文件,在32位系统上重新生成一下应用程序。。。 单片机源程序如下: #include reg52.h #include math.h bit flag1s = 0, _up = 0;
[单片机]
<font color='red'>51单片机</font>,18B20,1602温度计+串口通信
韩国内存厂供货暂不受疫情影响!DRAM、闪存价格平稳
近日,随着感染人群不断增多,韩国政府已将新冠肺炎疫情预警上调至最高级别“严重”,作为全球半导体两大巨头的三星电子和SK海力士自然也被拉进了市场舆论的漩涡。所以全球内存芯片价格能将大涨吗? 日前,三星电子、SK海力士相继出现员工感染新冠肺炎病例,不免引起市场对内存现货报价的揣测。“一人感染、八百人被隔离”不仅关系着工厂生产进度以及产品出货,若情况严重,势必将对运营造成严重打击。 据集邦科技统计,三星和SK海力士去年第4季共囊括全球45.1%的储存型闪存(NAND Flash)市场,以及72.7%的DRAM市场。尽管疫情加剧,但集邦科技指出,近期韩国内存厂供货维持正常,上周至目前价格平稳,DRAM及NAND Flash今
[半导体设计/制造]
韩国<font color='red'>内存</font>厂供货暂不受疫情影响!DRAM、闪存价格平稳
基于SJA1000的CAN总线和AT89C51单片机实现运动控制系统的设计
1、引言 运动控制系统是以机械运动的驱动设备—电动机为控制对象, 以控制器为核心, 以电力电子、功率变换装置为执行机构, 在自动控制理论指导下组成的电气传动控制系统。在电气时代, 电动机一直在现代化的生产和生活中起着十分重要的作用。在近年来, 由于半导体制造设备等相关的电子制造设备市场大幅成长, 而使得机器设备上的运动控制系统出现了以下几点技术需求: ( 1) 多轴运动控制。机器设备因自动化程度提高而使得单一机器上所需要的轴数增多, 一台设备上十几轴是常见的事情。在轴数变多后, 如何协调各轴动作就是一个重要的课题。 ( 2) 体积要小。由于厂房空间的限制, 机器的体积要求越小越好, 机器内控制器的体积也就被要求愈来愈小, 相对
[单片机]
基于SJA1000的CAN总线和AT89C<font color='red'>51单片机</font>实现运动控制系统的设计
STC51从入门到精通(汇编)----第四讲:80C51单片机的指令系统(二)寻址方式
4.2.1 指令系统中使用的常用符号: Rn: 当前寄存器工作区中的寄存器, 其中, n=0 -- 7; direct: 内部数据存储器地址, 可指定一个内部RAM单元(0-- 127)或一个专用寄存器(128-- 255); @Ri: 通过R1或R0间接寻址, 指定数据存储器RAM中的一个单元(0-- 255); #data: 在指令中指明8位常数; #data16: 在指令中指明16位常数; addr11: 11位目的地址, 用在ACALL或AJMP指令中,表示调用或转移地址, 寻址范围为2KB; addr16: 16位目的地址, 用在LCALL或LJ MP指令中, 表示调用或转换地址,
[单片机]
STC51从入门到精通(汇编)----第四讲:80C<font color='red'>51单片机</font>的指令系统(二)寻址方式
51单片机银行自动取款机模拟仿真
卡1卡2卡3键 表示插入的卡号 卡1密码是123456 余额20500 卡2密码654321余额2600 卡3密码111111 余额3700 准备钞票键表示系统以为用户准备好钞票取走钞票键表示用户取走钞票 有自动存储功能他已经存到iic中了 你没次打开的时候要初始化iic所以看不到 运行一下在再把始化的屏蔽掉在运行就行了 查询 取款 改密 退卡 都是旁边对应的键
[单片机]
<font color='red'>51单片机</font>银行自动取款机模拟仿真
如何正确的使用STM32F4中的CCM内存
我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢? 首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x10000000,这样,编译器就会优先分配CCM内存。 我们来看看结果,在MAP文件中,表明确实使用了这段内存,但是因为我们使用的内存较少, 还没有用到CCM。 这种自动分配的方式有什么问题呢?这段内存是内核专有的,除了内核任何其它总线都不能访问,这就意味着,一旦编译器将数据分配到CCM中,而同时使用了DMA访问,显然会出问题
[单片机]
如何正确的使用STM32F4中的CCM<font color='red'>内存</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved