單片機的擴展設(shè)計課件_第1頁
單片機的擴展設(shè)計課件_第2頁
單片機的擴展設(shè)計課件_第3頁
單片機的擴展設(shè)計課件_第4頁
單片機的擴展設(shè)計課件_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單片機的擴展設(shè)計8.1外部程序存儲器擴展NEXTHOME在使用MCS-51系列單片機時,當(dāng)單片機無片內(nèi)ROM或應(yīng)用程序大于片內(nèi)程序存儲器時,必須通過外接ROM來構(gòu)成、擴充系統(tǒng)的程序存儲區(qū)。當(dāng)使用外部存儲器來擴展系統(tǒng)時,必須占用單片機的P0、P2口作為外部電路的數(shù)據(jù)、地址總線。此時,P0、P2口就不能作為通用的I/O端口。在系統(tǒng)擴展時,外部電路與單片機連接的依據(jù)是單片機訪問外部存儲器的時序,所以正確的理解時序是硬件電路設(shè)計的關(guān)鍵。在訪問外部程序存儲器時,由單片機的ALE/PRO引腳將低8位地址鎖存到地址總線上,/PSEN引腳自動輸出外部程序存儲器的選通信號,并讀取相應(yīng)的指令。BACKNEXTHOME8.1.1常用外部程序存儲器擴展的外部程序存儲器需要具有存儲數(shù)據(jù)非易失的特性,所以需要采用EPROM或E2PROM。1、可擦除程序存儲器EPROM用戶可以多次編程。編程加寫脈沖后,某些存儲單元的PN結(jié)表面形成浮動?xùn)牛钃跬?,實現(xiàn)信息寫入。用紫外線照射可驅(qū)散浮動?xùn)?,原有信息全部擦除,便可再次改寫?、電可改寫程序存儲器E2PROM既可全片擦除也可字節(jié)擦除,可在線擦除信息,又能失電保存信息,同時具備RAM、ROM的優(yōu)點。但寫入時間較長。BACKNEXTHOMEP2.7:::P2.0P0.7:::P0.0ALE/EAPsenCEA14::A8A7O7::::::A0O0OED7Q7

D0Q0CP2725632KROMMCS-51/CE=P2.7(A15)完整的地址信號MCS-51與32KROM的連接BACKNEXTHOME外部ROM的狀態(tài)與地址線A15的關(guān)系表ROM引腳/CEA14~A8A7~A0地址范圍ROM工作狀態(tài)單片機引腳A15P2口P0口00000000001111111100000000111111110000H~07FFH選中11000000001111111100000000111111118000HFFFFH未選中BACKNEXTHOME下圖是E2PROM2816的管腳示意圖,與MCS-51單片機的連接同27256。BACKNEXTHOME8.1.2訪問外部程序存儲器的時序A15-A8(PC)A7-A0OPA7-A0常數(shù)存儲器數(shù)據(jù)輸出控制/Psen地址總線(高八位)P2口地址數(shù)據(jù)總線(低8位)P0口S1S2S6S5S4S3373地址鎖存信號ALEA15-A8(DPTR+A)ABBACKNEXTHOME

P0、P2口作地址和數(shù)據(jù)總線。其中P0口作為地址和數(shù)據(jù)復(fù)用總線,前半部(A段)作地址總線,后半部(B段)作為數(shù)據(jù)總線。外部程序存儲器ROM的操作步驟如下:

1,單片機必須為其提供完整的地址信息;

2,ROM芯片的/CE端=0,選中該芯片;

3,在滿足上述條件的基礎(chǔ)上,當(dāng)ROM的/OE=0時(B時間段),存儲器輸出數(shù)據(jù)的三態(tài)門打開,并將與輸入地址相對應(yīng)的存儲單元中的指令(數(shù)據(jù))向外輸出,單片機通過P0口將指令送至CPU內(nèi)部。

74LS373鎖存器:將A時間段P0口輸出的低位地址進行保存,使ROM在B時間段仍然可以得到完整的地址信號。片外存儲器訪問時序說明(以27256位例)8.1.3外部程序存儲器的容量擴展當(dāng)一片ROM芯片的容量不夠,需要使用2片以上的芯片進行容量擴展時,可以通過譯碼電路實現(xiàn)。BACKNEXTHOMEP2.7P2.6P2.5P2.4P2.0P0口ALEPsen/CE0A12A8A78K×8A0/OE1O0~O774LS373Cy7BA

0y/CE1A12A8A78K×8A0/OE1O0~O7/CE7A12A8A78K×8A0/OE1O0~O7MCS–5174LS138P2.7~P2.5138輸出選中ROMP2.4~P0.0有效地址范圍000Y0=0第1片0000H~1FFFH0000H~1FFFH001Y1=0第2片0000H~1FFFH2000H~3FFFH010Y2=0第3片0000H~1FFFH4000H~5FFFH011Y3=0第4片0000H~1FFFH6000H~7FFFH100Y4=0第5片0000H~1FFFH8000H~9FFFH101Y5=0第6片0000H~1FFFHA000H~BFFFH110Y6=0第7片0000H~1FFFHC000H~DFFFH111Y7=0第8片0000H~1FFFHE000H~FFFFH采用LS138譯碼器實現(xiàn)ROM擴展示意表BACKNEXTHOME【小結(jié)】:1,單片機的P0、P2口作為地址數(shù)據(jù)總線;2,P0口為數(shù)據(jù)、地址復(fù)用總線,所以必須加入八位鎖存器74LS373來鎖存P0口的低八位地址。3,外接ROM是靠Psen信號來打開數(shù)據(jù)三態(tài)門,使ROM中的指令通過P0口送入單片機內(nèi)部。4,存儲器的容量M與其地址線條數(shù)n的關(guān)系:M=2n5,當(dāng)使用兩片ROM擴展時,可以使用一個反向器實現(xiàn)容量的擴展,通過ROM芯片的/CE端實現(xiàn)。6,當(dāng)使用2片以上的ROM芯片擴展時,就要使用譯碼器實現(xiàn)存儲容量的擴展,譯碼器的輸入與高位地址相連接,輸出端分別與各ROM芯片的/CE連接(如前圖所示)。7,當(dāng)外接ROM的高八位地址線與P2口高八位線沒有完全用足時,要注意外存儲的地址重疊問題。BACKNEXTHOME8.2外部數(shù)據(jù)存儲器的擴展存儲器中的信息可讀可寫,但失電后會丟失信息。雙極型:由TTL電路組成基本存儲單元,存取速度快。

MOS型:由CMOS電路組成基本存儲單元,集成度高、功耗低。

SRAM:靜態(tài)RAM。存儲單元使用雙穩(wěn)態(tài)觸發(fā)器。

DRAM動態(tài)RAM:使用電容作存儲元件,需要刷新電路。集成度高,反應(yīng)快,功耗低,但需要刷新電路。8.2.1常用外部數(shù)據(jù)存儲器1、分類BACKNEXTHOME2、結(jié)構(gòu)外部數(shù)據(jù)存儲器(RAM)的內(nèi)部結(jié)構(gòu)如下圖所示,其引腳與ROM大致相同,增加了R/W(OE/WE)讀寫允許線,用于打開數(shù)據(jù)通道,決定數(shù)據(jù)的傳送方向和傳送時刻。工作方式CSOER/WDi讀001DOUT寫010DIN禁止1××ZBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEMCS-51與32KRAM的連接示意圖62648KRAMP2.5P2.4::P2.0P0.7:::P0.0ALERDWRCEA12::A8A7O7::::::A0O0OEWED7Q7

D0Q0CPMCS-51/CE=P2.5(A12)3、連接8.2.2訪問外部數(shù)據(jù)存儲器的時序與程序存儲器擴展原理相同,數(shù)據(jù)存儲器的擴展也是使用P0、P2口作為地址、數(shù)據(jù)總線。

1,當(dāng)使用MOVX@Ri指令時,系統(tǒng)使用P0口輸出低8位地址信號,高8位地址信號由P2口輸出;

2,當(dāng)使用MOVX@DPTR指令時,P0口輸出DPTR提供的低八位地址信號,P2口自動輸出DPTR提供的高八位地址信號。

3,不論哪種情況,P0口都是地址/數(shù)據(jù)復(fù)用總線,因此仍要使用74LS373來鎖存P0口的地位地址信號。與ROM擴展不同:使用訪問外部RAM指令MOVX時,在時序中將產(chǎn)生/RD或/WR信號,因此將此信號與外RAM的讀(/RD)、寫(/WR)控制端相連接就實現(xiàn)系統(tǒng)對外RAM的讀寫控制。BACKNEXTHOME設(shè)外部RAM2000H單元中有一個數(shù)x,且DPTR中已存有該數(shù)地址2000H.則CPU執(zhí)行外部ROM中的指令: MOVX A,@DPTR ;將外RAM的X送ABACKNEXTHOMES1S2S6S5S4S3S1S2S6S5S4S3ALEA15-A8(PC)A15-A8(DPH)A7-A0指令A(yù)7-A0(DPL)數(shù)據(jù)RDP2口P0口選中外部RAMWR選中外部RAMPsen8.2.3多片外部數(shù)據(jù)存儲器的擴展P2.7P2.6P2.5P2.4P2.0ALEP0口/WR/RD/CEA12A8A76264A0/WE/OEO0~O774LS373Cy7BA

0y/CEA12A8A76264A0/WE/OEO0~O7/CEA12A8A76264A0/WE/OEO0~O7MCS–5174LS138需要使用多片RAM進行容量擴展時,同樣可以通過譯碼電路實現(xiàn)。BACKNEXTHOME8.3I/O接口擴展設(shè)計及應(yīng)用如果系統(tǒng)使用了外部存儲器時,P0、P2口和P3口都被外存儲器占用,留給用戶的只有P1口。因此I/O端口的擴展是使用MCS-51作為嵌入式控制器進行硬件設(shè)計中經(jīng)常遇到的問題:8.3.1可編程并行I/O接口芯片8255A1,8255A的內(nèi)部結(jié)構(gòu)和引腳功能

8255A是Intel公司生產(chǎn)的標(biāo)準外圍接口芯片,它采用NMOS工藝制造,用單一+5V供電,有40根引腳;具有A、B、C三個端口共24條I/O線,可以通過編程的方法來設(shè)定端口的各種功能;由于8255A的功能強,又能方便地與各種微機系統(tǒng)連接,同時不需要附加外部電路,因而得到了廣泛的應(yīng)用。BACKNEXTHOMEA口C口高四位B口C口低四位A組控制器B組控制器數(shù)緩沖據(jù)器讀制寫邏控輯PA7-0PB7-0PC7-4PC3-0D7-D0/RD/WRA0A1RESET/CSBACKNEXTHOME8255的內(nèi)部結(jié)構(gòu)圖(一):內(nèi)部結(jié)構(gòu):由四部分組成。1,A口,B口和C口:

A口:8位數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖/鎖存的I/O端口。

B,C口:8位數(shù)據(jù)輸出緩沖/鎖存,輸入緩沖的I/O端口。2,A組控制器,B組控制器接收CPU發(fā)送的控制字并確定8255的工作模式,其中A組控制器控制A口和C口的高4位;B組控制器控制B口和C口的低4位。3,數(shù)據(jù)緩沖器:雙向8位,用于傳送CPU與8255之間的數(shù)據(jù)和控制字。4,讀寫控制器:接收CPU送來的讀(/RD),寫(/WR)和片選(/CS)等信號,用于對8255的讀寫控制。BACKNEXTHOME(二)引腳功能:40腳DIP封裝。1,數(shù)據(jù)總線D7~D0,與內(nèi)部數(shù)據(jù)緩沖器連接,用來傳送CPU與8255之間的數(shù)據(jù)字、控制字。2,控制總線: RESET:復(fù)位線,高電平有效; /CS:片選信號,低電平有效; /RD,/WR讀寫命令線:低電平有效; A0,A1:地址輸入線,用于選中A口,B口,C口和控制寄存器。3,并行I/O總線(24條): PA7~PA0:雙向I/O總線,可由控制字設(shè)定為輸入、輸出或輸入輸出雙向方式; PB7~PB0:雙向I/O總線,可由控制字設(shè)定為輸入或輸出方式; PC7~PC0:雙向I/O總線,可以設(shè)定為傳送I/O數(shù)據(jù)(模式0)或控制/狀態(tài)信息(模式1,2);4,電源線: Vcc和GND.BACKNEXTHOME未選中XXXXXX1寫控制字控制口C3H01110寫C口C2H01100讀C口C口C2H10100寫B(tài)口C1H01010讀B口B口C1H10010寫A口C0H01000讀A口A口C0H10000功能端口端口地址/WR/RDA1A0/CS8255控制信號功能、地址表(設(shè)/CS=C0H)BACKNEXTHOME2,8255A的工作方式及設(shè)置BACKNEXTHOME8255A有三種工作模式:模式0,模式1,和模式2。用戶可以通過“8255A工作方式選擇控制字”來設(shè)定所需的工作模式。(1)模式0:基本的輸入/輸出方式(2)模式1:選通輸入、選通輸出方式:A口、B口作為輸入或輸出,C口做聯(lián)絡(luò)線(3)模式2:A口的雙向選通(輸入/輸出)方式(一)工作方式的設(shè)置8255有兩個控制字:“方式控制字”和“C口置復(fù)位控制字”。兩者以控制字的D7=1或D7=0來區(qū)別?!肮ぷ鞣绞竭x擇控制字”:用于確定三個端口的輸入或輸出等;D7:控制字標(biāo)志位。1表明為“方式控制字”,0表明為C口置復(fù)位控制字;D6,D5:A組方式選擇位。00:模式0,01:模式1,1X:模式2。D4:A口輸入/輸出控制位。=0時A口用于輸出;=1時A口用于輸入。D3:C口高4位輸入/輸出控制位。=0時C口高4位用于輸出;=1用于輸入。BACKNEXTHOMED2:B組方式選擇位。D2=0時,B組設(shè)定為模式0;=1時,設(shè)定為模式1。D1:B口輸入/輸出控制。D1=0時,B口用于輸出;=1時,B口用于輸入。D0:C口低4位輸入/輸出控制。=0時用于輸出;=1時,用于輸入。D0D1D2D3D4D5D6D7=1標(biāo)志位A組方式選擇A口、C口高4B組方式B口、C口低4“C口單一置位復(fù)位控制字”:

使C口各位在模式1,2時單獨置位或復(fù)位,以實現(xiàn)某些控制功能。如:設(shè)置或清除A口、B口的中斷允許位等。D7:控制字標(biāo)志位。=0表明為“C口單一支復(fù)位控制字”。D6~D4:不用。D3~D1:C口選擇位。三位二進制數(shù)(000~111),確定C口中8個位(D7~D0)中的某一位。D0:置復(fù)位控制位。D0=0時,復(fù)位;D0=1時,置位。BACKNEXTHOMED0D1D2D3XXXD7=0標(biāo)志位=0D6-D4位不用C口位選擇位置復(fù)位控制位(二)模式0:基本的輸入/輸出方式在模式0時,CPU可以對8255A無條件的進行I/O數(shù)據(jù)傳送,數(shù)據(jù)可以在8255A對應(yīng)的鎖存器中鎖存。同樣,外設(shè)的I/O數(shù)據(jù)同樣可以送到各端口得到鎖存或緩沖。也可以將某些位設(shè)定為外設(shè)的狀態(tài)輸入位,CPU通過查詢狀態(tài)與外設(shè)進行異步I/O數(shù)據(jù)傳送?!咀⒁狻浚寒?dāng)端口的輸入/輸出特性設(shè)定后,數(shù)據(jù)流是單向的; 作為輸入端口時,只有A口的數(shù)據(jù)能夠鎖存; C口雖分為上、下四位,但操作時必須作為一個整體。BACKNEXTHOME【例】:設(shè)8255A的基本地址為0FFF8H,試編程將A口和C口的高4位設(shè)定為模式0的輸出方式,B口和C口的低4位設(shè)定為模式0的輸入方式。【解】: MOV DPTR,#0FFFBH ;控制寄存器地址送DPTR MOV A,#10000011B ;方式控制字83H送A MOV @DPTR,A ;控制字83H送控制寄存器(三)模式1:選通輸入、選通輸出方式A口、B口均可獨立的設(shè)置為這種工作模式;在這種模式下,A口、B口通常用于傳送與它們相連外設(shè)的I/O數(shù)據(jù)。而此時,C口作為A口、B口與外設(shè)之間的聯(lián)絡(luò)握手信號,可以實現(xiàn)CPU與外設(shè)之間以“中斷”的方式進行異步I/O數(shù)據(jù)傳送;在這種模式下,A口和B口的數(shù)據(jù)都能被鎖存。模式1下C口各位定義如下:C口各位模式1模式2輸入方式輸出方式雙向I/O方式PC7I/O/OBFa/OBFaPC6I/O/ACKa/ACKaPC5IBFaI/OIBFaPC4/STBaI/O/STBaPC3INTRaINTRaINTRaPC2STBb/ACKb由B口模式?jīng)Q定PC1IBFb/OBFb由B口模式?jīng)Q定PC0INTRbINTRb由B口模式?jīng)Q定BACKNEXTHOMEBACKNEXTHOMEINTR:8255A發(fā)出的中斷請求信號,經(jīng)反相后送單片機。IBF:8255A發(fā)出“輸入緩沖器滿”信號。/OBF:輸出緩沖器滿信號/STB:外設(shè)發(fā)出的“選通信號”,用于8255A的數(shù)據(jù)鎖存用。/ACK:外設(shè)發(fā)出通知8255A的“已接收到數(shù)據(jù)”的應(yīng)答信號。【例】:8255的模式1:選通輸入方式(A口)P08031/INT0D7-D0PAPC4PC5PC3D7-D0輸入設(shè)備INTEa/STBaIBFaINTRa12BACKNEXTHOME1,當(dāng)外設(shè)輸入數(shù)據(jù)到PA口時,自動的向/STBa發(fā)出一個低電平選通信號;2,8255A收到/STBa上的負脈沖后作兩件事:一是將數(shù)據(jù)存入A口輸入緩沖/鎖存器中;二是輸入“緩沖器滿”的IBFa高電平信號,通知外設(shè)已收到數(shù)據(jù)。3,8255A檢測到/STBa變?yōu)楦唠姇r,將INTRa變高向CPU申請中斷。4,CPU響應(yīng)中斷后,從A口讀取數(shù)據(jù),并在讀走數(shù)據(jù)后8255A撤掉INTRa信號,并使IBFa變低通知外設(shè)送下一個字節(jié)的數(shù)據(jù)。(四)模式2:A口的雙向(輸入/輸出)方式只有A口具有模式2方式。此時,PA口為雙向I/O總線。

1,當(dāng)PA作輸入口時,由/STBa和IBFa信號控制,過程同模式1的輸入操作。

2,當(dāng)PA作輸出口時,由/OBFa和/ACKa控制,工作過程同模式1的輸出操作。模式2非常適應(yīng)像終端一類的外設(shè),如鍵盤、顯示器等設(shè)備。BACKNEXTHOMEP08031/INT0D7-D0PAD7-D0輸入設(shè)備PC7INTE1/OBFa/ACKaINTRaPC6PC4PC5PC3IBFa/STBa+INTE23,8255A的應(yīng)用舉例設(shè)計要求:A口設(shè)為輸入口,輸入數(shù)據(jù)存入DATA0中;B口和C口設(shè)為輸出口,分別從DATA1和DATA2取數(shù)據(jù)輸出。/RD/WRP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE89C51

D7Q7D6Q6D5Q5D4Q4D3Q3D2Q2D1Q1D0Q074LS373G/E/RD/WRRESET/CS

PC口

8255AA1A0

PB口D7D6D5D4D3D2PA口D1D0/CS=FF7XHA口:FF70HB口:FF71H,C口:FF72H,控制口:FF73HBACKNEXTHOMEBACKNEXTHOME程序清單: ORG 0100HSTART: MOV A,#90H ;方式0,A輸入,B、C 輸出 MOV DPTR,#0FF73H ;8255A控制口地址送指針 MOVX @DPTR,A ;控制字送8255A控制寄存器 MOV DPTR,#0FF70H ;A口地址送指針 MOVX A,@DPTR ;從A口輸入數(shù)據(jù)到A MOV DATA0,A ;輸入數(shù)據(jù)存入DATA1單元 MOV DPTR,#0FF71H ;B口地址送指針 MOV A,DATA1 ;從內(nèi)存DATA1單元中取數(shù) MOVX @DPTR,A ;數(shù)據(jù)從B口輸出 MOV DPTR,#0FF72H ;C口地址送指針 MOV A,DATA2 ;從內(nèi)存DATA2單元中取數(shù) MOVX @DPTR,A ;數(shù)據(jù)從C口輸出00001001標(biāo)志位A組方式選擇A口、C口高4B組方式B口、C口低48.3.2可編程RAM及并行I/O接口芯片8155H

8155H是Intel公司生產(chǎn)的可編程多功能接口芯片,它采用NMOS工藝制造,用單一+5V供電,有40根引腳;內(nèi)部具有兩個可編程的8位并行I/O口、一個6位并行I/O口、一個14位定時器以及256字節(jié)的RAM存儲器;由于8155H的功能強,可以直接與MCS-51系列單片機連接,同時不需要附加外部電路,因而單片機應(yīng)用系統(tǒng)中最常用的一種接口芯片。1,8155H的邏輯結(jié)構(gòu)及引腳BACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOMEBACKNEXTHOME2,8155H中RAM和I/O端口的編址

8155共有256個字節(jié)RAM,可以安排在64k字節(jié)外RAM空間的任一區(qū)域中,具體由CE、IO/M與MCS-51單片機的高位地址線的連接方法確定。單片機訪問時應(yīng)使CE=0,IO/M=0;片內(nèi)單元由AD0~AD7確定。

8155的I/O部分有7個可編程程序寄存器,如圖所示。單片機要訪問這些寄存器必須使CE=0、IO/M=1。其命令寄存器(只寫)、狀態(tài)寄存器(只讀),合用一個地址,所以8155安排了6個端口,由AD2~AD0三位編碼確定,BACKNEXTHOME3,8155H的編程設(shè)置及工作方式PAPBPC1PC2IEAIEBTM1TM2D7D6D5D4D3D2D1D0對8155H的設(shè)置是通過寫入控制命令寄存器的命令字來實現(xiàn)的。命令寄存器只能寫入,不能讀出,其具體格式及定義如下:BACKNEXTHOME0:A口輸入;1:A口輸出0:B口輸入;1:B口輸出00(ALT1):基本I/O方式,C口為輸入01(ALT2):基本I/O方式,C口為輸出02(ALT3):A口選通I/O,B口基本I/O,C口高三位輸出,低三位為聯(lián)絡(luò)信號03(ALT4):選通方式,C口為聯(lián)絡(luò)信號命令字和狀態(tài)字PAPBPC1PC2IEAIEBTM1TM2D7D6D5D4D3D2D1D0A口中斷:0禁止,1允許B口中斷:0禁止,1允許定時器工作方式:00=無操作01=停止計數(shù)10=計滿后停止11=開始計數(shù)BACKNEXTHOME關(guān)于定時器控制位(TM1,TM2)的補充說明:當(dāng)TM1,TM2=11時,裝入計數(shù)長度和方式后立即開始計數(shù),若計數(shù)器正在計數(shù),則待計數(shù)器溢出后以新裝入的計數(shù)長度和方式進行計數(shù)。INTRAABFINTEAINTRBBBFINTEBTIMER×D7D6D5D4D3D2D1D0在8155H中,其狀態(tài)寄存器是與命令寄存器共用一個地址,只能讀出,不能寫入,讀出的數(shù)據(jù)為表示8155H當(dāng)前狀態(tài)的狀態(tài)字A口中斷請求A口緩沖器滿/空A口中斷允許B口中斷請求B口緩沖器滿/空B口中斷允許定時器中斷BACKNEXTHOME8155H的工作方式(1)存儲器方式此方式下8155H相當(dāng)于一個256字節(jié)的外部RAM,此時要求I/M=0,CE=0,單片機通過AD0~AD7對其尋址并進行讀寫操作。BACKNEXTHOMEP0口AD0~AD7ALEALEP2.0I/MCERDRDWRWRP2.7(2)I/O方式BACKNEXTHOME基本I/O方式:當(dāng)命令字中的PC1、PC2設(shè)置為00或01時,選擇的工作方式為方式1或方式2,即基本I/O方式,這時不用聯(lián)絡(luò)信號,C口可以做為輸入(方式1)或輸出(方式2)。選通I/O方式:當(dāng)命令字中的PC1、PC2設(shè)置為10或11時,選擇的工作方式為方式3或方式4,即選通I/O方式:方式3:規(guī)定A口為選通I/O口,B口為基本I/O口,C口高3位為數(shù)據(jù)輸出線,C口的低3位作為A口的聯(lián)絡(luò)線

PC0→AINTR PC1→ABF PC2←ASTB

方式4:規(guī)定A口、B口均為選通I/O、C口的低3位作為A口的聯(lián)絡(luò)線(與方式3相同),C口的高3位作為B口的聯(lián)絡(luò)線。

PC3→BINTR PC4→BBF PC5←BSTBBACKNEXTHOMEC口在兩種I/O工作方式下的定義BSTB(B口選通)輸出輸出輸入PC5BBF(B口緩沖器滿)輸出輸出輸入PC4BINTR(B口中斷)輸出輸出輸入PC3ASTB(A口選通)ASTB(A口選通)輸出輸入PC2ABF(A口緩沖器滿)ABF(A口緩沖器滿)輸出輸入PC1AINTR(A口中斷)AINTR(A口中斷)輸出輸入PC0ALT4ALT3ALT2ALT1選通I/O方式通用I/O方式C口(3)計數(shù)器/定時器方式

8155H中有一個14位減1計數(shù)器,可對從Tin端輸入的脈沖進行減法計數(shù),計數(shù)終值為0。設(shè)置了兩個8位寄存器,其中14位用于存放計數(shù)值,最高兩位規(guī)定定時器的輸出方式。對定時器的編程:首先將計數(shù)常數(shù)及定時器輸出方式寫入定時器寄存器中,對定時器的啟??刂苿t是通過命令寄存器實現(xiàn)的。BACKNEXTHOMET0T1T2T3T4T5T6T7D7D6D5D4D3D2D1D0T8T9T10T11T12T13M1M2D7D6D5D4D3D2D1D0低8位高8位兩個8位寄存器數(shù)據(jù)格式M1M2方式00011011定時器輸出波形單個方波連續(xù)方波單個脈沖連續(xù)脈沖BACKNEXTHOME8155H的定時器/計數(shù)器與MCS-51單片機內(nèi)部的定時器/計數(shù)器在功能上是相同的,都有計數(shù)和定時兩種功能,本質(zhì)都是計數(shù),溢出后發(fā)出信號并可觸發(fā)中斷。在兩個寄存器中,低14位組成計數(shù)器,高兩位決定TMROUT的輸出方式,如下表所示。8155H中的計數(shù)/定時器與MCS-51單片機內(nèi)部計數(shù)/定時器的比較BACKNEXTHOME

8155H的計數(shù)/定時器為減法計數(shù),而MCS-51單片機內(nèi)部計數(shù)/定時器為加法計數(shù),因此二者確定計數(shù)初值的方法是不同的。

MCS-51單片機內(nèi)部的計數(shù)/定時器有多種工作方式,而8155H的計數(shù)/定時器只有一種固定的工作方式,即14位計數(shù)。

MCS-51單片機內(nèi)部的計數(shù)/定時器有兩種計數(shù)脈沖,當(dāng)定時工作時由芯片內(nèi)部提供固定頻率的計數(shù)脈沖;當(dāng)計數(shù)工作時由芯片外部引入計數(shù)脈沖。而8155H的計數(shù)/定時器不論定時還是計數(shù),必須由外部提供計數(shù)脈沖到TMRIN引腳。

MCS-51單片機內(nèi)部的計數(shù)/定時器,在計數(shù)溢出時自動置位TCON中的TF位,以供用戶查詢或觸發(fā)中斷;而8155H的計數(shù)/定時器在計數(shù)溢出時卻是通過TMROUT引腳向外部發(fā)出一個脈沖信號?!咀⒁狻浚?155H的計數(shù)/定時器在計數(shù)過程中,寄存器中的數(shù)值并不直接表示外部輸入的脈沖數(shù)。4,8155H與MCS-51系列單片機的連接BACKNEXTHOMEP0口AD0~AD7ALEALEP2.0I/MCERDRDWRWRP2.7TINTOUT【注意】:若要使用8155H的計數(shù)/定時器時,需在其輸入(TMRIN)和輸出(TMROUT)引腳接入適當(dāng)連接信號。8.3.3使用普通TTL芯片擴展并行I/O接口BACKNEXTHOME當(dāng)需要擴展的I/O口要求不高,且地址線被占用不多時,可采用普通的TTl芯片進行擴展,通常用74LS244(8位三態(tài)緩沖器及總線驅(qū)動器)擴展輸入口,用74LS373(8D鎖存器)擴展輸出口,如圖所示。在使用TTL芯片擴展接口時,還應(yīng)注意兩點:(1)I/O地址的安排,如果擴展的接口不多,則可用線選尋址,在如下圖中P2.0來選擇一個輸入口和一個輸出口。線選法未能使地址空間得到充分利用,對于RAM和I/O口容量較大的系統(tǒng),可用74LS138作為地址譯碼器,譯碼出的信號作為片選信號。(2)總線負載能力的擴大:P0口作地址/數(shù)據(jù)總線時,其負載能力為8個LSTTL電路,P2口作為地址總線時,其負載能力為4個LSTTL電路,如果超過必須增加總線驅(qū)動器,如:74LS244(單向)、74LS245(雙向)等。BACKNEXTHOME8.4A/D、D/A的接口設(shè)計在單片機應(yīng)用系統(tǒng)中,經(jīng)常要用到模擬量/數(shù)字量(A/D)、數(shù)字量/模擬量(D/A)轉(zhuǎn)換器,因此本節(jié)介紹A/D、D/A轉(zhuǎn)換器的工作原理及與單片機的接口方法。8.4.1D/A轉(zhuǎn)換器的原理及應(yīng)用1,D/A轉(zhuǎn)換器的轉(zhuǎn)換原理BACKNEXTHOMED/A轉(zhuǎn)換器D7:D0tV數(shù)字量輸入模擬量輸出D/A轉(zhuǎn)換器就是將數(shù)字量轉(zhuǎn)換成模擬量輸出,其工作過程如下圖所示:T型電阻網(wǎng)絡(luò)構(gòu)成的D/A轉(zhuǎn)換器:T型網(wǎng)絡(luò)如下圖所示:Iout=I3+I2+I1+I0RRRRR2R2R2R2RVR3210I3I2I1I0Iout分析0,1,2,3各點對地的電阻(=R)分析各點電壓和I3,I2,I1,I0電流:因為 I3=I總×1/2所以I3=VR/(2×R)= U2=VR/2所以I2=VR/(2×2R)= U1=U2/2=VR/4所以I1=VR/(4×2R)= U0=U1/2=VR/8所以I0=VR/(8×2R)=BACKNEXTHOMERRRRR2R2R2R2RVREFI3I2I1I0b3b2b1b0四位DAC寄存器-+RfIRfIout1Vout電流/電壓變換Vout=-Iout×RfIout2BACKNEXTHOME2,DAC0832芯片介紹8位輸入寄存器8位DAC寄存器8位T型電阻網(wǎng)絡(luò)DI7DI6DI5DI4DI3DI2DI1DI0ILE/CS/WR1/WR2/XFERM1M3VREFIout2Iout1RfbGNDRf=1允許輸入=0鎖存數(shù)據(jù)阻斷新數(shù)據(jù)=1允許輸入進行轉(zhuǎn)換=0鎖存數(shù)據(jù)阻斷新數(shù)據(jù)DAC0832內(nèi)部結(jié)構(gòu)示意圖BACKNEXTHOMEBACKNEXTHOME8位輸入數(shù)據(jù)寄存器:存放CPU送來得數(shù)據(jù),由M1控制;8位DAC寄存器:存放待轉(zhuǎn)換的數(shù)據(jù),由M3控制;帶有開關(guān)的8位T型電阻網(wǎng)絡(luò):輸出與數(shù)字量對應(yīng)的模擬電流。DAC0832芯片引腳介紹:數(shù)字量輸入線DI7~DI0:第1級緩沖控制線:

ILE:允許數(shù)字量輸入線,高電平有效。

/CS:片選線,低電平有效。

/WR1:寫命令控制線,低電平有效。

ILE=1,/CS,/WR1=0時,M1為1,數(shù)據(jù)進入輸入寄存器。反之,條件不滿足時,M1=0,鎖存器鎖存數(shù)據(jù)。第2級緩沖控制線(控制DAC轉(zhuǎn)換時間):

/WR2:寫命令控制線,低電平有效。

/XFER:輸入傳送控制線,低電平有效。

/WR2=0,/XFER=0時,M3為1,數(shù)據(jù)進入DAC寄存器,通過T型電阻網(wǎng)絡(luò)實現(xiàn)DAC轉(zhuǎn)換。反之,條件不滿足時,M3=0,鎖存器鎖存數(shù)據(jù)。

DAC寄存器不接收前面輸入寄存器的數(shù)據(jù)。BACKNEXTHOME輸出線:

Rfb:與外接運算放大器的輸出端相連。

Iout1、Iout2:模擬電流輸出線,分別與運算放大器的反相端、同相端連接。電源線:

VCC:電源輸入線,+5V~+15V之間。

VREF:參考電壓輸入線,-10V~+10V范圍內(nèi),由基準電源提供。

DGND:數(shù)字電源地。

AGND:模擬電源地。-+IRfVout電流/電壓變換DAC0832Iout1Iout2RfbMCS-51單片機與DAC0832芯片的連接:實際電路中常將DAC0832內(nèi)部兩個緩沖器中的一個接成直通方式,如將后級的DAC寄存器直通(/XFER,/WR2=0),用單片機的/WR與DAC0832的/WR1連接。這樣,一旦數(shù)據(jù)進入輸入寄存器DAC就開始進行轉(zhuǎn)換。使用: MOVR0,#0FEH ;來選定DAC0832的片選/CS MOVX@R0,A;指令產(chǎn)生/WR信號使數(shù)據(jù)進入0832進行轉(zhuǎn)換(A中為待轉(zhuǎn)換的數(shù)字N)。/WRP0口ALE/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0鎖存器譯碼器+5V-+VoutFEHBACKNEXTHOMEBACKNEXTHOME【例】:使用DAC0832作波形發(fā)生器,分別輸出鋸齒波、三角波和方波。Voutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+Vout1,鋸齒波發(fā)生器程序: ORG 1000HSTART:MOV R0,#0FEH MOVX @R0,A INC A SJMP START END【說明】:單極性輸出VoutVoutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+VoutBACKNEXTHOME2,三角波發(fā)生器程序: ORG 1000HSTART:CLR A MOV R0,#0FEHDOWN: MOVX @R0,A INC A JNZ DOWNUP: MOVX @R0,A DEC A JNZ UP SJMP DOWN END【說明】:單極性輸出VoutBACKNEXTHOME3,方波發(fā)生器程序: ORG 1000HSTART:MOV R0,#0FEHLOOP:MOV A,#00H MOVX @R0,A ACALL DELAY MOV A,#0FFH MOVX @R0,A ACALLDELAY SJMP LOOPDELAY:: END【說明】:單極性輸出VoutVoutt/WR1/WR2/XFERRfb/CSIout1ILEIout2DI7~DI0-+Vout8.4.2A/D轉(zhuǎn)換器的原理及應(yīng)用A/D轉(zhuǎn)換器用于實現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換。按轉(zhuǎn)換原理可分為四種:計數(shù)式、雙積分式、逐次比較式及并行式,目前最常用的是雙積分式和逐次比較式。1,A/D轉(zhuǎn)換器的轉(zhuǎn)換原理逐次比較式A/D轉(zhuǎn)換器原理控制電路N位D/A轉(zhuǎn)換網(wǎng)絡(luò)N位寄存器SAR模擬電壓輸入VXA/D轉(zhuǎn)換數(shù)據(jù)輸出啟動時鐘狀態(tài)+-比較器VXVSBACKNEXTHOMEBACKNEXTHOME工作過程如下:1,N位寄存器首先形成10000000;經(jīng)DAC轉(zhuǎn)換后送比較器與VX相比較;2,若VX>VS時,比較器通知N位寄存器保留最高位“1”。若VX<VS時,比較器通過控制器將最高位“1”清除(因為VX小于量程的一半127)。3,N位寄存器對次高位置1,再重復(fù)上面的過程,確定該位是“1”或“0”。4,經(jīng)過8次比較確定了N位計數(shù)器從D7~D0的8位數(shù)據(jù)。整個過程由輸入一個“啟動”信號開始,到“狀態(tài)”端輸出一個標(biāo)志信號結(jié)束。雙積分式A/D轉(zhuǎn)換器原理電子開關(guān)計數(shù)器控制邏輯數(shù)據(jù)輸出標(biāo)準時鐘比較器積分器VXVREF0VRVXABtT1正比于輸入電壓固定積分時間T0固定斜率反向積分BACKNEXTHOME工作過程如下:1,首先對輸入電壓VX進行固定時間(T0)積分;2,對經(jīng)過反向后的基準電壓VR進行積分,直至比較器輸出翻轉(zhuǎn)。3,在對基準電壓進行積分時,內(nèi)部計數(shù)器開始對標(biāo)準時鐘進行計數(shù)。4,電壓比較器輸出翻轉(zhuǎn)后停止計數(shù),這時計數(shù)器中的數(shù)據(jù)即為A/D轉(zhuǎn)換的數(shù)據(jù)。特點及常用型號:

逐次比較式A/D轉(zhuǎn)換器的優(yōu)點是速度快,轉(zhuǎn)換精度較高;但抗干擾能力差且價格較高,其轉(zhuǎn)換時間大約在幾微秒到幾百微秒之間。常用的型號有ADC08系列和AD574系列等。雙積分式A/D轉(zhuǎn)換器的優(yōu)點是轉(zhuǎn)換精度高,抗干擾能力強,價格便宜;缺點是轉(zhuǎn)換速度慢,大約每秒幾十次左右,因此常用于速度要求不高的場合。常用的型號有ICL71系列等。BACKNEXTHOME【注】:本課程以講授逐次比較式A/D轉(zhuǎn)換器為主。2,逐次比較式8位A/D轉(zhuǎn)換器ADC0809ADC0809是典型的8位8通道逐次比較式A/D轉(zhuǎn)換器,采用CMOS工藝制造。ADC0809的內(nèi)部邏輯結(jié)構(gòu)ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖BACKNEXTHOME八路模擬開關(guān)地址鎖存IN026IN127IN228IN31IN42IN53IN64IN75A25B24C23ALE22+-比較器VXVS控制電路逐次比較寄存器SAR樹狀開關(guān)256電阻網(wǎng)絡(luò)三態(tài)輸出寄存器VccGNDVR(+)VR(-)11131216EOC7D721D620D519D418D38D215D114D017START6CLOCK10OE9BACKNEXTHOMEADC0809的引腳IN0~IN7:八路模擬電壓輸入端;ALE: 地址鎖存控制信號;A~

C: 地址輸入線,A為低位;START: 啟動脈沖輸入端,其中上升沿清SAR,下降沿啟動ADC工作;EOC: 轉(zhuǎn)換結(jié)束標(biāo)志。此線輸出高電平時表明轉(zhuǎn)換完成。D7~D0: 數(shù)字量輸出線。OE: 輸出三態(tài)控制線。輸入高電平時,引腳D7~D0上輸出轉(zhuǎn)換后的8位數(shù)字量。CLOCK: 時鐘輸入端。為ADC提供640KH的逐次比較脈沖時序。Vref(+)、

Vref(-):參考電壓輸入,為電阻網(wǎng)絡(luò)提供電壓。Vref(+)、

Vref(-)可以與Vcc和GND連接。Vcc、GND:電源和地。BACKNEXTHOME/RD/WRP0口MCS-51ALE/INT1OESTARTALEADC0809CBAD7~D0CLOCKEOC地址鎖存器地址譯碼器++P0.2P0.1P0.0分頻器F0HMCS-51單片機與ADC0809的連接使用MOVX@Ri,A指令啟動ADC,A中為通道代碼,Ri=F0H(/WR)使用MOVXA,@Ri

指令來讀ADC的數(shù)據(jù),Ri=F0H,(/RD)使用中斷方式為ADC0809服務(wù)?!纠浚涸嚲幊虒N0-IN7上的模擬電壓采集并送到內(nèi)部RAM30H開始的單元,設(shè)ADC地址為0F0H。 ORG 0A00H ;主程序START: MOV R1,#30H ;數(shù)據(jù)區(qū)指針R1賦初值30H MOV R4,#08H ;計數(shù)器R4賦初值08H MOV R2,#00H ;通道代碼送R2 SETB EA SETB EX1 ;開/INT1中斷 SETB IT1 ;設(shè)/INT1為邊沿觸發(fā) MOV R0,#0F0H ;ADC地址送間址寄存器R0 MOV A,R2 ;通道代碼送累加器A MOVX @R0,A ;送通道代碼并啟動ADC SJMP $ ;等待中斷。。。。

ORG 0013H LJMP CINT1BACKNEXTHOME ORG 0100HCINT1: MOV R0,#0F0H ;中斷服務(wù)程序 MOVXA,@R0 ;讀入ADC數(shù)據(jù) MOV @R1,A ;存入轉(zhuǎn)換的數(shù)據(jù) INC R1 ;修改數(shù)據(jù)區(qū)指針R1 INC R2 ;修改通道代碼寄存器R2 MOV A,R2 ;通道代碼送累加器A MOVX@R0,A ;送下一個通道代碼并啟動ADC DJNZ R4,LOOP ;若未采集完轉(zhuǎn)LOOP CLR EX1 ;采集完時,關(guān)中斷LOOP: RETI ;中斷返回 ENDBACKHOME8.5鍵盤與顯示接口設(shè)計8.5.1鍵盤接口BACKNEXTHOME鍵盤按其結(jié)構(gòu)形式可分為編碼式鍵盤和非編碼式鍵盤兩大類。編碼式鍵盤是由其內(nèi)部硬件邏輯電路自動產(chǎn)生被按鍵的編碼。這種鍵盤使用方便,但價格較貴。單片機系統(tǒng)中普遍使用非編碼式鍵盤。這類鍵盤應(yīng)主要解決以下幾個問題:(1)鍵的識別;(2)如何消除鍵的抖動;(3)鍵的保護。在以上幾個問題中,最主要的是鍵的識別。非編碼式鍵盤的連接與工作原理1.非編碼式鍵盤的連接非編碼式鍵盤一般采用獨立連接式和矩陣排列式,如下圖所示。BACKNEXTHOME+5V+5V獨立連接式矩陣排列式行01232.非編碼式鍵盤的工作原理對于獨立連接式,只要不斷掃描輸入口,當(dāng)輸入數(shù)據(jù)全為“1”時,則無鍵盤按下。而對于矩陣排列式,則通常采用行掃描法。所謂行掃描法,就是通過行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所連接的輸出端口得到的是全“1”信號;如果有鍵按下的話,則得到的是非全“1”信號。BACKNEXTHOME3.如何消除鍵的抖動由于按鍵為機械開關(guān)結(jié)構(gòu),因此機械觸點的彈性及電壓突跳等原因,往往在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動,如下圖所示。人按鍵的時間最快大約為20毫秒。4.鍵的保護鍵的保護是指當(dāng)有雙鍵或多鍵同時按下時會出現(xiàn)什么問題以及如何加以解決。以上圖所示為例,若在同一行上有兩個鍵同時按下,從硬件上來說,不會出現(xiàn)什么問題;從軟件上來說,由于這時讀入的列代碼中出現(xiàn)了兩個0,由此代碼與行值組合成的鍵特征值就超出了原設(shè)定鍵的范圍,因此也就查不出有效的鍵值來。一旦出現(xiàn)這樣情況,一般作為廢鍵處理。BACKNEXTHOME鍵盤接口電路1、獨立連接式由于獨立連接式的按鍵數(shù)量一般較少,因而可以直接連接到單片機的I/O口上,通過讀I/O口指令來查詢是否又按鍵被按下。BACKNEXTHOME2、矩陣排列式在一般情況下,單片機本身的I/O口會用作其它目的,則通常通過外擴I/O接口芯片來構(gòu)成鍵盤接口電路,較常用的是8155、8255A等接口芯片。下圖是采用8155接口芯片構(gòu)成8×4鍵盤的接口電路,其中A口為輸入,作為列線;C口為輸出,作為行線(只用了PC0~PC3四根口線)。具體過程如下:首先,為了提高效率,一般先快速檢查整個鍵盤中是否有鍵按下;然后,再確定按下的是哪一個鍵。其次,再用逐行掃描的方法來確定閉合鍵的具體位置。方法是:先掃描第0行,即輸出1110(第0行為“0”,其余7行為“1”),然后讀入列信號,判斷是否為全“1”,是則掃描第1行。再次,若發(fā)現(xiàn)有鍵被按下,則延時一段時間后再次讀入數(shù)據(jù),若數(shù)據(jù)不為全“1”,且位置與上次讀入數(shù)據(jù)相同,則可確定有鍵被按下,轉(zhuǎn)去執(zhí)行相應(yīng)的服務(wù)程序。最后,重新開始第一步驟。采用8155的鍵盤接口電路BACKNEXTHOMEBACKNEXTHOME8.5.2LED

溫馨提示

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

評論

0/150

提交評論