51单片机系统组成及扩展应用课件_第1页
51单片机系统组成及扩展应用课件_第2页
51单片机系统组成及扩展应用课件_第3页
51单片机系统组成及扩展应用课件_第4页
51单片机系统组成及扩展应用课件_第5页
已阅读5页,还剩257页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCS-51單片機系統組成及擴展應用5.1MCS-51單片機最小應用系統的構成最小應用系統是指能維持單片機運行的最簡單配置系統。它常用作一些簡單的控制系統,如開關狀態的輸入/輸出控制、時序控制等。這種應用系統的硬體組成十分簡單,對於片內有ROM的單片機(如8051),只要配上時鐘電路、複位電路和電源就可以構成最小應用系統,如圖5-1所示。對於片內無ROM的單片機(如8031),除了外加時鐘電路、複位電路和電源外,還必須擴展外部程式記憶體(ROM或EPROM),關於外部記憶體的擴展問題,將在下節詳細介紹。電路連接原理如圖5-2所示。下一頁返回5.1MCS-51單片機最小應用系統的構成5.1.1單片機的時鐘電路時鐘電路提供時鐘給電腦的各個部件,使各個部件按照一定的時序有條不紊的工作。時鐘的快慢決定著電腦的工作節奏。下麵以8051為例,介紹MCS-5l系列單片機的時鐘電路組成形式。8051內部有一個用於構成振盪器的高增益反相放大器,如圖5-3a所示。引腳XTAL1為反相器的輸入端,引腳XTAL2為反相器的輸出端,它們均在晶片的外部。當引腳XTAL1和XTAL2之間跨接晶振和微調電容,可以和晶片內部的放大器構成一個穩定的自激振盪電路,在引腳XTAL2上可以輸出3V左右的高頻正弦波,於是形成了單片機的時鐘信號,這種連接方式稱為內部時鐘源方式。電容器C1和C2的主要作用是幫助晶振起振,其大小對振盪頻率有微調作用,在實際電路中,C1與C2常取30pF。振盪頻率(fosc)主要由石英晶振的頻率確定,晶體的振盪頻率範圍是1.2~12MHz,其典型值為12MHz和11.0592MHz。上一頁下一頁返回5.1MCS-51單片機最小應用系統的構成8051內部工作時,也可由外部時鐘信號提供,這種連接方式稱為外部時鐘源方式。原理如圖5-3b所示。此時外部的時鐘信號由XTAL2引腳引入,由於XTAL2端邏輯電平不是TTL型的,故需外接一上拉電阻。另外,外接信號應為時鐘頻率低於12MHz的方波信號。對於80C51的外部時鐘接法與8051不同,其外部時鐘信號由XTALl腳引入,而XTAL2腳懸空。其結構如圖5-4所示。

在多片單片機組成的系統中,為了各單片機之間時鐘信號的同步,應當引入唯一的公用外部脈衝信號作為各單片機的時鐘信號。上一頁下一頁返回5.1MCS-51單片機最小應用系統的構成5.1.2單片機的複位電路在單片機應用系統中,除單片機晶片本身需要複位、外部擴展的I/O介面電路等需要複位外,對於單片機程式也必須初試化後才能執行。因此一個單片機系統需要同步複位信號,即單片機複位後,CPU開始工作,此時片外的有關擴展晶片外部時鐘也要完成複位操作,以保證CPU有效地對外圍晶片進行初始化編程。單片機的複位方式有上電複位和手動按鈕複位兩種,如圖5-5所示。上一頁下一頁返回5.1MCS-51單片機最小應用系統的構成其中圖5-5a是最簡單的複位電路,在VCC和RST之間連接一容量為22μF左右的電容,利用RST內部複位下拉電阻RRST(40∽220KΩ)就構成了複位電路。當電源接通瞬間,由於電容C上無存儲電量,因此電容端電壓極小,複位電阻RRST上的電壓接近電源電壓,即RST端口為高電平。在電容充電過程中,RST端電壓逐漸下降,當RST端電位小於某一數值後,CPU脫離複位狀態,進入程式執行狀態。只要電容C容量足夠大,保證RST高電平有效時間大於24個振盪週期,CPU就能可靠複位。上一頁下一頁返回5.1MCS-51單片機最小應用系統的構成圖5-5b複位電路與圖5-5a類似,只是增加了外接電阻R和二極體VD。二極體VD的作用在於停電後,給出電容C提供了迅速放電通路,保證再上電時RST為高電平,使CPU可靠複位。正常工作時,二極體VD反偏,對電路沒有影響,而斷電後,VCC逐漸下降,當VCC=0時,相當於VCC端與地等電位,這時電容C通過VD迅速放電,放電通路為C正極—電源VCC端(此時與地等電位)—二極體VD正極—二極體VD負極—C負極,電容恢復到無電量的初始狀態,為下次上電複位做好準備。上一頁下一頁返回5.1MCS-51單片機最小應用系統的構成圖5-5c增加了手動複位按鈕,以便死機時通過複位按鈕人工複位,即我們常說的“重新起動”,簡稱“重起”。複位按鈕按下後,電容C通過R2放電,當電容C放電結束後,RST端的電位由R2、R1分壓比決定,由於R2R1,因此RST為高電平,CPU進入複位狀態,鬆手後,電容充電,RST端電壓下降,經過一定的延時,CPU脫離複位狀態。R2的作用在於限制按鈕按下時電容C的瞬間放電電流,避免產生火花,以保護按鈕的觸點。MCS-51系列單片機受到管腳的限制,沒有對外專用的地址匯流排和數據匯流排。當系統擴展記憶體、I/O口及所需的週邊晶片時,需要將單片機的相關端口的外部連線變為一般微機所具有的三匯流排結構形式。本節主要介紹記憶體的擴展。上一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.1MCS-5l系列單片機的片外匯流排結構當系統要求擴展時,為了便於與各種晶片相連接,應把單片機外部連線變為一般微機所具有的三匯流排結構形式,即地址匯流排、數據匯流排、控制匯流排。MCS-5l系列單片機的片外引腳可構成如圖5-6所示的三匯流排結構,所有的週邊晶片都將通過這三匯流排進行擴展。1.數據匯流排(DB)數據匯流排由P0口提供,其寬度為一個位元組(8位)。該口是三態雙向口,是應用系統中使用最頻繁的通道,它不僅傳送數據資訊,而且還與控制信號配合,傳送低位位元組地址資訊。數據匯流排要連到多個週邊晶片上,在某一時刻只有端口地址與單片機發出的地址相符的晶片才能與P0口通信。下一頁返回5.2MCS-51單片機的外部記憶體的擴展2.地址匯流排(AB)地址匯流排由P0口和P2口提供,其寬度為兩個位元組(16位),故可尋址範圍為216B=64KB。其中地址匯流排的低8位A7~A0由P0口經地址鎖存器提供,P2口直接提供地址匯流排的高8位A15~A8。由於P0口是數據、地址分時複用的,P0口先輸出低8位地址資訊,待地址資訊穩定並可靠鎖存後,P0口再做數據匯流排使用。所以P0口輸出的低8位地址必須用鎖存器進行鎖存。由於P2口一直提供高8位地址,故不需要外加地址鎖存器。P0、P2口在系統擴展中用作地址線後,便不能再作為一般I/O口使用。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展3.控制匯流排(CB)控制匯流排包括片外系統擴展用控制線和片外信號對單片機的控制線。系統擴展用控制線有、、、和ALE。(1)、用於片外數據記憶體的讀/寫控制。當執行片外數據記憶體操作指令MOVX時,這兩個信號分別自動生成。(2)用於片外程式記憶體的讀控制。執行片外程式記憶體讀操作指令(查表指令)MOVC時(=O),該信號自動生成。

上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展(3)ALE用於鎖存P0口輸出的低8位地址的控制線。通常ALE在P0口輸出地址期間,用下降沿控制鎖存器對地址進行鎖存。(4)用於選擇片內或片外程式記憶體。當=O時,只訪問片外程式記憶體。=1時,將訪問片內程式記憶體,當片內程式記憶體容量不夠存儲時,才會訪問外部記憶體。MCS-5l系列單片機中的8031片內無程式記憶體,在實際應用中,其通常接地,以便訪問外部記憶體。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.2MCS-5l系列單片機的系統擴展能力如前所述,單片機地址線為16位,因此在片外可擴展的記憶體最大容量為64KB,地址為0000H~FFFFH。由於對片外數據記憶體和程式記憶體的訪問使用不同的指令及控制信號,所以允許兩者地址重合,即對於8051系列單片機來說,片外可擴展的程式記憶體與數據記憶體的最大容量均為64KB。片外數據記憶體地址為0000H~FFFFH。當片內程式記憶體與片外程式記憶體的訪問使用相同的操作指令,對兩者的選擇則靠系統控制線來實現。當=O時,選擇片外程式記憶體,即無論片內有無程式記憶體,片外程式記憶體的地址可從0000H開始進行編址。當=1時,選片內程式記憶體,若片內程式記憶體容量為4KB,則其地址為0000H~0FFFH,片外程式記憶體地址只能從1000H開始編址。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.3MCS-5l系列單片機常用記憶體擴展晶片1.程式記憶體程式記憶體是用來存放程式代碼的,也存放程式常數。由於單片機的應用系統通常是專用的微機系統,一經開發完畢,其軟體就不再改變,所以常用半導體只讀記憶體EPROM和EEPROM作為單片機的程式記憶體。程式記憶體通常可用ROM來表示。(1)EPROM通常均採用標準晶片:2716(2K×8),2732(4K×8),2764(8K×8),27128(16K×8),27256(32K×8),以及27512(64K×8)。其中以2716為例,2K×8代表晶片存儲單元為2K個,每個存儲單元可儲存一個位元組。其餘依此類推。常用的EPROM電路有2716、2732、2764、27128、27256、27512等,圖5-7給出它們的引腳圖。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展圖中涉及的引腳符號功能如下:Ai~A0為地址輸入線,i=15~10;D7~D0為三態數據匯流排,讀時為數據輸出線,寫時為數據輸入線,維持或禁止編程時為高阻態;為片選信號端,低電平有效;為編程脈衝輸入線,通常為高電平;為讀選通(輸出允許)信號輸入線,低電平有效;Vpp為編程電源輸入線,其值因晶片型號和製造廠商而異;Vcc為主電源輸入線,一般為+5V;GND為接地線。(2)EEPROM常用的有兩種類型晶片。1)+21V電壓寫入:2816(2K×8),2817(2K×8)。2)+5V電壓寫入:2816A(2K×8),2817A(2K×8),2864(8K×8)。EEPROM晶片常用的EEPROM有2817、2864等,圖5-8是2817A和2864A的引腳圖。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展圖中所涉及的引腳符號的功能如下:Ai~A0為地址輸入線,i=10/12(2817A/2864A);D7~DO為雙向三態數據線;為片選信號輸入線,低電平有效;為讀選通信號輸入線,低電平有效;為寫選通信號輸入線,低電平有效;RDY/為2817A的狀態輸出線,在寫操作時,其為低電平表示“忙”,寫入完畢該線為高電平,表示“準備好”;Vcc為主電源+5V端口;GND為接地端。EPROM、EEPROM等都可作為單片機的片外程式記憶體,但由於EPROM價格較低,性能穩定,所以應用得最為普遍。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展2.數據記憶體數據記憶體用於存儲現場採集的原始數據、運算結果等,所以,通常採用半導體RAM作為片外數據記憶體,由於EEPROM可進行改寫,它也可用作片外數據記憶體。常見的半導體RAM有:(1)SRAM常用的有6116(2K×8),6264(8K×8),62256(32K×8)。(2)DRAM常用的有2164(64K×1)。(3)iRAM常用的有2186。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展

目前,常用的SRAM電路有6116、6264、62256等,它們的引腳排列如圖5-9所示,圖中涉及的引腳符號功能如下:Ai~A0為地址輸入線,i=10/12/14(6116/6264/62256);D7~D0:三態雙向數據線;()為片選信號輸入線,低電平有效;為讀選通信號(允許讀)輸入線,低電平有效;為寫選通信號(允許寫)輸入線,低電平有效;Vcc為工作電源+5V端口;GND為接地端;CE2:6264的片選信號輸入線,高電平有效,可用於掉電保護。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展雖然DRAM及EEPROM也可用作片外數據記憶體,但DRAM需要定時刷新,EEPROM價格高,速度慢,因此使用上受到很大的限制。所以,通常數據記憶體可用RAM來表示。3.地址鎖存器地址鎖存器一般可選用帶三態緩衝輸出的8位鎖存器74LS373和8282。圖5-10示了這兩種鎖存器的引腳圖。74LS373和8282都可簡化成圖5-11所示的結構,引腳符號功能如下:D7~D0為三態門輸入端;Q7~Q0為三態門輸出端;GND為接地端;Vcc為電源端;為三態門使能端,=0,三態門正常輸出,=1,三態門輸出高阻態;G(STB)為8位鎖存器的控制端,當G(STB)=1,則輸出跟隨輸入(即鎖存器透明),當G(STB)=0,則輸出保持不變,即將D7~D0的狀態存入Q7~Q0。表5-1列出這兩種鎖存器的功能表。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.4記憶體的擴展5.2.4.1記憶體擴展的基本方式在MCS-51系列單片機應用系統的擴展中,最重要的是確定記憶體三匯流排與單片機三匯流排之間的連接方式,即確定記憶體地址匯流排與單片機地址匯流排的連接方式,記憶體數據匯流排與單片機數據匯流排的連接方式,記憶體控制線(讀/寫控制信號、片選信號、輸出允許信號)與單片機相應控制線的連接方式。其中,根據單片機地址匯流排與記憶體的不同連接方式,將記憶體的擴展方式分為高位地址解碼法和線選法。在高位地址解碼法中,又可分為全解碼法和部分解碼法兩種。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展1.全解碼法當系統中記憶體的晶片不只一個時,常採用高位地址解碼法,即將單片機地址匯流排的低位地址作為記憶體的片內地址信號,與記憶體的地址匯流排直接相連。單片機的高位地址線經過解碼器解碼後產生的信號作為不同記憶體晶片的片選信號或擴展I/O口的選通信號。如果單片機上所有的地址線均參與地址解碼,系統中任一記憶體晶片的任一存儲單元將有唯一的地址編碼,那麼這種高位地址解碼法稱為全解碼法,如圖5-13所示。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展在圖5-13所示的電路中,單片機的地址匯流排寬度為16位,最大尋址範圍為64KB。記憶體IC1及IC2的地址線A13~A0分別連接到CPU的低14位地址線A13~A0上,IC1及IC2的片選信號分別連接到IC3的解碼器輸出端和。IC1及IC2的輸出允許與單片機的程式記憶體選通信號相連。IC3的解碼允許端接地,使IC3處於解碼輸出允許狀態。根據74LS139解碼器的真值表可知:當A15、A14為低電平時,輸出低電平,而其他輸出端為高電平,即IC1被選中。因此,IC1的地址範圍是0000H~3FFFH。當A15為低電平,A14為高電平時,輸出低電平,而其他輸出端為高電平,即IC2被選中。因此,IC2的地址範圍是4000H~7FFFH。顯然,在圖5-13中,IC1和IC2的任一存儲單元均有唯一的地址編碼,不存在地址重疊現象,這是全解碼法的主要特徵之一。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展2.部分解碼法部分解碼法與全解碼法相似,區別僅在於:在部分解碼電路中,有些地址線不參與解碼。記憶體中某一存儲單元的地址編碼不唯一,有兩個或兩個以上的地址空間與之對應,如圖5-14所示。在圖5-14所示的電路中,當A14為低電平時,IC1的片選信號輸入端為低電平,即IC1被選中。但是A15未參與解碼,所以不論A15是高電平,還是低電平,IC1片選信號均有效。因此,IC1的地址範圍是0000H~3FFFH(A15為低電平時)或8000H~BFFFH(A15為高電平)。換句話說,在這種情況下,IC1中任一存儲單元均有兩個地址編碼與之對應,如0000H和8000H實際上均指向IC1中編號為0000H的存儲單元。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展高位地址線A14經IC3A反相器接IC2的引腳,當A14為高電平時,IC2的片選信號輸入端有效。因此,IC2的地址範圍是4000H~7FFFH(A15是低電平)或C000H~FFFFH(A15是高電平)。3.線選法當單片機尋址能力較大,系統實際需要的記憶體容量較小時,為簡化電路,也可以直接採用單片機的高位地址線作為記憶體晶片的片選信號,如圖5-15所示。在上圖中,IC1、IC2低電平有效片選信號連在一起並與單片機地址線A15相連,IC1高電平有效片選信號CS2直接與單片機的地址線A13相連,IC2高電平有效片選信號CS2直接與單片機的地址線A14相連。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展當A15為低電平,A14為低電平,而A13為高電平時,IC1片選信號、CS2有效,因此IC1存儲單元的地址編碼為2000H~3FFFH;反之,當A15為低電平,A14為高電平,而A13為低電平時,IC2的片選信號、CS2有效,因此IC2存儲單元的地址編碼為4000H~5FFFH。然而當A15為低電平,A14、A13均為高電平時,IC1和IC2將同時被選中,在這種情況下,會造成混亂。所以,在圖5-15所示的電路中,將不允許使用6000H~7FFFH的地址空間。可見,線選法會出現兩個晶片被同時選中的現象,從而造成部分地址空間不能使用。當用該法連接記憶體時,如果禁用存儲空間正好包含程式計數器PC複位後的初值,則不宜採用線選法方式連接。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.4.2程式記憶體EPROM的擴展方法圖5-16給出了MCS一51系列單片機中8031與片外程式記憶體的介面邏輯電路。由於8031無片內程式記憶體,故應接地,方可使用片外程式記憶體。1.用一片2732A擴展4KB程式記憶體圖5-17為採用線選法擴展4KB程式記憶體的電路。8031的端口P0作為低8位地址及數據匯流排的分時複用引腳,需接地址鎖存器,將低8位的地址鎖存後再接到2732A的A7~A0上。該電路採用8282作為地址鎖存器,也可選用74LS373代替。8031的地址鎖存控制信號線ALE接鎖存器控制端STB,當ALE發生負跳變時,8282將低8位地址鎖存,P0口方可作為數據線使用。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展2732A的高位地址線只有4條:A8~A11,直接接到P2口的P2.0~P2.3即可,地址編碼為0000H~0FFFH。2732A的輸出允許信號由8031的片外程式記憶體讀選通信號提供。由於是單片EPROM擴展,故無需考慮片選問題,2732A的片選端可直接接地。2.用一片27256擴展32KB程式記憶體隨著集成製造工藝技術的發展,EPROM的單片容量已做到很大,如27256為32K×8,27512為64K×8等。由於晶片的產量很大,有的大容量的晶片價格反而低,故在應用程式容量較大時,可擴展一片大容量的EPROM。此外,EPROM的引腳設計是向下相容的,只需連一下電源線Vcc,就可以方便地將小容量的EPROM插入大容量的EPROM插座上使用。圖5-18為32KB程式記憶體的擴展電路,該電路同樣採用線選法,其地址鎖存器採用了74LS373,其引腳接線與使用8282相同。地址編碼為0000H~7FFFH。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展3.用多片EPROM擴展的程式記憶體使用多片EPROM擴展片外程式記憶體也是一種常用的設計方法,其優點是:可靈活地應用於不同程式量要求的場合。另外,當僅需修改一部分程式時,只要重新固化,就可替換該片EPROM即可。如對2片EPROM擴展系統而言,一片可存放鍵盤、顯示及監控程序,另一片可存放應用程式,當應用程式需要修改時,只需更換固化應用程式的那一片EPROM。此外,在實際應用中經常會遇到原系統因控制功能的增加而需要增大記憶體的容量。這時,也可採用此法,即不改變原系統結構,再並聯一片或數片程式記憶體晶片以擴充系統的容量。圖5-19為用2片27256擴展的片外程式記憶體。此電路為全解碼電路,多片記憶體的擴展與單片記憶體的擴展電路基本相同,只是要注意片選問題。圖中高位地址線P2.7接(1)號片27256的片選端,P2.7經反相後接(2)號片27256的片選端。因此,(1)號片27256的地址為0000H~7FFFH,(2)號片27256的地址為8000H~0FFFFH。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展5.2.4.3數據記憶體擴展方法數據記憶體與程式記憶體地址重疊,但使用不同的控制信號和指令,且與I/0、A/D、D/A轉換電路、擴展定時/計數器及其它週邊晶片統一編址。兩者的地址匯流排和數據匯流排可公用,但控制線不能公用,數據記憶體用和控制線,而不用。圖5-20給出了MCS-51系列單片機與片外數據記憶體的介面邏輯,對片外數據記憶體的片選可採用線選法或解碼法。1.用6116擴展2KB的數據記憶體擴展單片記憶體時,片選端可直接接地,因為系統中不會再用其他程式記憶體晶片。但在擴展單片數據記憶體時,其片選端能否直接接地,還應考慮應用系統中有無I/O及外設擴展,如果有則要統一編址。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展2.用6264擴展8KB的數據記憶體圖5-22是用6264擴展SRAM電路。與6116擴展電路相比,地址線增加了2根,故片外數據記憶體的地址為0000H~1FFFH。片選線CE2接高電平,保持一直有效狀態,並進行斷電保護。5.2.4.4程式記憶體EEPROM的擴展方法EEPROM兼有程式記憶體與數據記憶體的特點,故在單片機應用系統中,既可作為程式記憶體,也可作為數據記憶體。用EEPROM2816A擴展2K程式記憶體2816A屬於+5V電擦除可編程只讀記憶體,因此擴展電路不需要專門配置寫入電源,擴展電路如圖5-23所示。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展EEPROM作為程式記憶體時,它與單片機的連接方法和EPROM作為程式記憶體與單片機的連接方法幾乎完全相同,圖中片選信號端與P2.7相連,故2816A的地址為0000H~07FFH,端可直接接地。當系統中有其他程式記憶體時,要統盤考慮編址。2.用EEPROM2817A擴展數據記憶體圖5-24是用2817A晶片的擴展記憶體電路,由於8031內部無程式記憶體,因此該電路採用了將片外程式記憶體和片外數據記憶體合併的方法,使2817A同時兼作片外程式記憶體和片外數據記憶體。上一頁下一頁返回5.2MCS-51單片機的外部記憶體的擴展2817A的讀操作與普通EEPROM相同,而寫操作有所不同。下圖中RDY/與8031的通信是採用查詢方式,通過P1.0來查詢RDY/狀態,當一次位元組寫入完畢,RDY/線變為高電平,以此判斷該位元組是否擦寫完畢。也可採用中斷方式,RDY/引腳可與(或)相連,這樣,每當2817A擦寫完一個位元組便可向8031提出中斷請求。由於RDY/引腳在RDY有效期間為高電平,故應該接一上拉電阻到+5V電源上,以保持高電平。上一頁返回5.3MCS-51單片機並行I/O介面的擴展輸入/輸出(I/O)電路是單片機應用系統中必不可少的單元電路之一,它涉及數據輸入電路及經過單片機處理後的數據輸出電路。單片機應用系統要對輸入信號進行比較、判斷或運算處理後,輸出適當的控制信號去控制外部設備。輸入/輸出量可以是模擬信號,也可以是開關信號。對於模擬輸入信號,要經過放大、限幅、低通濾波電路後,再經過模/數(A/D)轉換電路變換成數字信號後,單片機才能處理。同樣,單片機的處理結果也需要經過數/模(D/A)電路轉換、平滑濾波後,才能控制外部模擬設備。有關單片機模擬與數字信號的處理問題,後面的章節將做以詳細說明,本節主要介紹數字信號的輸入/輸出(I/O)介面電路。下一頁返回5.3MCS-51單片機並行I/O介面的擴展MCS-5l單片機共有4個8位並行I/O口,但這些I/0口不可能完全提供給用戶使用。只有對於片內有ROM/EPR0M的805l單片機,在不使用外部記憶體擴展時才允許這4個I/O口作為用戶I/O口使用。然而對於大多數8051而言,當需外部記憶體擴展時,MCS-5l單片機可提供給用戶使用的I/O口只有Pl口和部分P3口線。總之,在大部分的MCS-5l單片機應用系統設計中都不可避免地要進行I/O口的擴展。在MCS-51單片機中,擴展的I/O口採取與數據記憶體相同的尋址方法。所有擴展I/O口以及通過擴展I/O口連接的外設均與片外數據記憶體統一編址,所以對片外I/O口的輸入/輸出指令就是訪問片外RAM的指令。

上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展擴展I/O口所用晶片主要有通用可編程I/O晶片和TTL、CMOS鎖存器、緩衝器電路晶片兩大類,本節將做重點講解。I/O擴展方式主要有匯流排並行擴展法和串行口擴展法,串行口擴展法在下面的章節中具體介紹,本節將介紹幾種匯流排並行擴展法的具體電路。5.3.1通過鎖存器、觸發器的I/O口擴展電路1.I/O介面電路的功能單片機與週邊設備之間的數據傳送稱為輸入/輸出(Input/Output)。實現輸入輸出既需要有把週邊設備與電腦連接起來的硬體電路—輸入/輸出(I/O)介面電路,又需要編制控制輸入/輸出介面電路工作的程式。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展輸入/輸出介面電路的種類很多,某些通用積體電路晶片可以用作I/O介面,但更大量的是專門為電腦設計的I/O介面電路晶片。一般地說,I/O介面電路有以下的功能:(1)鎖存數據由於週邊設備的工作速度與電腦不同,傳送數據的過程中常常需要等待。為此,I/O介面電路中要設置鎖存器,用以暫存數據。例如,當按鍵按下時,按鍵的代碼要送人I/O電路中的鎖存器鎖存,待電腦空閒時讀取。(2)資訊轉換單片機通信時,為了節省傳輸線,資訊常以串行方式逐位傳送;而在單片機內部,為加快運行速度,資訊卻以並行方式傳送。為此,單片機發送數據時,I/O介面電路要將並行數據轉換成串行數據;而接收數據時,要將串行數據轉換成並行數據。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展(3)電平轉換電腦輸入/輸出的資訊大多採用TTL電平,高電平+5v代表“1”,低電平0V代表“0”。如某週邊設備的資訊不是TTL電平,那麼在這些週邊設備與單片機連接時,I/O介面電路要完成電平轉換的工作。(4)三態緩衝在數據匯流排上常接有多個數據源,它們公用匯流排的系統數據通道,但在同一時刻只能有一個數據源的數據使用匯流排,因此必須讓其他數據源暫時隔離,這就需要介面電路具有供數據輸入三態緩衝的功能。(5)地址解碼單片機通常具有多個週邊設備,每個週邊設備應賦予一個唯一的地址,以便單片機識別。I/O介面電路中的地址解碼器能根據單片機送出的地址找到指定的週邊設備。(6)傳送聯絡信號許多週邊設備與電腦間要傳送狀態資訊和控制資訊,這需要由I/O介面電路連接。

上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展2.通過鎖存器74LS244作擴展輸入、74LS273作擴展輸出的I/O電路採用TTL電路或CMOS電路鎖存器、三態門電路作為I/O口擴展晶片,是單片機應用系統中較常採用的方法。這種I/O口一般都是通過PO口擴展,具有電路簡單、成本低、配置靈活的優點。一般在擴展單個8位輸出或輸入口時,十分方便。可以作為I/O擴展晶片使用的TTL晶片有:373、377、244、245、273、367等。在實際應用中可根據系統對輸入、輸出的要求,選擇合適的擴展晶片。圖5-25為採用74LS244作擴展輸入、74LS273作擴展輸出的簡單I/O電路。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展上圖中,P0口為雙向數據線,既能從74LS244輸人數據,又能將數據傳送給74LS273輸出。輸出控制信號由P2.0和合成,當二者同時為0電平時,“或”門輸出為0,將P0口的數據鎖存到74LS273,其輸出控制著發光二極體LED。當某線輸出0電平時,該線上的LED發光。輸入控制信號由P2.0和合成,當二者同時為0電平時,“或”門輸出0,選通74LS244,將外部資訊輸入到匯流排。當與244相連的按鍵開關無鍵按下時,輸入全為1,若按下某鍵,則所在線輸人為O。可見,輸入和輸出都是在P2.0為0時有效,因此,它們的端口地址都為FEFFH(實際只要保證P2.0=0,其他地址位無關,假定全為1),即佔有相同的地址空間,但由於分別用和信號控制,因而在邏輯上不會發生衝突。系統中若有其他擴展RAM,或其他輸入/輸出介面,則可用線選法或解碼法將地址空間區分開。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展5.3.2利用串入並出及併入串出晶片擴展I/O口在速率要求不高的情況下,可利用74LSl64、74HC594、74HC595等“串入並出”晶片擴展輸出口;利用74LSl65、74HC597等“併入串出”晶片擴展輸入口,也是一種簡單、實用的I/O口擴展方式。例如在圖5-26中使用8051晶片三根I/O線,借助兩片74HC595即可獲得16根輸出線。假設擴展輸出引腳D7~D0輸出資訊在單片機記憶體中的映象地址為DATAl,Dl5~D8輸出資訊在單片機記憶體中的映像地址為DATA2,則可通過以下程式段將數據串行輸出到Dl5~DO引腳。

上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展DATA1DATA48H;說明假設輸出數據存放在48H、49H單元中SDIBITP1.0;說明串行數據輸入接P1.0引腳SRCLKBITP1.1;說明串行移位脈衝接P1.1引腳RCLKBITP1.2;說明並行輸出鎖存脈衝接P1.2引腳;----串行數據輸出程式段----CLRRCLK;並行輸出鎖存脈衝置為低電平MOVR0,#DATA1;將48H單元內容送入記憶體MOVR2,#02H;定義輸出位元組數為兩次上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展LOOP1:MOVA,@R0;取數據

MOVR3,#08H;右移八次LOOP2:CLRSRCLK;串行移位脈衝初始值為低電平

RRCA;帶進位迴圈右移,最低位數據送入CyMOVSDI,C;Cy內容送入SDINOP;等待

SETBSRCLK;允許串行輸出

DJNZR3,LOOP2;迴圈,依次輸出低8位

INCR0;RO加1,指向高8位

DJNZR2,LOOP1;迴圈,依次輸出高8位

SETBRCLK;並行輸出兩個位元組數據上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展5.3.3利用8155/8156可編程I/O晶片擴展MCS-51的I/O口可編程I/O介面是指其功能可由單片機的指令來加以改變的介面晶片,可使一個介面晶片執行多種不同的介面功能,因此使用十分靈活,當它連接單片機和外設時,只需要很少的外加硬體。目前,MCS-51單片機中常用的可編程介面晶片有兩種:一種是通用的可編程I/O介面8255晶片,一種是含256個位元組的RAM和14位定時/計數器的可編程I/O介面8155/8166晶片。由於8155/8166晶片功能強大,下麵做以詳細介紹。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展8155/8156為單一+5V工作電源。如上所述,8155/8156可編程I/O擴展晶片除了可提供三個可編程的I/O端口(A、B均為8位I/O口,C口為6位I/O端口)外,還提供了256位元組的SRAM存儲單元和一個14位可編程定時/計數器,並內置了地址鎖存器,地址線可直接與MCS-5l系列單片機的P0口相連,無需使用74LS373作地址鎖存器。當系統所需外部數據記憶體容量不大時,由1片單片機和1片8155即可構成較多I/O端口的單片機應用系統。1.內部結構及引腳功能8155/8156晶片內部結構及引腳排列如圖5-27所示。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展引腳功能如下:ALE—

地址鎖存信號,在ALE信號下降沿將AD7~ADO地址信號鎖存到8155/8166內部的地址鎖存器中,以便將AD7~ADO作為數據線使用(輸入或輸出)。ALE信號可直接與MCS-51單片機的地址鎖存信號ALE相連。AD7~ADO—

地址/數據匯流排,雙向,可直接與MCS-5l系列單片機的P0口相連。

片選信號,對於8155晶片來說,低電平有效;對於8156晶片來說,高電平有效。這是8155晶片與8156晶片的唯一區別。IO/—I/O端口、命令/狀態寄存器及內部RAM選擇信號。當IO/=0,即低電平時,讀寫對象是8155/8156內部256位元組的SRAM;當IO/=1,即高電平時,操作對象是I/O口或內部寄存器(包括命令/狀態寄存器及定時/計數器的高6位或低8位)。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展

讀I/O口或內部RAM選通信號,輸入低電平有效。

寫I/O口、命令及狀態寄存器、內部RAM選通信號,輸入低電平有效。PA7~PA0—A口I/O引腳,雙向,輸出時具有鎖存功能,但輸入不鎖存。PB7~PB0—B口I/O引腳,雙向,輸出時具有鎖存功能,但輸入不鎖存。PC5~PC0—C口I/O引腳,雙向,輸出時具有鎖存功能,但輸入不鎖存。TMRIN—

定時/計數器輸入端。用來外部計數脈衝的輸入。

定時/計數器輸出引腳,輸出信號形式(方波或脈衝信號)由其內部定時/計數器工作方式決定。RESET—

複位信號輸入引腳,高電平有效。只要RESET引腳保持5s高電平信號,即可使8155/8166晶片進入複位狀態,複位後,各端口均置為輸入方式。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展2.8155/8166的工作方式與基本操作由於8155/8166晶片結構極其相似,它們的工作方式和基本操作完全相同,我們以8155為例,詳盡介紹它們的功能和操作。8155可作為通用I/O口,也可作為片外256位元組RAM及定時/計數器使用,具體情況如下。(1)作片外256位元組RAM在這種工作狀態使用時,將IO/引腳置低電平,這時8155只能作片外RAM使用,其尋址範圍由片選線(高位地址解碼)和AD0~AD7決定,與應用系統中的其他數據記憶體統一編址。使用片外RAM的讀/寫操作指令“MOVX”。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展(2)作擴展I/O使用8155作擴展I/O口時,IO/引腳必須為高電平,這時PA、PB、PC口的口地址低8位分別為1、2、3(假設地址無關位為0)。8155的I/O口工作方式選擇是通過對8155內部命令寄存器送命令字來實現的。命令寄存器由8位鎖存器組成,只能寫入而不能讀出。命令字每位定義如圖5-28所示。8155的工作狀態由狀態寄存器指示,與命令寄存器屬同一地址,只能讀出不能寫入。狀態字格式如圖5-29所示。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展端口操作:A口寄存器和B口寄存器有完全相同的功能,可工作於基本I/O方式或選通I/O方式。C口可工作於基本I/O方式,也可作為A口、B口選通方式工作時的狀態控制信號線。當8155設定為方式1和方式2時,A口、B口、C口均工作於基本輸入/輸出方式,由“MOVX”類指令進行輸入/輸出操作;設定為方式3時,A口定義為選通輸入/輸出,由C口低3位作A口聯絡線,C口其餘位作I/O線;設定為方式4時,A口、B口均定義為選通輸入/輸出方式,由C口作為A口、B口的聯絡線,其邏輯組態如圖5-30所示。C口工作方式與其各位的關係見表5-3。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展AINTR、BINTR為中斷請求輸出線,作為單片機的中斷源,高電平有效。當8155的A口或B口緩衝器接收到設備打入的數據或設備從緩衝器中取走數據時,中斷請求輸出線升高(僅當命令寄存器相應中斷允許位為1),向單片機請求中斷,單片機對8155的相應I/O口進行一次讀/寫操作後,中斷請求輸出線自動變為低電平。BF為I/O口緩衝器標誌輸出線。緩衝器存有數據時,BF為高電平,否則為低電平。為設備選通信號輸入線,低電平有效。上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展在I/O口設定為輸出口時,仍可用對應的口地址執行讀操作,讀取輸出口的內容;設定為輸入口時,輸出鎖存器被清除,無法將數據寫入輸出鎖存器。所以每次通道由輸入方式轉為輸出方式時,輸出端總是低電平。8155複位時,清除所有輸出寄存器,3個端口都為輸入方式。圖5-31為8051與8155介面的一種方案。根據圖中IO/和等連接方法,P2.1=0,P2.0=0時,選中RAM單元,地址為0000H~00FFH;當P2.1=0,P2.0=1時,選中I/O口,這時的地址分佈為:上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展0100H命令/狀態字0101HA口0102HB口0103HC口0104H計數值低8位0105H計數值高6位和方式寄存器若該8155擔任某鍵盤顯示介面,A口可為基本輸出,B口為基本輸入,C口為輸出,則命令字為00001101B=0DH,方式設定如下:MOVDPTR,#0100H;選中命令寄存器MOVA,#0DH;命令字MOVX@DPTR,A;命令字寫入命令寄存器上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展3.作定時/計數器用8155的可編程定時/計數器實際上是一個14位減法計數器,在TMRIN端輸入計數脈衝,計滿溢出時,由輸出脈衝和方波。當TMRIN接外脈衝時為計數方式,接系統時鐘時,可作為定時方式,但需要注意晶片允許的最高計數頻率。定時/計數器由兩位元組組成,初值占14位,其餘2位定義輸出方式,格式如下圖5-32所示:

上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展其中,M2、M1位輸出方式如表5-4:使用時,先把計數長度和輸出方式裝入定時器的兩個位元組。計數長度為2~3FFFH之間的任意值。然後通過命令寄存器的最高2位控制計數器的啟動和停止。以計數值是是8為例,所謂單次方波,是從啟動計數開始,前4個計數輸出高電平“1”,後4個計數輸出低電平“0”。若計數值是奇數,則高電平比低電平多一個計數值。如果要使8155的定時/計數器作為方波發生器,輸出方波的頻率為TMRIN輸入時鐘頻率的24分頻,則相應的初始化程式如下:上一頁下一頁返回5.3MCS-51單片機並行I/O介面的擴展MOVDPTR,#0104H;指向定時/計數器低位元組寄存器MOVA,#18H;給低位元組寄存器賦定時初值MOVX@DPTR,AINCDPTR;指向定時/計數器高位元組寄存器MOVA,#40H;設定時/計數器為方式1MOVX@DPTR,AMOVDPTR,#0100H;指向8155命令寄存器MOVA,#0C2H;啟動開始計數,PB口為輸出,PA、PC為輸入MOVX@DPTR,A上一頁返回5.4MCS-51單片機的串行介面單片機與外界的資訊交換稱為通信。基本的通信方式有兩種:並行通信和串行通信。前者傳送數據的特點是各位同時發送或接收,而後者傳送數據的特點是各位按順序一位一位地發送或接收。在並行通信中,一個並行數據占多少位二進位數,就要多少根傳輸線。這種方式的特點是通信速度快,但傳輸線多,價格較貴,適合近距離傳輸,前面關於記憶體的擴展、匯流排法擴展I/O口電路的通訊方式均為並行傳送。而串行通信僅需一到兩根傳輸線即可。故在長距離傳送數據時,比較經濟。但由於它每次只能傳送一位,所以傳送速度較慢。圖5-33(a)和(b)分別為單片機與外設之間的並行通信及串行通信的連接方法。本節將介紹串行口的概念、原理及MCS-51串行介面的結構、原理及應用。下一頁返回5.4MCS-51單片機的串行介面5.4.1串行通信概念下麵介紹串行通信中的幾個概念。5.4.1.1傳送編碼因為單根通信線僅能表示0和l兩種狀態,而需傳送的資訊中有字母、數字和字元等,種類很多,這就要用二進位數對傳送字元編碼。編碼的種類很多,常用的主要有美國標準資訊交換碼ASCII和擴展的BCD碼EBCDIC(Extended。BinaryCodedDecimalInterchangeCode)。後一種是8位編碼,較常用在同步通信中。上一頁下一頁返回5.4MCS-51單片機的串行介面5.4.1.2同步和非同步方式串行通信分同步和非同步兩種方式。1.非同步通信ASYNC(AsynchronousDataCommunication)t

在非同步通信中數據或字元是分為一幀一幀地傳送,在幀格式中先用一個起始位“0”表示字元的開始,然後是5~8位數據,規定低位在前,高位在後,接下來是奇偶校驗位(可省略),最後一個停止位“1”表示字元的結束,構成一幀。由於非同步通信每傳送一幀有固定格式,通信雙方只需按約定的幀格式來發送和接收數據,所以硬體結構比同步通信方式簡單;此外它還能利用校驗位檢測錯誤,所以這種通信方式應用較廣泛。上一頁下一頁返回5.4MCS-51單片機的串行介面2.同步通信在同步通信中,在數據或字元開始處就用一同步字元來指示(常約定1~2個),由時鐘來實現發送端和接收端同步,一旦檢測到與規定的同步字元符合,下麵就連續按順序傳送數據。因為同步通信數據塊傳送時去掉了字元開始和結束的標誌,所以其速度高於非同步傳送,但這種方式對硬體結構要求較高。5.4.1.3串列傳輸速率(Baudrate)串列傳輸速率是非同步通信中對數據傳送速率的規定。其意義是每秒鐘傳送多少位二進位數。假如數據傳送的速率每秒為120個字元,每個字元由1個起始位、8個數據位和1個停止位組成,則其傳送串列傳輸速率為:10×120=1200b/s=1200波特每一位的傳送時間即為串列傳輸速率的倒數:Td=1/1200=0.833ms非同步通信的傳送速度一般在50到9600波特之間,常用於單片機雙機或多機之間的通信等。上一頁下一頁返回5.4MCS-51單片機的串行介面5.4.1.4通信方向在串行通信中,如果單片機的通信介面只能發送或接收,這種單向傳送的方法稱單工傳送。而通常數據需在兩機之間雙向傳送,這種方式稱雙工傳送。在雙工傳送方式中,如果接收和發送不能同時進行,只能分時接收和發送,這種傳送稱為半雙工傳送;若兩機的發送和接收可以同時進行,則為全雙工傳送,如圖5-34所示。5.4.1.5串行通信介面種類根據串行通信格式及約定(如同步方式、通信速率、數據幀格式等)的不同,形成了許多串行通信介面標準,如常見的UART(通用串行非同步通信介面)、USB(通用串行匯流排介面)、I2C匯流排、SPI匯流排(同步通信)、485匯流排、CAN匯流排介面等。下麵結合MCS-51單片機介紹常用UART介面。上一頁下一頁返回5.4MCS-51單片機的串行介面1.RS-232C通信介面(1)介面信號

RS-232C通信介面又稱RS-232C匯流排標準。它向外部的連接器有25針和9針兩種“D”型插頭,各針的功能及排列如圖5-35(a)、(b)所示。(2)電平轉換單片機電平通常是TTL電平,它與RS232C電平不相容,必須進行電平轉換。RS-232C與TTL的電平轉換的晶片有MCl488傳輸線驅動器和MCl489傳輸線接收器。由於MCl488和MCl489需要±15v或±12V供電,造成了使用不便,現常用+5v單電源供電的轉換晶片,如MAXIM公司的MAX232晶片,它可以實現RS-232C與TTL/CMOS電平之間的轉換。MAX232的組成及引腳圖如圖5-36所示。上一頁下一頁返回5.4MCS-51單片機的串行介面2.RS-422A通信介面

(1)介面信號RS-422A通信介面是對RS-232C通信介面的改進,它採用平衡傳輸電氣標準,輸人/輸出均採用差分驅動,因此具有更強的抗干擾能力,傳送速率也大大提高。它向外部的連接器常採用9針“D”型插頭,各針的功能及排列如圖5-37所示。(2)電平轉換能夠將TTL電平轉換為RS-422A電平的常用晶片有SN5174、MC3487等。能夠將RS-422A電平轉換為TTL電平的常用晶片有SN75175、MC3486等。SN75174、SN75175分別具有三態輸出的單片差分驅動器和接收器,符合E認標準的RS-422A規範,它採用+5V單電源供電,功能上分別可以與MC3487、MC3486互換。圖5-38是用SN75174、SN75175實現的電平轉換電路圖。

上一頁下一頁返回5.4MCS-51單片機的串行介面5.4.2MCS-51單片機串行通信口控制及初始化MCS-51系列單片機內部有一個功能很強的全雙工串行非同步通信介面,它既可以作為UART使用,能方便地構成雙機或多機通信系統,也可以在外接移位寄存器後用來擴展並行I/0口。5.4.2.1串行口的結構與控制圖5-39所示為MCS-51系列單片機的串行口結構示意圖。它主要由兩個串行數據緩衝器(SBUF)、發送控制器、發送端口、接收控制器和接收端口等組成。串行口的工作方式和串列傳輸速率由專用寄存器SCON和PCON控制。上一頁下一頁返回5.4MCS-51單片機的串行介面1.串行數據緩衝器(SBUF)MCS-51系列單片機串行口有兩個串行數據緩衝器,一個用於發送數據,另一個用於接收數據,可以同時用來發送和接收數據。發送緩衝器只能寫入,不能讀出。接收緩衝器只能讀出,不能寫入。兩個緩衝器使用同一符號SBUF,共用一個地址99H,根據讀、寫指令來確定訪問其中哪一個。

發送數據時,執行一條將數據寫入SBUF的傳送指令,即可將要發送的數據按事先設置的方式和串列傳輸速率從TXD端串行輸出。一個數據發送完畢後,串行口能向單片機提出中斷請求,發送下一個數據。接收數據時,當一幀數據從RXD端經過接收端口(移位寄存器)全部進入SBUF後,串行口發出中斷請求,通知單片機接收這一數據。CPU執行一條讀SBUF的指令,就能將接收的數據送人某個寄存器或存儲單元。與此同時,接收端口接收下一幀數據。為了避免前後兩幀數據的重疊,接收器通常是雙緩衝的。上一頁下一頁返回5.4MCS-51單片機的串行介面

2.串行口控制寄存器(SCON)SCON用於控制串行口的工作方式,同時還包含要發送和接收到的第9位數據及串行口中斷標誌位。該寄存器的位元組地址為98H。各位的定義如下:上一頁下一頁返回SM0SM1SM2RENTB8RB8TIRISCON(98H)9FH9EH9DH9CH9BH9AH99H98H5.4MCS-51單片機的串行介面SM0、SM1:串行口工作方式選擇位,由軟體設定。共為4種方式,見表5-5。其中fOSC是MCS-51的振盪頻率。SM2:多機通信控制位,由軟體設定。串行口的方式2和方式3適用於多機通信。在方式2或方式3中,當SM2=1時,若接收到的第9位數據(RB8)為0,則不能置位RI;只有收到RB8=1,才能置位RI,SM2=1用於多機通信中,只接收地址幀,不接收數據幀。當SM2=0時,只要接收到一幀資訊(無論是地址還是數據),RI都被置位。雙機通信時,通常使SM2=0。在方式0中,SM2必須為0。上一頁下一頁返回5.4MCS-51單片機的串行介面REN:允許接收控制位,由軟體設定。REN=1時允許接收,REN:0時禁止接收。TB8:方式2和方式3中要發送的第9位數據,由軟體設定,用作奇偶校驗位或地址/數據標誌位,作後者使用時多用於多機通信。RB8:方式2和方式3中接收到的第9位數據,在方式1中,如果SM2:0,則RB8為收到的停止位;方式0不使用RB8。3.電源控制寄存器(PCON)PCON主要用於CMOS型單片機的低功耗電源控制,其格式如下:低四位用於電源控制,與串行介面無關。最高位SMOD用於對串行口串列傳輸速率的控制,當SMOD=1時串列傳輸速率增大一倍,複位時,SMOD=0。PCON各位的格式如下:上一頁下一頁返回SMOD——————GF1GF0PDIDLPCON

(87H)D7D6D5D4D3D2D1D05.4MCS-51單片機的串行介面5.4.3串行口工作方式及應用5.4.3.1串行口的工作方式如前所述,MCS-5l單片機的串行口有4種工作方式—方式0、方式1、方式2和方式3。5.4.3.1.1方式0當SM0=0、SMl=0時,串行口工作於方式0(移位寄存器方式),此時為同步通信。在方式0下,RXD(P3.0)為數據輸入/輸出端,TXD為(P3.1)同步脈衝輸出端。發送或接收數據的長度為8位,低位在前,高位在後。方式0的串列傳輸速率固定為fOSC/12,也就是每個機器週期傳送一位數據。圖5-40為MCS-51單片機串行口同步通信方式0的工作原理圖。上一頁下一頁返回5.4MCS-51單片機的串行介面1.發送過程當CPU執行了任何一條以SBUF為目標運算元的指令(如MOVSBUF,A)後,就啟動了發送過程。當把要發送的數據寫入串行口發送緩衝器SBUF後,串行口即將此8位數據以fOSC/12的串列傳輸速率從RXD引腳輸出(低位在前,高位在後)。發送完8位數據後,由硬體將TI標誌置位。再次發送數據之前,必須由軟體將TI清零。從寫SBUF到TI置位,相隔9個機器週期,這期間完成了發送1幀數據的全過程。方式0的發送時序如圖5-41所示。2.接收過程在允許接收位REN為1和RI為0時,可啟動接收過程。此時RXD為數據輸人端,TXD為同步信號輸出端。串行輸入的串列傳輸速率為fOSC/12。當接收完8位數據後,由硬體將RI標誌置位。要再次接收時,必須由軟體將RI標誌清零。從啟動接收到RI置位,相隔9個機器週期,這期間完成了接收1幀數據的全過程。方式0的接收時序如圖5-42所示。

上一頁下一頁返回5.4MCS-51單片機的串行介面

5.4.3.1.2方式1當SM0=0、SMl=1時,串行口工作於方式1。方式l為串列傳輸速率可變的8位非同步通信方式,由TXD發送,RXD接收。一幀數據為10位:1位起始位(低電平)、8位數據位(低位在前)和1位停止位(高電平)。串行口非同步通信的工作原理見圖5-43。

1.發送過程當單片機執行了一條將數據寫入發送緩衝器SBUF的指令後,就啟動了發送過程。當發送完一幀數據時,發送中斷標誌TI被置位。串行口方式1發送時序如圖5-44所示。上一頁下一頁返回5.4MCS-51單片機的串行介面2.接收過程當REN=l時為允許接收。接收器開始檢測RXD引腳的信號,採樣頻率為串列傳輸速率的16倍。當檢測到RXD引腳上有從“1”到“0”的跳變時,就啟動接收器接收。先接收起始位,然後接收一幀的其餘資訊。如果接收不到有效的起始位,則重新檢測負跳變。為了保證接收數據的正確無誤,對每一位數據的檢測採用“測三取二”的方法。即把一個位週期分為16個狀態,在第7、8、9狀態時檢測RXD引腳上的電平,取其大於等於2次的相同值作為測得值。此檢測方法是在每位數據的中間位置採樣,這樣即使接收端的串列傳輸速率有些差別,也不致發生錯碼或漏碼。上一頁下一頁返回5.4MCS-51單片機的串行介面若採用方式1接收時,必須滿足以下兩個條件:一是RI=0,即沒有中斷請求或上幀數據接收完成時發出的中斷請求已被回應,SBUF中存放的上一幀數據已被取走;二是SM2=0或接收到的停止位為1,則接收數據有效。將8位數據送入SBUF,停止位送RB8,RI置位。如果上述兩個條件不滿足,則接收到的這一幀數據就會丟失,接收器會重新開始檢測RXD引腳上的負跳變。方式1的接收時序如圖5-45所示。5.4.3.1.3方式2和方式3當SMO=l、SMl=0時,串行口工作於方式2;當SMO=1、SMl=1時,串行口工作於方式3。這兩種方式都是9位非同步通信方式,適用於多機通信,它們的區別僅在於串列傳輸速率不同。在方式2或方式3下,數據由TXD發送,由RXD接收。一幀數據為1l位:1位起始位(低電平)、8位數據位(低位在前)、l位可編程位(第9位數據,用做奇偶校驗或地址/數據選擇)和l位停止位。與方式l相比,這兩種方式多了一位可編程位。發送時,第9位數據為TB8;接收時,第9位數據送人RB8。上一頁下一頁返回5.4MCS-51單片機的串行介面1.發送過程當CPU執行一條寫入發送緩衝器SBUF的指令後,便立即啟動發送。發送的數據由TXD端輸出,第9位數據為SCON中的TB8。發送完一幀資訊後,中斷標誌TI被置位。在發送下一幀資訊之前,TI必須由軟體清零。第9位數據可作為數據的奇偶校驗位,也可作為多機通信中的地址/數據資訊標誌位。2.接收過程當REN=1時,允許接收接收器開始檢測RXD引腳的信號,檢測和接收數據的方法與方式1相似。當接收器收到第9位數據後,若同時滿足以下兩個條件:一是RI=0,二是接收到的第9位數據為l,則接收數據有效,8位數據裝人SBUF,第9位數據裝入RB8,並由硬體將RI置位。若不滿足這兩個條件,則接收到的這一幀數據將丟失,接收器將重新開始檢測起始位。方式2或方式3的發送與接收時序與方式1相似,僅僅是多了一位數據TB8或TB8。上一頁下一頁返回5.4MCS-51單片機的串行介面5.4.3.1.4串列傳輸速率的設置MCS-5l系列單片機串行通信的串列傳輸速率取決於串行口的工作方式。方式O的串列傳輸速率是固定的,為fOSC/12。方式2的串列傳輸速率有兩種,它取決於SMOD(PCON.7),當SMOD=1時串列傳輸速率為fOSC/32,當SMOD=0時為fOSC/64。由於PCON無位尋址功能,所以通常通過以下指令清零或置l。ANLPCON,#7FH;使SMOD=OORLPCON,#80H;使SMOD=1當串行口工作於方式l和方式3時,串列傳輸速率取決於定時器/計數器l的溢出率及SMOD,並有如下關係式:串列傳輸速率=2SMOD×T1溢出率/32

上一頁下一頁返回5.4MCS-51單片機的串行介面式中Tl溢出率=l/T1溢出週期,而溢出週期即為T1的定時時間。在應用時,往往根據所需的串列傳輸速率,先選取SMOD,並計算出T1的溢出率或溢出週期,然後計算T1的時間常數。T1可以工作在方式0、方式1和方式2。但由於方式2為自動裝入時間常數的8位定時器,所以使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论