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