如何實(shí)現(xiàn)單片機(jī)外部存儲(chǔ)器的擴(kuò)展
MCS 51 系列單片機(jī)具有 64KB 的程序存儲(chǔ)空間,其中 8051 、8071 片內(nèi)有 4KB 的程序存儲(chǔ)器,8031 片內(nèi)無(wú)程序存儲(chǔ)器 。當(dāng)采用 8051 、8071 型單片機(jī)而程序超過(guò) 4KB,或采用 8031 單片機(jī)時(shí),就需對(duì)程序存儲(chǔ)器進(jìn)行外部擴(kuò)展。
MCS 51 系列單片機(jī)的數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器的地址空間相互獨(dú)立,其片外數(shù)據(jù)存儲(chǔ)器的空間也是 64KB,如果片內(nèi)的數(shù)據(jù)存儲(chǔ)器(僅 128B) 不夠用時(shí),則需進(jìn)行數(shù)據(jù)存儲(chǔ)器的外部擴(kuò)展。
1. 外部程序存儲(chǔ)器的擴(kuò)展原理及時(shí)序
MCS 51 單片機(jī)擴(kuò)展外部程序存儲(chǔ)器的硬件電路如圖 7.5 所示。
圖 7.5 MCS 51 單片機(jī)程序存儲(chǔ)器的擴(kuò)展原理
MCS 51 單片機(jī)訪(fǎng)問(wèn)外部程序存儲(chǔ)器所使用的控制信號(hào)有:ALE(低 8 位地址鎖存控 制) 和 PSEN(外部程序存儲(chǔ)器“讀取”控制)。
在外部存儲(chǔ)器取指期間,P0 口和 P2 口輸 出地址碼(PCL 、PCH), 其中 P0 口信號(hào)由 ALE 選通進(jìn)入地址鎖存器后,變成高阻態(tài)等待從程序存儲(chǔ)器讀出指令碼。從圖中可以看出 ,MCS 51 的 CPU 在一個(gè)機(jī)器周期 內(nèi),ALE 上出現(xiàn)兩個(gè)正脈沖,PSEN出現(xiàn)兩個(gè)負(fù)脈沖,說(shuō)明 CPU 可以?xún)纱卧L(fǎng)問(wèn)外部程序存儲(chǔ)器,再之單片機(jī)指令系統(tǒng)中又有很多雙字節(jié)單周期指令,使得程序的執(zhí)行速度大大提高。
外部程序存儲(chǔ)器可選用 EPROM 、E2 PROM 、PAGEDEPROM 和 KEPROM 等。 2.EPROM 擴(kuò)展電路
紫外線(xiàn)擦除電可編程只讀存儲(chǔ)器 EPROM,典型產(chǎn)品有 Intel 公司的系列芯片 2716(2K ×8 位)、 2732A(4K×8 位)、 2764A(8K×8 位)、 27128A(16K×8 位)、 27256(32K×8 位) 和 27512(64K×8 位) 等,在這些芯片上均設(shè)有一個(gè)玻璃口,在紫外線(xiàn)下照射 20 分鐘 左右,存儲(chǔ)器中的各位信息均變?yōu)?1 。以后通過(guò)編程器可將程序固化到這些芯片中。
以下介紹 2716EPROM 。2716 的存儲(chǔ)容量為 2K×8 位,單一+5V 供 電,運(yùn)行時(shí)的最大功耗為 252mW,維持功耗為 132mW,讀出時(shí)間最大為 450ns 。2716 為 24 線(xiàn)雙列直 插式封裝,其引腳如圖 7.6 所示。
2716 有五種工作方式,見(jiàn)表 7.1 。
2716 與 8031 接口主要解決兩個(gè)問(wèn)題:一是硬件連接問(wèn)題,二是根據(jù)實(shí)際連線(xiàn)確定芯片地址。硬件接口見(jiàn)圖 7.7。
由圖 7.7 可確定 2716 芯片的地址范圍 。方法是 A10 ~A0 從全 0 開(kāi)始,然后從最低位開(kāi)始依次加 1,最后變?yōu)槿?1,相當(dāng)于 211=2048 個(gè)單元地址依次選通,稱(chēng)為字選。即
3.E2 PROM2864A 的擴(kuò)展
E2 PROM 電擦除電可編程只讀存儲(chǔ)器是近年來(lái)被廣泛應(yīng)用的一種新產(chǎn)品 。其優(yōu)點(diǎn)是能使 CPU 在線(xiàn)修改其中的數(shù)據(jù),并可在斷電情況下保存數(shù)據(jù),集 EPROM 和 RAM 功能于一體。
Intel2864A 是 8K×8 位 E2 PROM,單一+5V 供電,最大工作電流為 140mA,維持電流 60mA,其 24 腳的管腳及原理框圖見(jiàn)圖 7.8 。由于片內(nèi)設(shè)有編程所需的高壓脈沖產(chǎn)生電路,因此無(wú)需外加編程電源和寫(xiě)入脈沖。
圖 7.8 2864A 管腳及原理框圖
(a) 管腳; (b) 原理框圖
2864A 有 4 種工作方式,如表 7.2 所示。
(1) 維持和讀出方式:2864A 的維持和讀出方式與普通 EPROM 完全相同。
(2) 寫(xiě)入方式:2864A 提供了兩種數(shù)據(jù)寫(xiě)入操作方式,即字節(jié)寫(xiě)入和頁(yè)面寫(xiě)入。
(3) 數(shù)據(jù)查詢(xún)方式:數(shù)據(jù)查詢(xún)方式是指用軟件來(lái)檢測(cè)寫(xiě)操作中的“頁(yè)存儲(chǔ)”周期是否完成。在“頁(yè)存儲(chǔ)”期間,如進(jìn)行寫(xiě)操作,讀出的是最后寫(xiě)入的字節(jié),若芯片的轉(zhuǎn)儲(chǔ)工作未完成,則讀出數(shù)據(jù)的最高位是原來(lái)寫(xiě)入字節(jié)最高位的反碼,據(jù)此,CPU 可判斷芯片的編程是否結(jié)束。
2864A 與 8031 的接口電路如圖 7.9 所示。
圖 7.9 2864A 與 8031 的接口電路
外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展
8031 單片機(jī)內(nèi)部?jī)H有 128 個(gè)字節(jié) RAM 存儲(chǔ)器,而 CPU 對(duì) 內(nèi)部的 RAM 具有豐富的操作指令。如在實(shí)時(shí)數(shù)據(jù)采集和處理時(shí),僅靠片內(nèi)的 RAM 是遠(yuǎn)遠(yuǎn)不夠 的 ,因而必須擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器。常用的數(shù)據(jù)存儲(chǔ)器有靜態(tài) RAM 和動(dòng)態(tài) RAM 兩種,下面主要討論靜態(tài) RAM 與 MCS 51 的接口。
1. 外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展方法及時(shí)序
單片機(jī)擴(kuò)展外部 RAM 的原理圖如圖 7.10 所示,數(shù)據(jù)存儲(chǔ)器只使用 WR 、RD擴(kuò)展線(xiàn)而不用 PSEN 。因此,數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器地址可完全重疊,均為 0000H~0FFFFH ,但數(shù)據(jù)存儲(chǔ)器與 I/O 口及外圍設(shè)備是統(tǒng)一編址的,即任何擴(kuò)展的 I/O 口以及外圍設(shè)備均占 用數(shù)據(jù)存儲(chǔ)器的地址。
圖 7.10 MCS 51 數(shù)據(jù)存儲(chǔ)器的擴(kuò)展示意圖
MCS 51 單片機(jī)讀/寫(xiě)外部數(shù)據(jù)存儲(chǔ)器的時(shí)序如圖 2.9 、2.10 所示。在圖 2.10 的外部RAM 讀周期中,P2 口輸出高 8 位地址,P0 口分時(shí)傳送低 8 位地址及數(shù)據(jù)。ALE 的下降沿將低 8 位地址打入地址鎖存器后,P0 口變?yōu)檩斎敕绞?,RD有效選通外部 RAM,相應(yīng)存儲(chǔ)單元的內(nèi)容送到 P0 口上 ,由 CPU 讀入累加器 。
外部 RAM 寫(xiě)操作時(shí),ALE 下降為低電平后,WR才有效,P0 口上出現(xiàn)的數(shù)據(jù)寫(xiě)入相 應(yīng)的 RAM 單元。
2 .靜態(tài) RAM 擴(kuò)展
8031 單片機(jī)應(yīng)用系統(tǒng)中,靜態(tài) RAM 最為常用,因?yàn)檫@種存儲(chǔ)器無(wú)需考慮刷新問(wèn)題。但與動(dòng)態(tài) RAM 相比,需要消耗較大的功率,價(jià)格也較高 。下面以靜態(tài) 6264 為例,介紹靜態(tài) RAM 的擴(kuò)展。
6264 是 8K×8 位的靜態(tài)隨機(jī)存儲(chǔ)器芯片,采用 CMOS 工藝制造,單一+5V 供電,額定功耗為 200mW,典型存取 時(shí)間為 200ns ,為 28 線(xiàn)雙列直插式封裝 ,管腳見(jiàn) 圖 7.11 。 各管腳含義如下:
A0 ~A12 :13 條地址線(xiàn);
I/O0 ~I/O7 :雙向數(shù)據(jù)線(xiàn);
CE1 :片選信號(hào)線(xiàn) 1 ;
CE2 :片選信號(hào)線(xiàn) 2 ;
OE:輸出允許信號(hào);
WE:寫(xiě)信號(hào)。
6264 的工作方式有 4 種,見(jiàn)表 7.3 。
圖 7.11 6264 管腳圖