官术网_书友最值得收藏!

2.1 8051單片機的引腳功能與內部結構

2.1.1 引腳功能說明

8051單片機有40個引腳,各引腳功能標注如圖2-1所示。8051單片機的引腳可分為3類,分別是基本工作條件引腳、I/O(輸入輸出)引腳和控制引腳。

1. 基本工作條件引腳

單片機的基本工作條件引腳有電源引腳、復位引腳和時鐘引腳,只有具備了基本工作條件,單片機才能開始工作。

(1)電源引腳

40腳(VCC)為電源正極引腳,20腳(VSS或GND)為電源負極引腳。VCC引腳接5V電源的正極,VSS或GND引腳接5V電源的負極(即接地)。

(2)復位引腳

9腳(RST/VPD)為復位引腳。

在單片機接通電源后,內部很多電路狀態混亂,需要復位電路為它們提供復位信號,使這些電路進入初始狀態,然后才開始工作。8051單片機采用高電平復位,當RST引腳輸入高電平(持續時間需超過24個時鐘周期)時,即可完成內部電路的復位。

9腳還具有掉電保持功能,為了防止掉電使單片機內部RAM的數據丟失,可在該腳再接一個備用電源,掉電時,由備用電源為該腳提供4.5~5.5V電壓,可保持RAM的數據不會丟失。

圖2-1 8051單片機的引腳功能標注

(3)時鐘引腳

18、19引腳(XTAL2、XTAL1)為時鐘引腳。

單片機內部有大量的數字電路,這些數字電路工作時需要時鐘信號進行控制,才能有次序、有節拍地工作。單片機XTAL2、XTAL1引腳外接的晶振及電容與內部的振蕩器構成時鐘電路,產生時鐘信號供給內部電路使用;另外,也可以由外部其它的電路提供時鐘信號,外部時鐘信號通過XTAL2引腳送入單片機,此時XTAL1引腳懸空。

2. I/O(輸入/輸出)引腳

8051單片機有P0、P1、P2和P3共4組I/O端口,每組端口有8個引腳,P0端口8個引腳編號為P0.0~P0.7,P1端口8個引腳編號為P1.0~P1.7,P2端口8個引腳編號為P2.0~P2.7,P3端口8個引腳編號P3.0~P3.7。

(1)P0端口

P0端口(P0.0~P0.7)的引腳號為39~32,其功能如下。

① 用作I/O端口,既可以作為8個輸入端,也可作為8個輸出端;

② 用作16位地址總線中的低8位地址總線。當單片機外接存儲器時,會從這些引腳輸出地址(16位地址中的低8位)來選擇外部存儲器的某些存儲單元。

③ 用作8位數據總線。當單片機外接存儲器并需要讀寫數據時,先讓這些引腳成為8位地址總線,從這些引腳輸出低8位地址,與P2.0~P2.7引腳同時輸出的高8位地址組成16位地址,選中外部存儲器的某個存儲單元,然后單片機讓這些引腳轉換成8位數據總線,通過這8個引腳往存儲單元寫入8位數據或從這個存儲單元將8位數據讀入單片機。

(2)P1端口

P1端口(P1.0~P1.7)的引腳號為1~8,它只能用作I/O端口,可以作為8個輸入端,也可作為8個輸出端。

(3)P2端口

P2端口(P2.0~P2.7)的引腳號為21~28,其功能如下。

① 用作I/O端口,可以作為8個輸入端,也可作為8個輸出端;

② 用作16位地址總線中的高8位地址總線。當單片機外接存儲器時,會從這些引腳輸出高8位地址,與P0.0~P0.7引腳同時輸出的低8位地址組成16位地址,選中外部存儲器的某個存儲單元,然后單片機通過P0.0~P0.7引腳往選中的存儲單元讀寫數據。

(4)P3端口

P3端口(P3.0~P3.7)的引腳號為10~17,除了可以用作I/O端口,各個引腳還具有其他功能,具體說明如下。

P3.0(RXD)——串行數據接收端。外部的串行數據可由此腳進入單片機。

P3.1(TXD)——串行數據發送端。單片機內部的串行數據可由此腳輸出,發送給外部電路或設備。

P3.2(49340-00-41-1.jpg)——外部中斷信號0輸入端。

P3.3(49340-00-41-2.jpg)——外部中斷信號1輸入端。

P3.4(T0)——定時器/計數器T0的外部信號輸入端。

P3.5(T1)——定時器/計數器T1的外部信號輸入端。

P3.6(49340-00-41-3.jpg)——寫片外RAM的控制信號輸出端。

P3.7(49340-00-41-4.jpg)——讀片外RAM的控制信號輸出端。

P0、P1、P2、P3端口具有多種功能,具體應用哪一種功能,由單片機根據內部程序自動確定。需要注意的是,在某一時刻,端口的某一引腳只能用作一種功能。

3. 控制引腳

控制引腳的功能主要有:當單片機外接存儲器(RAM或ROM)時,通過控制引腳控制外接存儲器,使單片機能像使用內部存儲器一樣使用外接存儲器;在向單片機編程(即向單片機內部寫入編好的程序)時,編程器通過有關控制引腳使單片機進入編程狀態,然后將程序寫入單片機。

8051單片機的控制引腳的功能說明如下。

49340-00-41-5.jpg(31腳):內、外部ROM(程序存儲器)選擇控制端/編程電壓輸入端。

當EA=1(高電平)時,單片機使用內、外部ROM,先使用內部ROM,超出范圍時再使用外部ROM;當EA=0(低電平)時,單片機只使用外部ROM,不會使用內部ROM。在用編程器往單片機寫入程序時,要在該腳加12~25V的編程電壓,才能將程序寫入單片機內部ROM。

49340-00-41-6.jpg(29腳):片外ROM選通控制端。當單片機需要從外部ROM讀取程序時,會從該腳輸出低電平到外部ROM,外部ROM才允許單片機從中讀取程序。

49340-00-42-1.jpg(30腳):片外低8位地址鎖存控制端/編程脈沖輸入端。單片機在讀寫片外RAM或讀片外ROM時,該引腳會送出ALE脈沖信號,將P0.0~P0.7引腳輸出低8位地址鎖存在外部的鎖存器中,然后讓P0.0~P0.7引腳輸出8位數據,即讓P0.0~P0.7引腳先作地址輸出端,再作數據輸出端。在通過編程器將程序寫入單片機時,編程器會通過該腳往單片機輸入編程脈沖。

2.1.2 單片機與片外存儲器的連接與控制

8051單片機內部RAM(可讀寫存儲器,也稱數據存儲器)的容量為256B(含特殊功能寄存器),內部ROM(只讀存儲器,也稱程序存儲器)的容量為4KB,如果單片機內部的RAM或ROM容量不夠用,可以外接RAM或ROM。在8051單片機與片外RAM或片外ROM連接時,使用P0.0~P0.7和P2.0~P2.7引腳輸出16位地址,可以最大尋址216=65536=64K個存儲單元,每個存儲單元可以存儲1個字節(1Byte),也就是8位二進制數(8bit),即1Byte=8bit,故8051單片機外接RAM或ROM容量最大不要超過64KB,超出范圍的存儲單元無法識別。

8051單片機與片外RAM連接如圖2-2所示。

圖2-2 單片機讀寫片外RAM的連接

當單片機需要從片外RAM讀寫數據時,會從P0.0~P0.7引腳輸出低8位地址(如00000011),再通過8路鎖存器送到片外RAM的A0~A7引腳,它與P2.0~P2.7引腳輸出并送到片外RAM的A8~A15引腳的高8位地址一起拼成16位地址,從216個存儲單元中選中某個存儲單元。如果單片機要往片外RAM寫入數據,會從WR引腳送出低電平到片外RAM的WE腳,片外RAM被選中的單元準備接收數據,與此同時,單片機的ALE端送出ALE脈沖信號去鎖存器的C端,將1Q~8Q端與1D~8D端隔離開,并將1Q~8Q端的地址鎖存起來(保持輸出不變),單片機再從P0.0~P0.7引腳輸出8位數據,送到片外RAM的D0~D7引腳,存入內部選中的存儲單元。如果單片機要從片外RAM讀取數據,同樣先發出地址選中片外RAM的某個存儲單元,并讓RD端輸出低電平去片外RAM的OE端,再將P0.0~P0.7引腳輸出低8位地址鎖存起來,然后讓P0.0~P0.7引腳接收片外RAM的D0~D7引腳送來的8位數據。

如果外部存儲器是ROM(只讀存儲器),單片機不使用WR端和RD端,但會用到PSEN端,并將PSEN引腳與片外ROM的OE引腳連接起來,在單片機從片外ROM讀數據時,會從PSEN引腳送出低電平到片外ROM的OE引腳,除此以后,單片機讀片外ROM的過程與片外RAM基本相同。

圖2-2所示的8051單片機與片外存儲器連接線有地址總線(AB)、數據總線(DB)和控制總線(CB),地址總線由A0~A15共16根線組成,最大可尋址216=65536個存儲單元,數據總線由D0~D7共8根線組成(與低8位地址總線分時使用),一次可存取8位二進制數(即一個字節),控制總線由RD、WR和ALE共3根線組成。單片機在執行到讀寫片外存儲器的程序時,會自動按一定的時序發送地址和控制信號,再讀寫數據,無需人工編程參與。

2.1.3 內部結構說明

8051單片機內部結構如圖2-3所示,從圖中可以看出,單片機內部主要由CPU、電源電路、時鐘電路、復位電路、ROM(程序存儲器)、RAM(數據存儲器)、中斷控制器、串行通信口、定時器計數器、P0~P3端口的輸入輸出電路和鎖存器組成。

圖2-3 8051單片機內部結構

1. CPU

CPU又稱中央處理器(Central Processing Unit),主要由算術/邏輯運算器(ALU)和控制器組成。單片機在工作時,CPU會按先后順序從ROM(程序存儲器)的第一個存儲單元(0000H單元)開始讀取程序指令和數據,然后按指令要求對數據進行算術(如加運算)或邏輯運算(如與運算),運算結果存入RAM(數據存儲器),在此過程中,CPU的控制器會輸出相應的控制信號,以完成指定的操作。

2. 時鐘電路

時鐘電路的功能是產生時鐘信號送給單片機內部各電路,控制這些電路使之有節拍地工作。時鐘信號頻率越高,內部電路工作速度越快。

時鐘信號的周期稱為時鐘周期(也稱振蕩周期)。兩個時鐘周期組成一個狀態周期(S),它分為P1、P2兩個節拍,P1節拍完成算術、邏輯運算,P2節拍傳送數據。6個狀態周期組成一個機器周期(12個時鐘周期),而執行一條指令一般需要1~4個機器周期(12~48個時鐘周期)。如果單片機的時鐘信號頻率為12MHz,那么時鐘周期為1/12μs,狀態周期為1/6μs,機器周期為1μs,指令周期為1~4μs。

3. ROM(程序存儲器)

ROM(程序存儲器)又稱只讀存儲器,是一種具有存儲功能的電路,斷電后存儲的信息不會消失。ROM主要用來存儲程序和常數,用編程軟件編寫好的程序經編譯后寫入ROM。

ROM主要有下面幾種。

(1)Mask ROM(掩膜只讀存儲器)

Mask ROM中的內容由廠家生產時一次性寫入,以后不能改變。這種ROM成本低,適用于大批量生產。

(2)PROM(可編程只讀存儲器)

新的PROM沒有內容,可將程序寫入內部,但只能寫一次,以后不能更改。如果PROM在單片機內部,PROM中的程序寫錯了,整個單片機便不能使用。

(3)EPROM(紫外線可擦寫只讀存儲器)

EPROM是一種可擦寫的PROM,采用EPROM的單片機上面有一塊透明的石英窗口,平時該窗口被不透明的標簽貼封,當需要擦除EPROM內部的內容時,可撕開標簽,再用紫外線照射透明窗口15~30min,即可將內部的信息全部擦除,然后重新寫入新的信息。

(4)EEPROM(電可擦寫只讀存儲器)

EEPROM也稱作E2PROM或E2PROM,是一種可反復擦寫的只讀存儲器,但它不像EPROM需要用紫外線來擦除信息,這種ROM只要加適當的擦除電壓,就可以輕松快速地擦除其中的信息,然后重新寫入信息。EEPROM反復擦寫可達1000次以上。

(5)Flash Memory(快閃存儲器)

Flash Memory簡稱閃存,是一種長壽命的非易失性(在斷電情況下仍能保持所存儲的數據信息)的存儲器,數據刪除不是以單個字節為單位,而是以固定的區塊(扇區)為單位,區塊大小一般為256KB到20MB。

Flash Memory是EEPROM的變種,兩者的區別主要在于,EEPROM能在字節水平上進行刪除和重寫,而大多數Flash Memory需要按區塊擦除或重寫。由于Flash Memory斷電時仍能保存數據,且數據擦寫方便,故使用非常廣泛(如手機、數碼相機使用的存儲卡)。STC89C5x系列51單片機就采用Flash Memory作為程序存儲器。

4. RAM(數據寄存器)

RAM(數據寄存器)又稱隨機存取存儲器,也稱可讀寫存儲器)。RAM的特點是:可以存入信息(稱作寫),也可以將信息取出(稱作讀),斷電后存儲的信息會全部消失。RAM可分為DRAM(動態存儲器)和SRAM(靜態存儲器)。

DRAM的存儲單元采用了MOS管,它利用MOS管的柵極電容來存儲信息,由于柵極電容容量小且漏電,故柵極電容保存的信息容易消失,為了避免存儲的信息丟失,必須定時給柵極電容重寫信息,這種操作稱為“刷新”,故DRAM內部要有刷新電路。DRAM雖然要有刷新電路,但其存儲單元結構簡單、使用元件少、功耗低,且集成度高、單位容量價格低,因此需要大容量RAM的電路或電子產品(如計算機的內存條)一般采用DRAM作為RAM。

SRAM的存儲單元由具有記憶功能的觸發器構成,它具有存取速度快、使用簡單、不需刷新、靜態功耗極低等優點,但元件數多、集成度低、運行時功耗大,單位容量價格高,因此需要小容量RAM的電路或電子產品(如單片機)一般采用SRAM作為RAM。

5. 中斷控制器

當CPU正在按順序執行ROM中的程序時,若INT0(P3.2)或INT1(P3.3)端送入一個中斷信號(一般為低電平信號),如果編程時又將中斷設為允許,中斷控制器馬上發出控制信號讓CPU停止正在執行的程序,轉而去執行ROM中已編寫好的另外的某段程序(中斷程序),中斷程序執行完成后,CPU又返回執行先前中斷的程序。

8051單片機中斷控制器可以接受5個中斷請求:INT0和INT1端發出的兩個外部中斷請求、T0、T1定時器/計數器發出的兩個中斷請求和串行通信口發出的中斷請求。

要讓中斷控制器響應中斷請求,先要設置允許總中斷,再設置允許某個或某些中斷請求有效,若允許多個中斷請求有效,還要設置優先級別(優先級別高的中斷請求先響應),這些都是通過編程來設置,另外還需要為每個允許的中斷編寫相應的中斷程序,比如允許INT0和T1的中斷請求,就需要編寫INT0和T1的中斷程序,以便CPU響應INT0請求馬上執行INT0中斷程序、響應T1請求馬上執行T1中斷程序。

6. 定時器/計數器

定時器/計數器是單片機內部具有計數功能的電路,可以根據需要將它設為定時器或計數器。如果要求CPU在一段時間(如5ms)后執行某段程序,可讓定時器/計數器工作在定時狀態,定時器/計數器開始計時,當計到5ms后馬上產生一個請求信號送到中斷控制器,中斷控制器則輸出信號讓CPU停止正在執行的程序,轉而去執行ROM中特定的某段程序。

如果讓定時器/計數器工作在計數狀態,可以從單片機的T0或T1引腳輸入脈沖信號,定時器/計數器開始對輸入的脈沖進行計數,當計數到某個數值(如1 000)時,馬上輸出一個信號送到中斷控制器,讓中斷控制器控制CPU去執行ROM中特定的某段程序(如讓P0.0引腳輸出低電平點亮外接LED燈的程序)。

7. 串行通信口

串行通信口是單片機與外部設備進行串行通信的接口。當單片機要將數據傳送給外部設備時,可以通過串行通信口將數據由TXD端輸出;外部設備送來的數據可以從RXD端輸入,通過串行通信口將數據送入單片機。

串行是指數據傳遞的一種方式,串行傳遞數據時,數據是按一位一位傳送的。

8. P0~P3輸入/輸出電路和鎖存器

8051單片機有P0~P34組端口,每組端口有8個輸入/輸出引腳,每個引腳內部都有一個輸入電路、一個輸出電路和一個鎖存器。以P0.0引腳為例,當CPU根據程序需要讀取P0.0引腳輸入信號時,會往P0.0端口發出讀控制信號,P0.0端口的輸入電路工作,P0.0引腳的輸入信號經輸入電路后,分作兩路,一路進入P0.0鎖存器保存下來,另一路送給CPU;當CPU根據程序需要從P0.0引腳輸出信號時,會往P0.0端口發出寫控制信號,同時往P0.0鎖存器寫入信號,P0.0鎖存器在保存信號的同時,會將信號送給P0.0輸出電路(寫P0.0端口時其輸入電路被禁止工作),P0.0輸出電路再將信號P0.0引腳送出。

P0~P3端口的每個引腳都有兩個或兩個以上的功能,在同一時刻一個引腳只能用作一個功能,用作何種功能由程序決定。例如,當CPU執行到程序的某條指令時,若指令是要求讀取某端口引腳的輸入信號,CPU執行該指令時會發出讀控制信號,讓該端口電路切換到信號輸入模式(輸入電路允許工作,輸出電路被禁止),再讀取該端口引腳輸入的信號。

主站蜘蛛池模板: 诸城市| 九台市| 济宁市| 澄城县| 平南县| 仪征市| 新乡县| 周口市| 潮安县| 东台市| 湟源县| 璧山县| 太湖县| 南昌县| 乳源| 颍上县| 烟台市| 方山县| 青冈县| 公主岭市| 寻甸| 彰化县| 长宁县| 木兰县| 邵武市| 怀仁县| 宁都县| 京山县| 阿拉善右旗| 丹阳市| 恭城| 红河县| 南通市| 得荣县| 三门峡市| 轮台县| 白河县| 灵寿县| 兴化市| 田阳县| 静乐县|