第06章MCS-51單片機存儲器擴展與并行IO接口擴展_第1頁
第06章MCS-51單片機存儲器擴展與并行IO接口擴展_第2頁
第06章MCS-51單片機存儲器擴展與并行IO接口擴展_第3頁
第06章MCS-51單片機存儲器擴展與并行IO接口擴展_第4頁
第06章MCS-51單片機存儲器擴展與并行IO接口擴展_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

并行I/O口的應用與擴展I/O接口技術概述存儲器的擴展第6章存儲器擴展與并行I/O接口擴展第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展只讀存儲器ROM,正常工作時只能讀出不能寫入,斷電后信息可長期保存半導體存儲器隨機讀寫RAM,工作中既可讀出數(shù)據也可寫入數(shù)據,但斷電后其中的信息將會丟失只讀存儲器ROM第6章存儲器擴展與并行I/O接口擴展PROM:用戶自行寫入程序,但只能寫一次EPROM:用戶可多次編程,用紫外燈照射可擦除信息EEPROM:通過加電信號可直接擦除其中的信息掩膜ROM:其中的信息在制造時由掩膜工藝固化進去第一節(jié)51單片機存儲器擴展隨機讀寫RAM第6章存儲器擴展與并行I/O接口擴展動態(tài)RAM:用電容上的電量來表示信息,電路簡單,集成度高。但要定時刷新靜態(tài)RAM:用觸發(fā)器存儲信息,集成度低,容量小,但無需刷新第一節(jié)51單片機存儲器擴展1)存儲容量存儲器容量=單元數(shù)×數(shù)據線位數(shù).1個字節(jié)(1B)=8位二進制數(shù)。1K=1024例如:(1024×8)位=1K個字節(jié)=1KB半導體存儲器的指標第一節(jié)51單片機存儲器擴展2)存取速度指從CPU給出有效的存儲器地址到存儲器給出有效數(shù)據所花費的時間。存取時間越小,存儲器的存取速度就越快。通常,半導體存儲器的最大存取時間從幾十到幾百毫微秒對于80C51系列,內部存儲器都達到64KB,用戶沒有必要再擴展外部程序存儲器。8031內部無程序存儲器,需要在外部進行擴展。典型的程序存儲器常用Intel27系列EPROM6.1.2程序存儲器及其擴展第一節(jié)51單片機存儲器擴展型號容量地址線數(shù)27162KB1127324KB1227648KB132712816KB142725632KB152751264KB1627128引腳功能A0~A13:地址輸入線,可尋址214=16KD7~D0:數(shù)據線引腳,用于傳送數(shù)據,讀存儲器時為數(shù)據輸出編程時為數(shù)據輸入CE:片選輸入端,低電平允許本芯片工作OE:輸出允許,低電平時,被選中的單元中數(shù)據才輸出PGM:編程控制端VCC:工作電源VPP:編程電源GND:直流地工作方式引

腳CEOEPGMVPPVCCD7~D0讀出低低高VCCVCC輸出維持高××VCCVCC高阻編程低高編程負脈沖VPPVCC輸入編程校驗低低高VPPVCC輸出禁止編程高××VPPVCC高阻P0口在地址ALE下降沿后傳送數(shù)據,為了將它們分離出來,需要外加地址鎖存器74LS37374LS373內含8個D觸發(fā)器,輸入為D0~D7,依次接P0口,輸出為Q0~Q7,依次27128的地址線A0~A7,OE接地,Q端有效,G端接51機的ALE,高電平時,Q端隨D端變化,低電平時,Q端保持。27128的CE接地單片機的PSEN接27128的OE,當執(zhí)行MOVC指令,PSEN低電平時,就將27128選中地址的數(shù)據讀入。單片機的EA可接地。2.單片程序存儲器的擴展單片程序存儲器的擴展第一節(jié)51單片機存儲器擴展第一節(jié)51單片機存儲器擴展根據硬件連接,該27128的地址范圍

P2.7P2.6P2.5···········P2.1P2.0P0.7P0.6·····P0.3P0.2P0.1P0.0

00

00

1

1

1

1

1

1

0000000011111111=0000H=3FFFH

01

01

1

1

1

1

1

1

0000000011111111=4000H=7FFFH

10

10

1

1

1

1

1

1

0000000011111111=8000H=BFFFH

11

11

1

1

1

1

1

1

0000000011111111=F000H=FFFFH也就是說地址0000H,4000H,80000H,F(xiàn)0000H均指向27128同一個單元。多片存儲器擴展的關鍵問題是要區(qū)分CPU是訪問哪一片EPROM。利用譯碼器進行片選,這種片選方法稱為譯碼法。線選法通常是將單片機的高8位地址線A8~A15中的某幾根與外部接口芯片的片選端一一相連,當該地址線為0時(對0選通有效的外部芯片而言),與該地址線相連接的外部芯片被選通。必須注意一個時刻,選通線只能1條為0,否則就造成總線競爭了。只讀存儲器ROM的密度普遍提高,目前ROM芯片單片容量已達到或超過64KB,外部擴展程序存儲器時,單片即可滿足需要,一般都采用線選法或用直接選中。3.多片程序存儲器的擴展第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展8031單片機譯碼法擴展四片27128第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展各片27128的地址范圍27128編號A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址范圍(Y0=0)0000000000000000…

…00111111111111110000H……3FFFH(Y1=0)0100000000000000…

…01111111111111114000H……7FFFH(Y2=0)1000000000000000…

…10111111111111118000H……BFFFH(Y3=0)1100000000000000…

…1111111111111111C000H……FFFFH第一節(jié)51單片機存儲器擴展6.1.3數(shù)據存儲器及其擴展1.Intel62系列SRAM型號容量地址線數(shù)61162KB1162648KB136212816KB146225632KB15擴展片外數(shù)據存儲器的地址線也是由P0口和P2口提供的,所以與外部程序存儲器并聯(lián)使用地址和數(shù)據線,但數(shù)據存儲器的讀和寫由WR和RD控制,而程序存儲器的讀由PSEN控制。6264引腳功能A0~A12:地址線引腳,可尋址213=8192=8KD7~D0:數(shù)據線引腳,用于傳送讀寫數(shù)據CS和CS1:CS=0且CS1=1時允許本芯片工作OE:輸出允許WE:寫允許信號,低電平寫入,高電平讀出VCC:工作電源GND:直流地工作方式CSCS1WEOE功

能讀出0110從6264讀出數(shù)據到D7~D0寫入0101將D7~D0數(shù)據寫入6264未選通11××輸出高阻數(shù)據存儲器擴展與程序存儲器擴展的連接方法基本相同。不同的只是控制信號不一樣。在程序存儲器擴展中,單片機使用PSEN作為讀選通信號,而在數(shù)據存儲器擴展中,單片機則使用RD和WR分別作為讀和寫的選通信號第6章存儲器擴展與并行I/O接口擴展2.數(shù)據存儲器的擴展第一節(jié)51單片機存儲器擴展第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展采用線選法擴展三片6264(注意P2.5,P2.6,P2.7同一時刻只能有一個為0)第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展各片6264的地址范圍6264編號A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址范圍IC16264(P2.5=0)1100000000000000…

…1101111111111111C000H……DFFFHIC26264(P2.6=0)1010000000000000…

…1011111111111111A000H……BFFFHIC36264(P2.7=0)0110000000000000…

…01111111111111116000H……7FFFH

8031單片機內部沒有程序存儲器,必須外接。而內部RAM很少,經常也需要外接數(shù)據存儲器。下面給出利用74LS138譯碼器同時擴展二片2764和二片6264的電路第6章存儲器擴展與并行I/O接口擴展3.同時擴展程序存儲器和數(shù)據存儲器第一節(jié)51單片機存儲器擴展第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展采用譯碼法同時擴展ROM和RAM第6章存儲器擴展與并行I/O接口擴展第一節(jié)51單片機存儲器擴展各片ROM和RAM的地址范圍存儲芯片A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0地址范圍IC12764(Y0=0)0000000000000000…

…00011111111111110000H……1FFFHIC22764(Y1=0)0010000000000000…

…00111111111111112000H……3FFFHIC36264(Y2=0)0100000000000000…

…01011111111111114000H……5FFFHIC46264(Y3=0)0110000000000000…

…01111111111111116000H……7FFFH第二節(jié)I/O接口技術概述6.2.1I/O接口的作用速度匹配輸出數(shù)據鎖存輸入數(shù)據緩沖數(shù)據轉換6.2.2I/O接口的編址外設端口單獨編址:I/O寄存器地址空間和存儲器地址空間分開編址外設端口與存儲器統(tǒng)一編址:直接使用訪問數(shù)據存儲器的指令進行I/O操作(51單片機采用)第二節(jié)I/O接口技術概述6.2.3I/O數(shù)據的傳送方式查詢傳送方式中斷傳送方式DMA傳送方式(51單片機沒有)無條件傳送方式6.2.4I/O接口的類型并行I/O接口:用于并行傳送I/O數(shù)據,速度快、效率高,適用于近距離傳送串行I/O接口:用于串行傳送I/O數(shù)據,成本低但速度慢,適用于遠距離傳送第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展6.3.1MCS-51單片機I/O口的直接應用P0口在擴展片外存儲器時作地址/數(shù)據分時復用總線,在不進行擴展時作一般準雙向輸入/輸出口使用。P1口為通用準雙向輸入/輸出接口。P2口在擴展片外存儲器時作高8位地址總線,在無擴展時可用作通用準雙向I/O接口。P3口除了作為通用準雙向I/O使用外,還具有第2功能第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展1.MCS-51單片機I/O端口的操作方式

1)輸出數(shù)據方式

CPU通過以端口為目的操作數(shù)的指令就可以把數(shù)據寫到P0~P3的端口鎖存器,然后通過輸出驅動電路送到端口的引腳線。因此,凡是以端口為目的操作數(shù)的指令都能達到從端口引腳上輸出數(shù)據的目的 MOV P0, R2 ORL P1, A ANL P2, #data XRL P3, A第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展

2)讀端口鎖存器方式

讀端口鎖存器方式實際上并不從外部引腳讀入數(shù)據,而只是把端口鎖存器中的內容讀到內部總線,按指令要求進行運算和變換后,再寫回到鎖存器屬于這類操作的指令通常是ANL、ORL、XRL等“讀—修改—寫”指令,例如: ORL P0, #0FH第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展

3)讀引腳方式當端口做輸入使用時,若要讀取端口引腳上的信號,要先向其鎖存器寫入“1”,使得該輸出驅動電路的場效應管截止,然后再執(zhí)行輸入指令,才能真正把外部引腳的狀態(tài)讀入例如要讀取P1口低4位引腳上信號的指令如下:MOV P1,#0FH;使P1口低4位鎖存器置“1”MOV A,P1 ;讀P1口低4位引腳信號送A第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展2.I/O口用作輸出

當I/O口用作輸出時,每個I/O引腳輸出高電平時的拉電流應控制在1mA之內。P1、P2和P3口每個I/O引腳輸出低電平時的灌電流一般應控制在3mA之內,而P0口每個I/O引腳的灌電流允許到5mA第三節(jié)并行I/O口的應用與擴展灌電流:單片機輸出低電平時,將允許外部器件,向單片機引腳內灌入電流,這個電流,稱為“灌電流”,外部電路稱為“灌電流負載”;

拉電流:單片機輸出高電平時,則允許外部器件,從單片機的引腳,拉出電流,這個電流,稱為“拉電流”,外部電路稱為“拉電流負載”。單片機輸出低電平的時候,驅動能力尚可,而輸出高電平的時候,就沒有輸出電流的能力。如果是“拉電流負載”,要求單片機輸出高電平時發(fā)揮作用,那就必須用“上拉電阻”來協(xié)助,產生負載所需的電流。設計單片機的負載電路,應該采用“灌電流負載”的電路形式,以避免無謂的電流消耗。

第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展【例6-1】如圖所示,P1口的P1.0~P1.7分別通過反相器接8個發(fā)光二極管。要求編寫程序,每隔1s循環(huán)點亮1只發(fā)光二極管,一直循環(huán)下去,已知系統(tǒng)的晶振頻率為6MHz解:用軟件延時實現(xiàn)每隔1s循環(huán)點亮1只發(fā)光管⑴設計0.1s延時子程序因為fosc=6MHz,所以機器周期m=12/fosc=2μs

0.1s的延時子程序宜采用雙重循環(huán)結構,如下所示: DEL1:MOVR2, #200 ;1m DEL2:MOVR3, #X ;1m NOP ;1m DEL3:DJNZR3, DEL3 ;2m DJNZR2, DEL2 ;2m RET則延時時間=[(X×2m+4)×200]×2μs=100000μs

解得:X=123⑵主程序連續(xù)10次調用0.1s延時子程序,則總延時時間就達到了1s主程序如下:

ORG 0000H START: MOV A, #01H LOOP: MOV P1, A MOV R1, #10DELAY: LCALLDEL1 ;10次調用延時子程序

DJNZR1, DELAY RL A LJMPLOOP第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展3.I/O口用作輸入

當I/O口用作輸入時,每個I/O腳的拉電流、灌電流一般應控制在1mA之內。如果I/O腳的電流太大時,在單片機與輸入設備之間應該用限流電阻予以隔離。需要特別注意的是,當I/O口作為輸入使用時,必須先向I/O口鎖存器的相應位寫“1”,然后再讀,才能正確讀入引腳上的輸入信號第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展【例6-2】如圖所示,P1口外接8個開關,要求將開關的狀態(tài)輸入到片內RAM30H單元第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展

ORG 0100HRDP1: MOV P1, #0FFH ;先向P1口送1 MOV A, P1 ;讀入開關狀態(tài)

MOV 30H, A ;送指定單元

NOP SJMP RDP1 ;反復再讀

ENDch6\ch6-1.DSN

ch6\ch6-1.Uv2為了能正確讀入P1口引腳的輸入信號,必須要先向P1口送“1”,然后再讀第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展6.3.2采用8255A擴展并行I/O口8255A是Intel公司生產的可編程并行I/O接口芯片,具有3個8位并行I/O口,3種工作方式,可通過編程改變其功能,因而使用靈活方便,通用性強,可作為單片機與多種外圍設備連接時的接口電路8255A內部結構和引腳與CPU連的:D7~D0:三態(tài)雙向數(shù)據線,

傳送數(shù)據以及控制字 CS:片選信號線,低電平有效,

表示本芯片被選中RD:讀出信號線,低電平有效,

控制從8255A讀WR:寫入信號線,低電平有效,

控制向8255A寫入A1、A0:地址線,用來選擇8255A

內部的4個端口RESET:復位線,高電平有效與外設連的:PA7~PA0:A口輸入/輸出線。PB7~PB0:B口輸入/輸出線。PC7~PC0:C口輸入/輸出線。Vcc:+5V電源和GND兩組控制器8255A各端口地址A1A000─A口地址

01─B口地址

10─C口地址

11─控制口地址2.8255芯片引腳與CPU的連接P0口與D0~D7直接連接P0.0,P0.1經鎖存器373與

A0和A1連P2.5~P2.7經138譯碼器Y7與CS連。因此僅當這三個口輸出全1時,8255選中。這種接法三個口的地址:A口:111xxxxxxxxxxx00B口:111xxxxxxxxxxx01C口:111xxxxxxxxxxx10控制口:111xxxxxxxxxxx11X有不同的組合,各口地址并不唯一。如E000H和EFF0H均指向A口。不同硬件接法,各口地址也不同。還可以用線選法。大家看看怎么連。訪問8255A各端口指令對于單片機而言,擴展的8255端口相當于片外數(shù)據存儲器。因此對A口,B口,C口和控制口的讀寫指令有4條:MOVXA,@DPTRMOVXA,@Ri(i=0,1)MOVX@DPTR,AMOVX@Ri,A如按上圖接法,對A口讀:MOVDPTR,#0E000HMOVXA,@DPTR或MOVP2,#0E0HMOVR0,#00HMOVXA,@R03.8255A的工作方式

工作方式的選擇由方式控制字決定。用戶通過程序把控制字寫到8255A的控制字寄存器,以設定8255A的工作方式和各口是輸入還是輸出。所謂8255初始化,就是要根據工作要求確定8255工作方式選擇字,并輸入8255控制寄存器。

【例6-3】要求8255A各端口工作于方式0,A口作輸出,B口作輸入,C口高4位作輸出,C口低4位作輸入,寫出8255A的方式控制字C口置復位控制字8255的C口可進行位操作,即可對8255C口的每一位進行置位或清0操作,該操作是通過設置C口置/復位字實現(xiàn)的。C口置/復位字共8位,各位含義如圖所示。由于8255的工作方式選擇字與C口置/復位字共用一個控制寄存器,故特別設置D7為標志位,D7=0表示控制字為C口置/復位字,D7=1表示控制字為8255工作方式選擇字。

第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展4.8255A應用舉例【例6-4】8255A與MCS-51單片機接口電路如圖所示,8255A的B口外接8個開關,A口通過反相器接8個發(fā)光二極管,各端口均工作在方式0,要求編寫程序從B口讀入開關的狀態(tài),再從A口輸出點亮發(fā)光二極管第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展依題意,8255A各端口工作在方式0,且A口作輸出,B口作輸入,根據8255A方式控制字各個位的定義,應作如下設置第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展根據硬件連接,可得8255A各端口地址如下端口A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0端口地址A口01111111000000007F00HB口01111111000000017F01HC口01111111000000107F02H控制口01111111000000117F03H第三節(jié)并行I/O口的應用與擴展源程序 ORG 1000HMAIN: MOVDPTR,#7F03H;DPTR←控制口地址

MOVA, #82H ;方式控制字

MOVX@DPTR,A ;8255A←控制字INPB: MOV DPTR,#7F01H;指向8255的B口

MOVXA,@DPTR ;A←8255的B口

MOVDPTR,#7F00H ;指向8255的A口

MOVX@DPTR,A ;8255的A口←AD100MS:MOV R2, #200 ;延時DEL2: MOV R3, #123 NOP DEL3: DJNZ R3, DEL3 DJNZ R2, DEL2

SJMPINPB ENDch6\ch6-2.Uv2

ch6\ch6-2.DSN第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展6.3.3采用8155擴展并行I/O口8155也是Intel公司生產的可編程并行I/O接口芯片,具有3個并行I/O口(其中兩個為8位口,一個為6位口),還提供了256字節(jié)的SRAM以及一個14位定時/計數(shù)器。8155內置有地址鎖存器,其地址線可直接與MCS-51單片機的P0口相連,無須外接地址鎖存器第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展1.8155內部結構和引腳第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展AD7~AD0:地址/數(shù)據總線ALE:地址鎖存信號PA7~PA0:A口I/O引腳PB7~PB0:B口I/O引腳PC5~PC0,C口I/O引腳TIMERIN:定時/計數(shù)器輸入端。TIMEROUT:定時/計數(shù)器輸出引腳RESET:復位引腳,高電平有效CE:片選輸入信號,低電平有效。RD:從I/O口或內部RAM讀選通信號,低電平有效WR:向I/O口、命令寄存器或內部RAM寫選通信號IO/M:I/O口與存儲器選擇8155引腳功能第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展8155各端口地址分配CEIO/MA7A6A5A4A3A2A1A0所選的端口01×××××000命令/狀態(tài)寄存器01×××××001A口01×××××010B口01×××××011C口01×××××100計數(shù)器低8位01×××××101計數(shù)器高6位00××××××××RAM單元第6章存儲器擴展與并行I/O接口擴展第三節(jié)并行I/O口的應用與擴展2.8155的命令字和狀態(tài)字

命令字存放在8155的命令寄存器中,它只能寫入,不能讀出,用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論