擴展程序存儲器常用的芯片是EPROM(Erasable Programmable Read Only Memory)型(紫外線可擦除型), 如2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等。另外,還有+5 V電可擦除EEPROM,如2816(2K×8)、2864(8K×8)等等。
紫外線擦除電可編程只讀存儲器EPROM是國內(nèi)用得較多的程序存儲器。EPROM芯片上有一個玻璃窗口,在紫外線照射下,存儲器中的各位信息均變1,即處于擦除狀態(tài)。擦除干凈的EPROM可以通過編程器將應用程序固化到芯片中。
如果程序總量不超過4 KB,一般選用具有內(nèi)部ROM的單片機。8051內(nèi)部ROM只能由廠家將程序一次性固化,不適合小批量用戶和程序調(diào)試時使用,因此選用8751、8951的用戶較多。如果程序超過4 KB,用戶一般不會選用8751、8951,而是直接選用8031,利用外部擴展存儲器來存放程序。
實例:在8031單片機上擴展4 KB EPROM程序存儲器。
選擇芯片
本例要求選用8031單片機,內(nèi)部無ROM區(qū),無論程序長短都必須擴展程序存儲器(目前較少這樣使用,但擴展方法比較典型、實用)。
在選擇程序存儲器芯片時,首先必須滿足程序容量,其次在價格合理情況下盡量選用容量大的芯片。這樣做的話,使用的芯片少,從而接線簡單,芯片存儲容量大,程序調(diào)整余量也大。如估計程序總長3 KB左右,最好是擴展一片4 KB的EPROM 2732,而不是選用2片2716(2 KB)。在單片機應用系統(tǒng)硬件設計中應注意,盡量減少芯片使用個數(shù),使得電路結構簡單,提高可靠性,這也是8951比8031使用更加廣泛的原因之一。
硬件電路圖
8031單片機擴展一片2732程序存儲器電路如圖所示。
芯片說明
①74LS373。74LS373是帶三態(tài)緩沖輸出的8D鎖存器,由于片機的三總線結構中,數(shù)據(jù)線與地址線的低8位共用P0口,因此必須用地址鎖存器將地址信號和數(shù)據(jù)信號區(qū)分開。74LS373的鎖存控制端G直接與單片機的鎖存控制信號ALE相連,在ALE的下降沿鎖存低8位地址。
②EPROM 2732。EPROM 2732的容量為4 K×8位。4 K表示有4×1024(22×210=212)個存儲單元,8位表示每個單元存儲數(shù)據(jù)的寬度是8位。前者確定了地址線的位數(shù)是12位(A0~A11),后者確定了數(shù)據(jù)線的位數(shù)是8位(O0~O7)。目前,除了串行存儲器之外,一般情況下,我們使用的都是8位數(shù)據(jù)存儲器。2732采用單一+5 V供電,最大靜態(tài)工作電流為100 mA,維持電流為35 mA,讀出時間最大為250 ns。2732的封裝形式為DIP24,管腳如圖所示。
其中,A0~A11為地址線;O0~O7為數(shù)據(jù)線; 為片選線;OE/VPP為輸出允許/編程高壓。 除了12條地址線和8條數(shù)據(jù)線之外,CE為片選線,低電平有效。也就是說,只有當CE為低電平時,2732才被選中,否則,2732不工作。OE/VPP為雙功能管腳,當2732用作程序存儲器時,其功能是允許讀數(shù)據(jù)出來;當對EPROM編程(也稱為固化程序)時,該管腳用于高電壓輸入,不同生產(chǎn)廠家的芯片編程電壓也有所不同。當我們把它作為程序存儲器使用時,不必關心其編程電壓。
連線說明:
① 地址線。單片機擴展片外存儲器時,地址是由P0和P2口提供的。圖6.2中,2732的12條地址線(A0~A11)中,低8位A0~A7通過鎖存器74LS373與P0口連接,高4位A8~A11直接與P2口的P2.0~P2.3連接,P2口本身有鎖存功能。注意,鎖存器的鎖存使能端G必須和單片機的ALE管腳相連。
② 數(shù)據(jù)線。2732的8位數(shù)據(jù)線直接與單片機的P0口相連。因此,P0口是一個分時復用的地址/數(shù)據(jù)線。
③ 控制線。CPU執(zhí)行2732中存放的程序指令時,取指階段就是對2732進行讀操作。注意,CPU對EPROM只能進行讀操作,不能進行寫操作。CPU對2732的讀操作控制都是通過控制線實現(xiàn)的。2732控制線的連接有以下幾條:
CE :直接接地。由于系統(tǒng)中只擴展了一個程序存儲器芯片,因此,2732的片選端直接接地,表示2732一直被選中。若同時擴展多片,需通過譯碼器來完成片選工作。
OE :接8031的讀選通信號端。在訪問片外程序存儲器時,只要端出現(xiàn)負脈沖,即可從2732中讀出程序。
擴展程序存儲器地址范圍的確定
單片機擴展存儲器的關鍵是搞清楚擴展芯片的地址范圍,8031最大可以擴展64 KB(0000H~FFFFH)。決定存儲器芯片地址范圍的因素有兩個:一個是片選端的連接方法,一個是存儲器芯片的地址線與單片機地址線的連接。在確定地址范圍時,必須保證片選端為低電平。
本例中,2732的地址范圍為0000H~0FFFH:
EPROM的使用
存儲器擴展電路是單片機應用系統(tǒng)的功能擴展部分,只有當應用系統(tǒng)的軟件設計完成了,才能把程序通過特定的編程工具(一般稱為編程器或EPROM固化器)固化到2732中,然后再將2732插到用戶板的插座上(擴展程序存儲器一定要焊插座)。