【哈爾濱工業大學】《單片機原理》(建議收藏) P19 - 19. 8.1-AT89S51單片機外部存儲器的擴展(1)

长安书院_
145粉絲
2026年7月27日
AI 生成·可能包含錯誤
第八章 第八章大家看一眼
就是擴展外部存儲器
單品級片內的存儲器資源是有限的
Flash或者是RAM
RAM就128個單元
Flash是4K
如果在片內存儲器資源不夠的情況下
我們需要外擴
當然了
這裏主要是擴展外部RAM
因爲Flash
你可以根據不同的單品級型號
選擇不同容量的Flash
這是我們這一章要講的內容
這一章呢
我們介紹擴展程序存儲器
有時候需要多片
一片不能滿足需要
那怎麼辦
要擴展多片
多片的話就有一個問題
外部的64K程序存儲器空間
外部的64K數據存儲器空間
如何分配給各個芯片
實驗就是外部存儲器空間的地址分配
它的兩種方法
一種我們介紹線選法
一種是易碼法
最後呢
我們要給出一個實際系統
單片機怎麼外擴數據存儲器
如果需要外擴程序存儲器
應當怎麼去擴展
好
擴展的話呢
我們先看一下系統的擴展結構
8051單片機採用的是傳統的
微計算機結構
就三種線結構
那麼採用的三種線結構
使擴展非常容易實現
大家看
要擴展的話
這擴展結構
這是一個51單片機
這是三種線
地址總線
數據總線
控制總線
擴什麼呢
有可能擴數據存儲器
根據需要
有可能擴程序存儲器
這個是IO接口芯片
外部要接IO設備
所以呢
大家注意這擴展結構就這樣
三種線結構
大家呢
外擴的芯片
無論是存儲器還是IO
都往這三種線上掛
如果掛的是程序存儲器
數據存儲器
這個叫存儲器擴展
如果掛的是IO
那麼就IO擴展
這裏面大家注意
我們所說的51單片機的擴展
包括兩方面內容
一方面是存儲器擴展
一方面是IO擴展
所以一說擴展
就指這兩類的擴展
這個結構
大家一定要清楚
我們大家學過微機原理
瞭解了三種線結構
那我們單片機呢
實際上採用的
是和微計算機一樣的
三種線結構
這裏大家要注意一個問題
你單片機和外部IO設備相連
有時候它沒有那麼多IO接口
得需要進行擴展
擴展什麼呢
擴的都是IO接口芯片
這個結構
大家一定要記住
那麼大家注意一個問題
擴展包括存儲器擴展
IO擴展
那麼存儲器擴展又包括
存儲器擴展
又包括程序存儲器擴展
數據存儲器擴展
另外大家一定要注意
51單片機
外部採用的是HAF結構
就是外部的程序存儲器空間
和數據存儲器空間
它們是分開的
是兩個並行的
獨立的外部存儲器空間
那麼系統擴展
剛纔我們已經看到那結構圖
就是存儲器芯片和IO擴展
IO接口芯片都往總線上掛
那麼往總線上掛
我們面臨的第一個問題叫
怎麼來構造一個系統總線
好
那麼大家看一看
怎麼來構造系統總線
那麼系統總線三種
我們大家都知道
地質總線
單片機要對片外的存儲單元
和IO集成器進行巡止的話
要先發地址
然後數據總線和存儲器IO
要進行數據交換
通過數據總線進行的
控制總線
那麼是單片機發出來的信號
你比如控制存儲器讀
存儲器寫
控制IO讀
控制IO寫
所以大家一定要注意
三種線
是我們構造擴展系統的
一個最基本的出發點
那麼下面問題
我們怎麼來構造三種線
第一個問題一定要注意
單片機P0口是分時服用了
它既可以作爲低把位地址總線
又可以作爲八位數據總線
先發低把位地址
那同學就會問這麼一個問題
他爲什麼乾脆就作爲一個低把位地址
再加一個數據總線得了唄
16根線
根本原因就是單片機體積小
引腳少
受到引腳的限制
所以像51單片機的P0口
它分時服用
這是爲了減少限
再一個呢
地址總線的高把位誰來擔當
這個由P2口作爲高把位的地址總線
這樣P0口發出的低把位地址總線
加P2口發出的高把位地址總線
在一起構成了系統的16位的
對外部程序存儲器
數據存儲器
外部IO尋址的地址總線
這條大家要清楚
數據總線由誰來擔當呢
就是P0口分時服用
那麼下面大家看這個圖
大家一定這個圖呢
我們就可以看出8051單片機的系統擴展結構
它的三種線結構
注意看這個地方啊
P0口先發低把位地址
發低把位地址的時候呢
ALE信號有效
把這低把位地址鎖到這裏面了
然後P0口又作爲數據總線
數據總線口
P2口就作爲高把位地址口
那麼地址鎖存器的輸出
低把位地址鎖到這裏面了
地址鎖存器的輸出
A0到A7就是低把位地址總線
A8到A15呢
就是高把位地址總線
我們這一張介紹當中經常寫
A10到A7
A8到A15寫的A地址總線
實際上指的是P0口和P2口
P0口發出的低把位地址
是地址鎖存器的輸出
所以低把位地址總線呢
就是P0口後面的地址鎖存器的輸出
好
數據總線呢
由P0口來擔當
分時服用
PSEN呢
是對外部程序存儲器的獨控的信號
因爲程序存儲器呢
只讀不寫
READ和WRF呢
是外部數據存儲器
或者是IO的讀寫控制信號
大家把這幾個控制信號的作用弄明白
好
看完這個圖
你就明白了
單片機怎麼來構造一個三種線結構呢
大家注意就把P0口的輸出
加一個地址鎖存器就可以了
然後呢
P0口先發低把位地址
然後再做數據口
然後控制總線的話呢
主要用這三個
這個圖非常非常重要
下面看一下控制信號線
剛纔已經說了
PSEN作爲外部程序存儲器的獨選東西
獨控的信號
READ和WR是外部數據存儲器
或者是IO的讀寫控制信號
這裏我要跟大家說一下
外部的RAM空間裏面還包含了IO
所謂IO輸入輸出寄存器
主要指它裏面的寄存器
你把這些寄存器IO寄存器
也當做一個一個的RAM單元
所以
8051單片機外部的擴展空間
數據空間
數據RAM空間
IO和RAM是統一編織的
這個大家注意
ALE這個大家都知道
作爲批評口分時服用的低把位地址鎖存控制信號
EA大家對於這個控制引腳呢
是片內片外
程序存儲器選擇控制信號
如果把這個引腳接地的話呢
片內的FLASH
4K FLASH是不起作用的
好
那麼大家看一看
這個系統總線它的P0口
P2口基本都被系統佔用了
那麼實際上就剩下
P1口和P3口的部分口線
因爲這些線
大家注意是控制線
你像RAID
WR
這都是P3口的線
那麼真正給用戶用的
只剩下P1口和P3口的部分口線
那麼這時候數字IO
口線不夠用怎麼辦
就得擴
擴的話呢
是我們下一章要講的內容
好
那麼下面問題呢
就是你外部單頻級外部有64K的
程序存儲器空間
64K的數據存儲器空間
由於是HUB結構
他們是分開的
那有時候你要擴的芯片
要擴多片
這裏就一個問題
每一個芯片
它裏面有若干的寄存器和RAM單元
那麼他們的地址是多少
這裏就涉及到外部的64K
兩個64K地址空間的分配
還有你外部的地址鎖存器
怎麼來選
好
首先我們先討論這個兩個外部64K
存儲器空間的地址分配
好
下面我們就看
存儲器地址空間分配呢
大家注意
你要給這個RAM芯片和IO芯片分配地址的話
一個單元只能保證一個地址
否則容易發生數據衝突
我想這個大家都清楚
那麼怎麼來進行這兩個64K空間分配
下面我們就看
大家先想一想
我們在微劇園裏也講過
我選擇一個對一個RAM芯片進行讀寫
首先先選中這個芯片
然後再選中這個芯片裏的一個單元
所以大家注意
單片機對外部存儲器芯片進行讀寫
也必須進行兩種選擇
第一種是選中這個芯片
只有選中這個芯片以後
纔有可能對它進行讀寫
沒有被選中芯片就不能進行讀寫
第二呢
要注意怎麼來進行片
就是片選完了以後
你再發出地址選中其中的某一個單元進行讀寫
不要同時選中兩個單元進行讀寫
這樣容易發生數據衝突
那麼爲了實現這個片選
我們存儲器芯片IO芯片呢
一般都有片選引腳
同時呢
這些RAM單元或存儲器
其他存儲器單元都有
這些存儲器芯片都有多條地址線引腳
然後單片機地址線加在上面進行單元選擇
這裏有一條大家注意啊
不管是片選還是單元選擇
都是單片機呢
一次性通過地址線發出的地址信號來完成啊
這個大家一定要清楚
那麼地址線裏面
我們一般先籠統的把它分爲低位地址線
高位地址線
這是一個相對的概念啊
只用於進行單元選擇高位地址線來進行芯片選擇啊
這個就是一種相對的分法啊
那麼大家在下面我們的講解中
要注意怎麼進行片選
怎麼進行單元選擇啊
我對一個比如RAM芯片的單元進行讀寫
首先我發出的地址
應當選中這些芯片
然後呢
發出的地址裏面的低位那些地址啊
要選中這個芯片的某些單元啊
好
那麼存儲器地址空間分配方法一般就兩種啊
一種是線選法
也叫線性選擇法
簡稱線選法
還有一種呢
地址密碼法
簡稱密碼法
或者叫密碼器法
下面我們首先介紹一下線選法
線選法呢
線選法是直接利用系統的某一高位地址線呢
來直接加到芯片的片選端就可以了啊
那麼線選法它優點什麼呢
不需要額外的地址密碼器硬件啊
高位地址線網
你要選對讀寫的這個芯片呢
直接加到片選端就可以了
它體積小成本低啊
缺點是什麼呢
如果你擴的芯片比較多
這個就問就有很大問題了啊
另外呢
你能擴展的就剛纔說的問題
你擴展的芯片數目是有限的啊
因爲高位地址線就那麼幾條
再一個呢
線選法它的擴展的各個芯片的地址空間
它是不聯繫的
以後我們通過一個例子就可以看到
另外呢
你擴展的這個存儲器裏面單元
它也是不爲一的啊
這時候有時候要小心
你發地址的時候不能亂髮
這兩個兩個地址
有些地址呢
可能是相同的
這個是線選法的一個缺點
但是呢
最大優點是什麼呢
如果你芯片數目不多
你用線選法
他不用加額外的硬件啊
好下面我們再看一碼法
一碼法呢
主要採用一碼器
對
AT89S51單片機發出的高位地址碼進行一碼
然後一碼器的輸出
作爲各個存儲器芯片的偏遠信號
這樣的話呢
就可以充分有效的利用這個存儲器空間
這種方案呢
經常用在多片的存儲器擴展上
那麼常用的一碼器芯片要求大家掌握
像74LS138
這是38一碼器
三個輸入八個輸出
139是雙24一碼器
24一碼器就是兩個輸入啊
然後四個輸出
他是裏面有兩個24一碼器
還有呢
74LS154就是4到16一碼器
這裏最經典的是138一碼器
這個大家可能在危機原理也講過啊
也講過
下面我們看一下
怎麼來利用一碼器進行地質空間分配
首先我們先介紹一個概念
什麼叫全一碼
如果高危地質線全都參加一碼的話
這叫全一碼
如果高危地質線僅有部分的地質線
高危地質線參加一碼
這叫部分一碼
對於部分一碼來說呢
有的地質空間實際上就重疊了啊
一會我們看看
首先我們先看一下常用一碼器芯片
74LS138
138那是38一碼器
什麼叫38一碼器
三個輸入端
01不同組合
有八個輸出端
八個輸出端呢
任意時刻只有一個是有效輸出
有效輸出是低電瓶
其他的爲高電瓶啊
好他的真值表大家看一眼
這是他的引腳啊
真值表在這呢
大家一定要注意啊
這兩是控制端啊
這個是也是一個控制端
CBA是138一碼器的輸入端
這是他的八個輸出端
Y0 Y1 Y2 Y3一直到Y7
大家注意CBA上面加的編碼
八種可能
二的三次方八種可能
對於任何一個固定編碼
其輸出總有一個爲低電瓶
那麼大家自己找一下規律啊
比如說000的話是Y0輸出爲0
其他都爲高電瓶
001的話呢
是Y1爲低電瓶
其他的然後輸出這個引腳的低電瓶呢
直接加到芯片的片選端上
加到芯片的片選端上
好那麼八種不同的輸出
八種不同編碼對應八種輸出情況
他的輸出只能有一個爲低電瓶
其他都爲高電瓶
另外大家再看這個啊
這是他的控制端
大家看這幾個門控端呢
他爲1他爲0他爲0
那這一碼器就是可以輸出
否則就不能輸出啊
否則就不能輸出
好這就是一碼器輸出
大家看一看
這個引腳
看一下引腳啊
引腳的話呢
這是Y0一直到Y7全爲
就是這是輸出啊
任意時刻輸入端的是CBA三個輸入
他們三個如果有一個爲就是高位是誰呢
是C他們三個上面的不同編碼
就決定了八個輸出裏面有誰爲低電瓶
而這其中的一個輸出
只能有一個輸出
爲低電瓶
其他全爲高電瓶
然後這個輸出低電瓶加到芯片的片顯端上啊
加到芯片片顯端
好引腳和針織表明白以後呢
下面我們就看
再看另一個一碼器啊
139139是雙24一碼器
我們只瞭解其中的一組就可以了
雙二十一碼器
大家看這個啊
2V0 2V1 2V2 2V3
這是第二組的輸出
這個是第一組的輸出
然後呢
這是第一組的輸入
這個是第二組的輸入
那麼兩根輸入二的二次方就四種組合
那麼他的四個輸出呢
只能有一個其中爲低
其他的爲高啊
這裏大家注意
B爲高位
A爲低位啊
剛纔我們講的138一碼器呢
是CBA他的輸入呢
C是高位
A是最低位啊
好
這是139的引腳
雙二十一碼器啊
那麼再看一下針織表
00的話
B是高位
00Y0爲零
01Y1爲零
10Y2爲零
其他的爲高
Y3呢
呃
就是011的話呢
是Y3爲零
其他的
那麼這個輸出就直接加到芯片的片捲端上啊
片捲端上
那麼這個輸入加到什麼地方呢
加到
呃
8051單片機輸出就高位地直線輸出啊
51單片機的高位地直線輸出啊
就可以了
哎
那麼這是門控端
門控端
大家一看到腦瓜頂橫槓表示什麼
表示它是低電瓶有效
這時候一碼才能起作用
否則它會高電瓶的話呢
一碼器就不起作用
好
這是139的針織表
啊
下面我們以最經典的138一碼器爲例
看怎麼來進行地址分配
比如說我現在要擴八片8K的RAM6264
哎
那麼怎麼通過138把這個64K空間分給這八個芯片
啊
那麼具體連接的時候呢
大家注意這三個門控端
它是接到高電瓶
這倆呢
接到低電瓶的門控端
實際上首先讓一碼器呢暢通的
然後大家注意啊
高位地直線就是A15
A14
A13就是P2.7
2.6
2.5分別連到138的CBA端
大家注意這個連到一碼器輸入端
一碼器輸出端呢
就接到
接到
你所選擇的那個芯片的片選端上來進行芯片選擇
所以一碼器的八個輸出
Y7飛到Y0飛呢
分別接到八片6264的片選端啊
從而可以實現八選一的片選
低
呃
低13位地址
低13位地址呢
用來進行直接加到芯片的地址端來進行各個芯片的單元選擇
大家知道6264芯片是8K的
8K的
呃
大家注意
我用13根地址線等於多少
13根地址線有這麼多組合
這些正好等於8K
2的13次方
2的十次方呢
好
那麼16位地址線高三位接到一碼器輸入
作爲片選
他一碼器輸出選中這八個芯片當中的一片
13根地址線連到各個芯片的單元選擇上
A0到
A0到A12啊
就可以對這一個芯片內的八個
就是8K的各個單元進行選擇啊
好
這樣的話
大家想想
你用一碼器輸出
加到八個芯片的
電源端上
實際上就等於把64K存儲器空間分成八個8K的
八個8K的
好
大家看一下這個電路
那麼
這是五搖蛋片級
這是高三位地址
就是最高的
16位裏面最高的
分別加到一碼器的輸入端
注意C是高位
然後這三門空端呢
就按這符號標示呢
你就接上相應的正確的電瓶就可以
關鍵在這兒
大家注意啊
八個輸出端
任意時刻
對一個固定的輸入編碼來說
只能有一個爲低電瓶
這爲低電瓶就加
這個爲低電瓶的引腳就加到你所選的那個芯片的片選端
那麼大家注意
如果Y0爲低
那你這個輸入
A15
A14
A13就是三個腳
就爲000
他選的地址是多少呢
是000-1FF
這個是多少
8K
如果這個是001的話
那麼選的地址呢
2000H-3FFH
對吧
他實際上是什麼意思呢
大家看這個地址確定
我舉一個例子就可以了啊
我們就可以看到這個地址是怎麼來確定的
大家看一看啊
當高就是我們以Y1這個片選端輸出爲例
加到這芯片的
片選端這個地址應當多少
就說他的輸出加到一個8K的6264上
那這6264的地址應當是多少呢
選中這個芯片高三位必須多少
001
對吧
低13位是多少呢
正好這個芯片的8K地址
從全零
全零到全優
一共是多少位
13位
00
0
00
0
這個是1111
然後這個片選端這塊是001
對吧
那這是多少
那麼大家看他的地址
對於這個而言
這個芯片而言
這個加到那個芯片片選端
那麼這個芯片地址呢
是多少
2000H-3FF
同理
這個輸出端連到各個芯片對應的引腳
如果按這種連法的話
那麼64K空間
從0000到FFFF
一共分成八個8K的空間
那麼各個空間的地址是多少呢
我們通過鋼牌那種方法就可以推出各個芯片的地址空間
所以通過這種一碼器
尤其138
38一碼器
這麼八個輸出分別加到八個8K的一碼器輸出端
就決定了這芯片的地址範圍
注意高位地址全都參加一碼
沒有空的線
高位低位是相對的啊
高閃位
全都參加一碼
低閃位幹嘛
加到各個芯片的單元選擇的那個地址線
那這樣的話呢
我們就可以唯一的每次發出一個地址
可以唯一的選定一個芯片和一個單元
這樣就不會發生數據衝突啊
好
那麼這個是全地址一碼
那這個地址都是具有唯一性了
那麼下面給大家提一個問題
我剛纔是通過138把64K空間化成八個8K
這個空間
那我現在讓你用138把64K空間最高位
64K空間化分成4K一塊怎麼來化
那麼大家注意
首先每一個芯片4K
他需要12根地址線來選擇其中一個單元
那麼需要12條地址線
我現在用138一碼器
138呢
只有三個數字
那麼又用了三條地址線
高位的地址還剩下一根啊
還剩下一根
那麼剩下這一根應當用最高位讓他旋空啊
一會我們看看這樣的話就有一個什麼問題呢
最高位不參加一碼
實際上64K空間分成前32K後32K
前32K呢
再通過138一碼器化分的話呢
138一碼器輸出是八個輸出
加到八個芯片上
每一個芯片就是4K
4K好
那麼大家看一看
我們這個電路
看一看啊
這個電路
這個就是510平均
大家注意啊
這個最高位在這兒
P2口嘛
最高位加個飛門
飛門加到這個地方
那麼大家注意要想讓這個控制端有效的話呢
P2.7應當發的是什麼碼
0
發1不行啊
發1的話這塊輸出什麼
0
加到門控端就把它封死了
封死了
好
那麼這三個角呢
P2.6 2.5 2.4
次高位這三個地址呢
發到CBA這三個端上
做一碼器輸入
這些門控端該接什麼是什麼
那麼大家注意看
Y0一直到Y7
八個輸出端
加到八片的4K的RAM上
它對應的地址是多少呢
大家注意
按照我剛纔的分析方法
它的地址範圍就是對CBA等於000
CBA就這三位等於000的話呢
它的地址範圍是這麼大
是000到0FS
但是最高位接的是什麼呢
是0
你看它要爲1的話
這位發出來的地址必須是0
那麼所以這個加到一個4K的芯片上
它地址範圍就是4K範圍
同理其他的按照剛纔那個辦法推理
也是這種方法
也是這個道理
好了
那同學說你這個實際上
每一片4K4832K
你的外部空間不64K嗎
大家注意64K
由於這個引腳實際上沒有參加一毛
那麼這裏選實際上讓你選的是前32K
還是後32K
也就是說16位地址
那最高位是0還是1
我們這個例子裏面這裏
這個是0
只有它發出0的時候
它才爲1
才能這位爲1
所以呢
這些地址
這一片地址32K是前32K空間
大家想一想
我如果把這飛門去掉
那麼這32K的地址
這個地址範圍是不是就得變了
那就是後32K空間
所以呢
這裏最高位沒有參加一毛
所謂參加一毛是作爲一毛期的輸入
所以它不是全地址
而是部分地址
不是全一毛
這有什麼問題呢
你這位是0和1的話呢
可能同時就是它地址是不爲1
這個大家想
所以這個例子
大家也要清楚
這個是如何採用1381碼器
把一個32K空間化成8個4K接法
這些輸入端都連到各個芯片片影端
下面介紹一個另一個問題
就是我們批評口分時服用
先發第八位地址
然後做數據口
先發的第八位地址放到什麼地方
在地址儲存器裏
外部地址儲存器裏
儲存起來
那麼我們下面介紹一下這個儲存器
373
573
這是最常用的
這是最常見的地址儲存器
首先看373
373
它是一個帶三胎門的8D儲存器
它內部結構呢
大家看一眼
內部結構是這樣
這是內部結構
這是D儲存器
八位後邊跟着八個三胎門
這個八個三胎門的輸出端呢
有OE飛端
當這個引腳加D電瓶的話呢
這八個三胎門是暢通的
當你P領口發出的第八位地址
就鎖到這裏面
鎖到這裏面鎖存控信號誰呢
是G端
那麼實際上
單片機的ALE信號加到G端上面
當ALE信號有效的時候呢
實際上是P領口發出第八位地址
這第八位地址就鎖到這裏面
如果第八位地址想讓它輸出有效
把這個引腳加個D電瓶就行
D電瓶
這是它內部結構
它的外部引腳
大家看一眼
外部引腳在這兒
外部引腳
那Q端
D端
大家注意
Q端和D端各有八個端
大家把它
D端是這八個輸出端
Q端呢是這八個輸出端
Q0到Qp
好
那麼大家一定要注意
這個3G3這引腳是什麼
OE端
就剛纔那三片紋控制端
這個G端
這個D端
這個是電源端
這個G端呢
就是鎖存控制信號
那這3G3呢
是最常用的
最常用
但是大家注意看這個結構
看我們畫板的時候
實際上
這八個引腳和這八個引腳
應當最好在
像這圖畫的這麼理想
在兩側
這樣畫起板子
就不會有那麼多線交叉
但實際上
這3G3做的話呢
我們看一下它的引腳圖
引腳圖
它們是交錯的
不是像剛纔我們的理想的
要求的那種排法一樣
你看交錯的
Q7
D7
Q6
D6
這一交叉
大家想想剛纔那板怎麼畫
這個在我們實際
連接電路當中呢
P點口先接到八個D端
然後輸出Q8輸出端
大家想想這個
我說的這兩排引線
在實際引腳排列是交叉的
所以畫的板子非常費勁
那怎麼辦
一般採用
有人就採用573
573在這呢
大家看這引腳圖
573呢
你看它做的這個引腳
Q0一直到Q7
它們都排在一起了
D0到D7也是排在一起了
排在一起了
這種拔地鎖存器的話呢
它倆插在什麼地方呢
大家仔細查一下手冊
一個是電瓶處罰
一個是跳源處罰
就是把那個數據啊
輸入端數據鎖存到了
其他都一樣
對我們來說呢
P0口分時服用
我們首先要考慮的
就是把P0口發出的
第八位地址鎖到這裏面
從功能上來看
它倆是一樣的
但是從引腳排列上
573你看都
D0到D7排到一側
Q7到Q0排在一側
畫板子非常好畫
這個大家可能
也沒畫這個板子
你要畫這個板子
你就覺得它573這個排法
非常非常好
所以實際使用的地址鎖存器
最常見的經典的是373
74LS373
那麼有人爲了畫板子方便
好畫採用573
道理就在這
地址鎖存器的問題解決以後呢
我們P0口發出的第八位地址呢
就要在地址鎖存器裏面鎖上
下面呢
我們就談這一張的第三點
就是說程序存儲器擴展
這裏我聲明一點啊
我們這個現代的單片機裏面片內都帶Flash
對於AT89S51單片機裏面帶4K的Flash
一般說來啊
程序存儲器就不要擴了
就不要擴了
有的人說我編一個程序4K不夠用
我用
要用8K的Flash
51單片機也沒有啊
裏面就4K
那怎麼辦
你選89S52單片機
對吧
有人說我編出程序十幾K
52單片機就不行
你選擇什麼呢
55
55單片機
所以一般說來
程序存儲器就用片內的Flash擔當
但是作爲一種擴展方法呢
我們簡單介紹一下就可以了
那麼這個程序存儲器必須是非意識性的
就是說掉電以後
它裏面內容還保存
還保存
然後呢
單片機復位的時候呢
程序指針指向0地址
從0地址開始
去指令
然後拿到單片機密碼
好
只讀存儲器呢
信息寫進去以後呢
就不能隨便改了
特別是在程序運行過程當中
不能寫入新的內容
所以這個叫只讀存儲器
那麼我們把像ROM當中寫入信息
這個叫對ROM編程
根據編程方式不同的
ROM現在常用就這麼多種
第一種是眼膜
實際上就一次性寫入
這個一般用在什麼場合呢
批量比較大的情況
你比如說我做一種冰箱控制器
我這個冰箱控制器可能用多少萬
就是數量很大
這時候用這種程序存儲器比較合適
另外它還要注意一個
就是說你能不能寫
大家注意
我們一般沒有這套
在製作過程當中對它進行編程
所以這個對於一般用戶來說
是不太方便的
只適合於大批量生產的單品級存儲器
第二種就是可編程ROM
這個你必須用獨立編程器
這個實驗慢慢慢慢這些都淘汰了
爲什麼呢
因爲現在的只讀存儲器都用FLASH
大部分都用FLASH
另外一批ROM是我們前一段很多學生來用的
它有一個適應窗
用強紫外線照五分鐘或十幾分鍾
根據說明書裏面內容就抹掉了
然後呢
用編程器再往裏寫
一方批ROM實際上就類似於FLASH
但是它和FLASH的最大區別是什麼呢
FLASH寫的比較快往裏寫
一方批ROM寫一個單元
好像得有時候要達到毫秒
現在我就給大家提一個問題
FLASH和一方批ROM
差別在哪
所以有很多教材或書裏面把它混爲一談
實際上它倆還是不一樣
從特性上是一樣
但是從往裏寫的時間是不一樣的
好
我們現在最常用的片內集成FLASH
片內集成FLASH
這個你就可以現在都在線寫
我們現在改單片集成
過去改完了
灌完了
一運行不好使再調
怎麼辦呢
再用一批ROM
再用寫入器把它抹掉
再重新往裏灌
現在就支持在線寫了
直接在線就可以往裏寫
那麼現在用的都FLASH
FLASH這個大家注意
現在已經技術很成熟
很先進了
讀寫速度也快
另外容量也大
那麼現在的單片機
片內都帶FLASH
所以擴展長一寸主題
這部分就簡單介紹一下
那麼現在美國
S515255
它們差別是什麼呢
就是S系列的
它可以支持在線往裏寫
在線往裏寫怎麼寫
你那程序編完
調完了
生成HEX文件
就在PC機裏面
要通過並口串口
它有個下載線或者U口
然後下載線那頭
加到你的板子上
你板子上呢
AT89 S51單片機
不有幾個SMO
SO
SI
還有MISO那一角嗎
連到那個插座上
然後直接就對裏面的
那FLASH內容進行讀寫
那寫的是什麼
就你的程序
那麼下載線現在很便宜
一般LTC單片機
才十幾塊錢
我們就可以買到
所以呢
大家注意
現在不支持ISP
就在線寫入的單片機
比如說AT89 C51 C52 C55
都不再生產
現在都是IS系列
原因就是支持ISP
在線寫
這樣的話呢
大家注意
我們調程序
以前還需要仿認器
現在也可以不需要仿認器
我們大家做實驗的時候呢
是直接可以在線往裏寫的程序
你就改完直接往裏寫
這樣仿認器的成本也比較高
編程器也得需要花錢
那麼現在這些都不用
一條下載線
只要你PC機有那些U
你根據PC機
你的下載線
這邊和PC機相連的
那接口
你選擇不同的下載線就可以了
好
常用的EPROM芯片
我簡單介紹一下啊
常用EPROM芯片
隨着Flex技術這麼飛速發展
我看這些
慢慢這些常用的EPROM芯片就該淘汰
慢慢就得淘汰
典型芯片是什麼
27系列
這個大家瞭解就行
否則以後
你以後看到人家前面做的系統
27系列
你都搞不明白這是什麼芯片
這用的比較多
2764最常見
2764
27128
27256
27512
大家注意啊
27後面跟的那個是位
你把這個位容量呢
除掉8就變成字節
比如說舉個例子
2728
27後面跟着128
128除以8就等於16K
所以一看這個芯片
你就知道它是16K的EPROM芯片
所以這個27系列
就是最常見的EPROM芯片
2764
2728
27256
當然現在本來是技術飛速發展
那麼我們大家這些EPROM瞭解完以後呢
有可能你要涉及到以前人家做的系統
做的系統
另外呢
現在過去是小容量便宜
大容量貴
現在隨着製造技術飛速發展
大容量的芯片反而比小容量芯片便宜
來的便宜
所以設計的時候
大家你比如選長期存儲器
選一片容量夠的就行
現在基本就我們各種需要都會滿足的啊
這個就簡單介紹一下就行了
常見的EPROM芯片引腳
大家看着啊
這就2764
2728
27256
27512
那麼他們對應的這些引腳
它的功能
我們就大概說一下
這樣的話呢
對大家以後接觸這個遇到的這27系列芯片的也有好處
A0到A15就是地址線
根據容量不同的地址線的數目就不同
你比如說8K的就A0到A12
4K的A0到A11
然後D0到D7呢
是數據線
因爲這個長期存儲器啊
它的程序是一定要代碼寫到裏面的
讀的話呢
從這四根
這八根數據線讀出來以後呢
就放到讀到P0口裏面
然後進行自動易碼執行
大家注意這個啊
CE非片選控制段
OE非呢
是輸出允許控制段
另外呢
這EPROM呢
還要對它進行編程
在什麼叫編程
就是往你寫代碼的時候
那麼這個引腳要加編程脈衝的輸入
這個引腳要加編程脈衝
所以PGM非呢
是編程脈衝的輸入段
那麼VPP呢
是在編程的時候加的編程電壓
大家注意我們芯片的工作電壓
一般都正五伏
這個編程有些芯片要求高壓
所謂高壓
12伏對單片機來說就是高壓
或者是25伏的
所以VPP這編程電壓
VCC就是芯片的工作電壓
GND和NC
一個是數據
一個是無用段
好
這個芯片我們大家瞭解一下
知道它的引腳大概功能
然後呢
我們再瞭解一下
它與單片機接口
我們初步瞭解就可以了
因爲現在這個EPROM都不在
很少有人在擴EPROM
它片內弗萊是夠了
但是作爲單片機來說
這些知識我們大家還要有一些
好休息五分鐘
