51單片機(jī)片外擴(kuò)展RAM
一.概述
普通51單片機(jī)可以片外擴(kuò)展ROM和RAM各64K字節(jié)的空間,在實(shí)際應(yīng)用中很少擴(kuò)展外部ROM,一般都是擴(kuò)展RAM,因?yàn)槠胀?1單片機(jī)的內(nèi)部RAM實(shí)在太少,只有128-256字節(jié),處理數(shù)據(jù)量較大時(shí)往往不夠用。而片外擴(kuò)展RAM需要占用P0口、P2口和P3.6、P3.7,消耗了18個(gè)IO口,導(dǎo)致IO口又不夠用。為了解決以上矛盾,大容量的51單片機(jī)(增強(qiáng)型51單片機(jī))應(yīng)運(yùn)而生,這種單片機(jī)一般內(nèi)置1K-16K的RAM和16K-64K的ROM,價(jià)格也相對(duì)昂貴。在某些情況下,用普通51單片機(jī)通過片外擴(kuò)展RAM要比直接使用增強(qiáng)型51單片機(jī)更能節(jié)約成本。所以,學(xué)習(xí)51單片機(jī)片外擴(kuò)展RAM是很有必要的。
二.電路設(shè)計(jì)
在WSF-51DB開發(fā)板上,擴(kuò)展了32K RAM(HM62256B),地址鎖存芯片用74HC573。如果片外擴(kuò)展RAM,P0口作為數(shù)據(jù)和地址低字節(jié)的復(fù)用端口,不需要加上拉排阻,當(dāng)然,加上拉排阻也沒有影響。需要注意的是,當(dāng)使用片外擴(kuò)展RAM時(shí),P0口和P2口最好不要接有其他資源。訪問外部擴(kuò)展的32K RAM只用到15根地址線,所以用P2.7作為地址鎖存器74HC573的使能引腳和HM62256B的片選。如下圖,為了減少交叉連線,74HC573作了向下翻轉(zhuǎn),看起來有些別扭。
三.軟件設(shè)計(jì)
/**************************************************************************
*程序名稱: 51單片機(jī)片外擴(kuò)展RAM測(cè)試
*程序功能: 把數(shù)據(jù)寫入片外RAM,再?gòu)钠釸AM讀取數(shù)據(jù),點(diǎn)亮P1口的8個(gè)LED
*開發(fā)工具:WSF-51DB開發(fā)板
* MCU型號(hào):AT89S52-24PU
*時(shí)鐘頻率:12MHZ
*程序作者: 吳師傅
*版權(quán)說明:吳師傅版權(quán)所有,轉(zhuǎn)載請(qǐng)注明來源地址和作者。
**************************************************************************/
#i nclude
#i nclude
sbit oe=P2^7;//片外RAM芯片片選和地址鎖存器74HC573使能
unsigned char code ramdata[100]= //定義100個(gè)數(shù)據(jù)
{
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
};
//延時(shí)ms函數(shù):
void Delayms(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);
}
//主函數(shù):
int main(void)
{
unsigned char i;
oe=0;//使能RAM芯片片選和地址鎖存器
for(i=0;i<100;i++)
XBYTE[300+i]=ramdata[i];
//將100個(gè)數(shù)據(jù)寫入片外RAM,起始地址為:300
while(1)
{
for(i=0;i<100;i++)
{
P1=XBYTE[300+i];//從片外RAM讀取數(shù)據(jù),點(diǎn)亮P1口的8個(gè)LED
Delayms(500);
}
}
return 0;
}
擴(kuò)展閱讀:MCS-51單片機(jī)布爾處理器存儲(chǔ)空間分配