版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第第9 9章章 AT89C51AT89C51單片機單片機 的的I/OI/O擴展擴展12內(nèi)容概要內(nèi)容概要AT89C51有4個I/O口P0P3,真正用作I/O口線的只有P1口口的8位I/O口線和P3P3口口的某些位線。因此,大多需要大多需要外部I/O接口的擴展。介紹AT89C51與兩種兩種常用的可編程I/O接口芯片82C55和81C55的擴展接口設(shè)計。此外還介紹使用廉價的74LSTTL芯片芯片擴展并行I/O接口以及用AT89C51串行口串行口來擴展并行I/O接口的設(shè)計。最后介紹使用I/O口控制口控制的聲音聲音報警報警接口。39.1 I/O接口擴展概述接口擴展概述擴展I/O接口與擴展存儲器一樣,都
2、屬于系統(tǒng)擴展系統(tǒng)擴展的內(nèi)容。擴展的I/O接口應(yīng)該具有哪些功能?9.1.1 擴展的擴展的I/O接口功能接口功能擴展的I/O接口電路主要應(yīng)滿足以下功能要求。1實現(xiàn)和不同外設(shè)的速度匹配實現(xiàn)和不同外設(shè)的速度匹配大多數(shù)外設(shè)大多數(shù)外設(shè)的速度很慢速度很慢,無法和s量級的單片機速度量級的單片機速度相比。單片機在與外設(shè)間進(jìn)行數(shù)據(jù)傳送時,只有在確認(rèn)外設(shè)已為數(shù)據(jù)傳送做好準(zhǔn)備做好準(zhǔn)備的前提下才能進(jìn)行數(shù)據(jù)傳送才能進(jìn)行數(shù)據(jù)傳送。外設(shè)是否準(zhǔn)備好,就需要I/O接口電路與外設(shè)之間傳送狀態(tài)傳送狀態(tài)信息信息,以實現(xiàn)單片機與外設(shè)之間的速度匹配。342輸出數(shù)據(jù)鎖存輸出數(shù)據(jù)鎖存與外設(shè)比,單片機的工作速度快,與外設(shè)比,單片機的工作速度快,
3、數(shù)據(jù)在數(shù)據(jù)總線上保數(shù)據(jù)在數(shù)據(jù)總線上保留的時間十分短暫留的時間十分短暫,無法滿足慢速外設(shè)的數(shù)據(jù)接收。所以,無法滿足慢速外設(shè)的數(shù)據(jù)接收。所以在擴展的在擴展的I/O接口電路中接口電路中應(yīng)有輸出數(shù)據(jù)鎖存器應(yīng)有輸出數(shù)據(jù)鎖存器,以保證輸,以保證輸出數(shù)據(jù)能出數(shù)據(jù)能為慢速的接收設(shè)備為慢速的接收設(shè)備所接收。所接收。3輸入數(shù)據(jù)三態(tài)緩沖輸入數(shù)據(jù)三態(tài)緩沖數(shù)據(jù)總線數(shù)據(jù)總線上可能上可能“掛掛”有多個數(shù)據(jù)源有多個數(shù)據(jù)源,為使傳送數(shù)據(jù)時,為使傳送數(shù)據(jù)時不發(fā)生沖突不發(fā)生沖突,只允許當(dāng)前時刻,只允許當(dāng)前時刻正在接收數(shù)據(jù)的正在接收數(shù)據(jù)的I/O接口使接口使用數(shù)據(jù)總線用數(shù)據(jù)總線,其余的其余的I/O接口接口應(yīng)處于隔離狀態(tài)應(yīng)處于隔離狀態(tài),
4、為此要求,為此要求I/O接口電路能為數(shù)據(jù)輸入提供三態(tài)緩沖功能。接口電路能為數(shù)據(jù)輸入提供三態(tài)緩沖功能。459.1.2 I/O端口的編址端口的編址介紹I/O端口編址端口編址之前,首先要弄清楚I/O接口接口和I/O端端口口的概念。I/O接口接口是單片機與外設(shè)間的連接電路的總稱。I/O端口端口(簡稱I/O口)是指I/O接口電路中具有單元地址的寄存器或緩沖器。一個I/O接口芯片可以有多個I/O端口,如數(shù)據(jù)口,命令口,狀態(tài)口數(shù)據(jù)口,命令口,狀態(tài)口。當(dāng)然,并不是所有的外設(shè)都一定需要3種端口齊全的I/O接口。每個I/O接口中的端口接口中的端口都要有地址都要有地址,以便AT89C51通過讀寫端口來和外設(shè)交換信息
5、和外設(shè)交換信息。常用的I/O端口編址端口編址有兩種方式,獨立編址方式獨立編址方式與統(tǒng)一編址方式統(tǒng)一編址方式。561獨立編址獨立編址I/O端口地址空間和存儲器地址空間分開編址。優(yōu)點是I/O地址空間和存儲器地址空間相互獨立,界限分明。但需要設(shè)置一套專門的讀寫I/O端口的指令和控制信號。2統(tǒng)一編址把I/O端口與數(shù)據(jù)存儲器單元同等對待。I/O端口和外部數(shù)據(jù)存儲器RAM統(tǒng)一編址統(tǒng)一編址。因此外部數(shù)據(jù)存儲器空間也包括I/O端口在內(nèi)。優(yōu)點優(yōu)點是不需專門的I/O指令。缺點缺點是需要把數(shù)據(jù)存儲器是需要把數(shù)據(jù)存儲器單元地址與單元地址與I/O端口的地址劃分清楚端口的地址劃分清楚,避免數(shù)據(jù)沖突。679.1.3 I/O
6、數(shù)據(jù)的傳送方式數(shù)據(jù)的傳送方式為了實現(xiàn)和不同外設(shè)的速度匹配速度匹配,必須根據(jù)不同外設(shè)選擇恰當(dāng)?shù)腎/O數(shù)據(jù)傳送方式數(shù)據(jù)傳送方式。I/O數(shù)據(jù)傳送方式有:同步傳送、異步傳送和中斷傳送。1同步傳送同步傳送同步傳送又稱無條件傳送。當(dāng)外設(shè)速度和單片機的速度相比擬時,常采用同步傳送方式,典型的同步傳送是單片單片機和外部數(shù)據(jù)存儲器之間機和外部數(shù)據(jù)存儲器之間的數(shù)據(jù)傳送數(shù)據(jù)傳送。2查詢傳送查詢傳送又稱有條件傳送(也稱異步式傳送)。通過查詢外設(shè)“準(zhǔn)備好”后,再進(jìn)行數(shù)據(jù)傳送。優(yōu)點是通用性好,硬件連線和查詢程序簡單,但工作效率不高。783中斷傳送中斷傳送為了提高提高單片機對外設(shè)的工作效率工作效率,通常采用中斷傳送方式,來
7、實現(xiàn)I/O數(shù)據(jù)的傳送。單片機只有在外設(shè)準(zhǔn)備好只有在外設(shè)準(zhǔn)備好后,才中斷主程序的執(zhí)行后,才中斷主程序的執(zhí)行,從而進(jìn)入與外設(shè)數(shù)據(jù)傳送的中斷服務(wù)子程序,進(jìn)行數(shù)據(jù)傳送。中斷服務(wù)完成后又返回主程序斷點處繼續(xù)執(zhí)行。采用中斷方式可大大提高工作效率提高工作效率。9.1.4 I/O接口電路接口電路常用的外圍I/O接口芯片:(1)82C55:可編程通用并行接口(3個8位I/O口)。89(2)81C55:可編程的IO/RAM擴展接口電路(2個8位I/O口,1個6位I/O口,256RAM單元,1個14位的減法計數(shù)器)。都可以和AT89C51直接連接,接口邏輯簡單。9.2 AT89C51擴展擴展I/O接口芯片接口芯片8
8、2C55的設(shè)計的設(shè)計先介紹可編程并行I/O接口芯片82C55的應(yīng)用特性應(yīng)用特性,然后介紹AT89C51與82C55的接口電路接口電路以及軟件設(shè)計軟件設(shè)計。9.2.1 82C55芯片簡介芯片簡介Intel公司的可編程并行I/O接口芯片,3個個8位并行位并行I/O口,口,3種工作方式,種工作方式,單片機與多種外設(shè)連接時的中間接口電路。中間接口電路。引腳及內(nèi)部結(jié)構(gòu)如圖圖9-1和圖圖9-2所示所示。91010圖圖9-1 82C55的引腳圖的引腳圖 圖圖9-2 82C55的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)111引腳說明引腳說明共40個引腳個引腳,引腳功能如下引腳功能如下:D7D0:三態(tài)雙向數(shù)據(jù)線,與單片機的P0口連接
9、,用來與單片機之間傳送數(shù)據(jù)信息。 :片選信號線,低有效,表示本芯片被選中。 :讀信號線,低有效,讀82C55端口數(shù)據(jù)的控制信號。 :寫信號線,低電平有效,用來向82C55寫入端口數(shù)據(jù)的控制信號。VCC:+5V電源。11CSRDWR12PA7PA0:端口A輸入/輸出線。PB7PB0:端口B輸入/輸出線。PC7PC0:端口C輸入/輸出線。A1、A0:地址線,用來選擇82C55內(nèi)部的4個端口。RESET:復(fù)位引腳,高電平有效。2內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)如圖圖9-2所示所示,3個并行數(shù)據(jù)輸入個并行數(shù)據(jù)輸入/輸出端口輸出端口,兩種工作兩種工作方式方式的控制電路,一個讀/寫控制邏輯電路和一個8位數(shù)據(jù)總線緩沖器。各
10、部件的功能如下:1213(1)端口)端口PA、PB、PC3個8位并行口PA、PB和PC,都可以選為輸入/輸出工作模式,功能和結(jié)構(gòu)上有差異。PA口:口:一個8位數(shù)據(jù)輸出鎖存器和緩沖器輸出鎖存器和緩沖器;一個8位數(shù)據(jù)輸入鎖存輸入鎖存器。PB口:口:一個8位數(shù)據(jù)輸出鎖存器和緩沖器輸出鎖存器和緩沖器;一個8位數(shù)據(jù)輸入緩沖器輸入緩沖器。PC口:口:一個8位的輸出鎖存器輸出鎖存器;一個8位數(shù)據(jù)輸入緩沖輸入緩沖器器。通常PA口、口、PB口口作為輸入/輸出口,PC口口既可作為輸入/輸出口,也可在軟件控制下,分為兩個4位的端口,作為端口PA、PB選通方式操作時的狀態(tài)控制信號。1314(2)A組和組和B組控制電路
11、組控制電路是兩組根據(jù)AT89C51寫入的“命令字命令字”控制82C55工作方式的控制電路。A組組控制PA口和PC口的上半部上半部(PC7PC4);B組組控制PB口和PC口的下半部下半部(PC3PC0),并可用“命令字”來對端口PC的每一位實現(xiàn)按位置“1”或清“0”。(3)數(shù)據(jù)總線緩沖器)數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器是一個三態(tài)雙向8位緩沖器,作為82C55與系統(tǒng)總線之間的接口,用來傳送用來傳送數(shù)據(jù)、指令、控制命令以及外部狀態(tài)信息。1415(4)讀)讀/寫控制邏輯電路寫控制邏輯電路接收接收AT89C51單片機發(fā)來單片機發(fā)來的控制信號控制信號 、 、RESET、地址信號地址信號A1、A0等,然后根據(jù)
12、控制信號的要求,端口數(shù)據(jù)被AT89C51單片機讀出,或者將AT89C51單片機送來的數(shù)據(jù)寫入端口。各端口工作狀態(tài)與控制信號的關(guān)系見表表9-1。15RDWR1616RDWRCS179.2.2 工作方式選擇控制字及端口工作方式選擇控制字及端口PC置位置位/復(fù)位控制字復(fù)位控制字可向向82C55控制寄存器寫入兩種控制寄存器寫入兩種不同的控制字不同的控制字。1工作方式選擇控制字工作方式選擇控制字82C55有3種種基本工作方式:(1)方式)方式0基本輸入/輸出;(2)方式)方式1選通輸入/輸出;(3)方式)方式2雙向傳送(僅PA口有此工作方式)。3種工作方式方式控制字來決定。格式格式如圖圖9-3所示所示。
13、最高位D7=1,為本方式控制字的標(biāo)志標(biāo)志,以便與另一控制字相區(qū)別(最高位D7 = 0)。171818圖圖9-3 82C55的方式控制字格式的方式控制字格式19PCPC口分兩部分口分兩部分,隨,隨PAPA口口稱為稱為A A組組,隨,隨PBPB口口稱為稱為B B組組。其中。其中PAPA口口可工作于方式可工作于方式0 0、1 1和和2 2,而,而PBPB口口只能工作在只能工作在方式方式0 0和和1 1?!纠?-19-1】AT89C51AT89C51向向82C5582C55的控制字寄存器寫入的控制字寄存器寫入工作工作方式控制字方式控制字95H95H,根據(jù),根據(jù)圖圖9-39-3,將,將82C5582C
14、55編程設(shè)置為:編程設(shè)置為:PAPA口口方式方式0 0輸入,輸入,PBPB口方式口方式1 1輸出,輸出,PCPC口的上半部分(口的上半部分(PC7PC7PC4PC4)輸出,輸出,PCPC口的下半部分(口的下半部分(PC3PC3PC0PC0)輸入。)輸入。MOVMOVDPTRDPTR,# #H H;控制字寄存器端口地址;控制字寄存器端口地址;H H送送DPTR DPTR MOV MOV A A,#95H#95H; 方式控制字方式控制字83H83H送送A AMOVXMOVXDPTRDPTR,A A; 控制字控制字83H83H送控制字寄存器送控制字寄存器19202PC口按位置位口按位置位/復(fù)位控制字
15、復(fù)位控制字為另一控制字。即PC口中任何一位,可用一個寫入82C55控制口的置位置位/復(fù)位控制字復(fù)位控制字來對PC口按位置置“1”或清“0”。用于位控位控。格式如圖圖9-4所示所示?!纠?-2】 AT89C51向82C55的控制字寄存器寫入工作工作方式控制字方式控制字07H,則PC3置置1;08H寫入控制口,則PC4清清0。程序段如下:MOVDPTR,#H; 控制寄存器端口地址;H送DPTR MOV A,#07H; 方式控制字83H送A2021圖圖9-4 PC口按位置位口按位置位/復(fù)位控制字格式復(fù)位控制字格式22MOVXDPTR,A; 控制字83H送控制寄存器,把PC3置1MOVDPTR,#H
16、; 控制字寄存器端口地址送DPTR MOV A,#08H; 方式控制字08H送AMOVXDPTR,A; 08H送控制字寄存器,PC4清022239.2.3 82C55的的3種工作方式種工作方式1方式方式0是基本輸入基本輸入/輸出方式輸出方式。T89S51可對82C55進(jìn)行I/O數(shù)據(jù)的無條件傳送無條件傳送。例如,例如,AT89C51單片機從82C55的某一輸入口讀入一組開關(guān)狀態(tài),從82C55輸出控制一組指示燈的亮、滅。并并不需要任何條件,不需要任何條件,外設(shè)I/O數(shù)據(jù)可在82C55的各端口得到鎖存和緩沖。因此,方式方式0稱為基本輸入基本輸入/輸出方式輸出方式。方式0下,3個端口都可以由軟件設(shè)置為
17、輸入或輸出,不需要應(yīng)答聯(lián)絡(luò)信號。方式0的基本功能基本功能如下:2324(1)具有兩個8位端口(PA、PB)和兩個4位端口(PC的上半部分和下半部分)。(2)任何端口都可以設(shè)定為輸入或輸出,各端口的輸入、輸出共有16種組合。PA口、口、PB口和口和PC口口均可設(shè)定為均可設(shè)定為方式方式0,并可根據(jù)需要,向控制寄存器寫入工作方式控制字,規(guī)定各端口為輸入或輸出方式。25【例例9-3】假設(shè)82C55的控制字寄存器控制字寄存器端口地址為端口地址為FF7FH,令PA口和口和PC口口的高高4位位為方式0輸出,PB口口和PC口口的低低4位位為方式0輸入,初始化程序:MOVDPTR,#0FF7FH; 端口地址#0
18、FF7F送DPTR MOV A,#83H; 方式控制字83H送AMOVXDPTR,A; 控制字83H送控制字寄存器25262 2方式方式1 1是一種采用應(yīng)答聯(lián)絡(luò)應(yīng)答聯(lián)絡(luò)的輸入的輸入/輸出工作方式輸出工作方式。PA口、PB口皆可設(shè)成這種工作方式。在方式1下,82C55的PA口和口和PB口口通常用于I/O數(shù)據(jù)的傳送,PC口口用作PA口和PB口的應(yīng)答聯(lián)絡(luò)信號線應(yīng)答聯(lián)絡(luò)信號線,以實現(xiàn)采用中斷方式來傳送I/O數(shù)據(jù)。PC口的PC7PC0的應(yīng)答聯(lián)絡(luò)線是規(guī)定好的應(yīng)答聯(lián)絡(luò)線是規(guī)定好的,其各位分配如如圖圖9-5和圖圖9-7所示,圖中,標(biāo)有I/O的各位仍可用作基本輸入/輸出,不作應(yīng)答聯(lián)絡(luò)用。下介紹方式1輸入/輸出時
19、的應(yīng)答聯(lián)絡(luò)信號應(yīng)答聯(lián)絡(luò)信號與工作原理工作原理。2627(1)方式)方式1輸入輸入方式1輸入應(yīng)答聯(lián)絡(luò)信號如圖圖9-5所示所示。其中 與IBF為一對一對應(yīng)答聯(lián)絡(luò)信號。各應(yīng)答聯(lián)絡(luò)信號應(yīng)答聯(lián)絡(luò)信號的功能功能如下。n :是由輸入外設(shè)輸入外設(shè)發(fā)給82C55的選通輸入信號選通輸入信號,低有效。nIBF:輸入緩沖器滿,應(yīng)答信號。82C55通知外設(shè)已收到外設(shè)發(fā)來的且已進(jìn)入輸入緩沖器的數(shù)據(jù),高有效。nINTR:由82C55向AT89C51單片機發(fā)出的中斷請求信號,高有效。nINTEA:控制PA口是否允許中斷口是否允許中斷的控制信號,由PC4的置位/復(fù)位來控制。27STBSTB28nINTEB:控制PB口是否允許中
20、斷的控制信號,由PC2的置位/復(fù)位來控制。方式1輸入如圖圖9-6所示所示。下面以PA口的方式1輸入為例,介紹方式方式1輸入的工作過程。輸入的工作過程。 當(dāng)外設(shè)向82C55輸入一個數(shù)據(jù)并送到PA7PA0時,外設(shè)自動在 上向82C55發(fā)送一個低電平選通信號。 82C55收到 后,先把PA7PA0輸入的數(shù)據(jù)存存入入PA口的輸入數(shù)據(jù)緩沖/鎖存器,然后使輸出應(yīng)答線IBF變?yōu)楦撸ㄖ斎胪庠O(shè),PA口已收到它送來的數(shù)據(jù)。 82C55檢測到 由低電平變?yōu)楦唠娖?、IBFA(PC5)為“1”狀態(tài)和中斷允許INTEA(PC4)=1時,使28STBSTBSTB29INTRA(PC3)變?yōu)楦唠娖剑┳優(yōu)楦唠娖?,向單片機發(fā)
21、出中斷請求。INTEA的狀態(tài)可由用戶通過指令對PC4的單一置位/復(fù)位控制字來控制。 單片機響應(yīng)中斷后,進(jìn)入中斷服務(wù)子程序進(jìn)入中斷服務(wù)子程序來讀取讀取PA口的外設(shè)發(fā)來的輸入數(shù)據(jù)口的外設(shè)發(fā)來的輸入數(shù)據(jù)。當(dāng)輸入數(shù)據(jù)被單片機讀走后,82C55撤銷撤銷INTRA上的中斷請求上的中斷請求,并使IBFA變低低,通知輸通知輸入外設(shè)入外設(shè)可傳送下一個輸入數(shù)據(jù)。293030圖圖9-5 方式方式1輸入應(yīng)答聯(lián)絡(luò)信號輸入應(yīng)答聯(lián)絡(luò)信號3131圖圖9-6 PA口方式口方式1輸入工作過程示意圖輸入工作過程示意圖32(2)方式)方式1輸出輸出方式1輸出時,應(yīng)答聯(lián)絡(luò)信號如圖圖9-7所示所示。 與與 構(gòu)成一對一對應(yīng)答聯(lián)絡(luò)信號應(yīng)答聯(lián)
22、絡(luò)信號,應(yīng)答聯(lián)絡(luò)信號功能如下。n :端口輸出緩沖器滿信號,低有效,它是82C55發(fā)給外設(shè)的聯(lián)絡(luò)信號,表示外設(shè)可以將數(shù)據(jù)取走。n :外設(shè)應(yīng)答信號,低有效。表示外設(shè)已把82C55發(fā)出的數(shù)據(jù)取走。nINTR:中斷請求信號,高有效。表示該數(shù)據(jù)已被外設(shè)取走,向單片機單片機發(fā)出中斷請求,如果AT89C51響應(yīng)該中斷,在中斷服務(wù)子程序中向82C55寫入要輸出的下一數(shù)據(jù)。32OBFACKOBFACK33nINTEA控制PA口是否允許中斷,由PC6控制。nINTEB控制PB口是否允許中斷,由PC2控制。方式1輸出工作示意如圖圖9-8所示所示。以PB口的方式口的方式1輸出輸出為例,介紹工作過程。 AT89C51可
23、以通過“MOVX Ri,A”指令把輸出數(shù)據(jù)送到B口的輸出數(shù)據(jù)鎖存器,82C55收到后便令輸出緩沖器滿引腳 (PC1)變低,以通知輸出設(shè)備輸出的數(shù)據(jù)已在PB口的PB7PB0上。 輸出外設(shè)收到 上低電平后,先從PB7PB0上取走輸出數(shù)據(jù),然后使 B 變低電平,以通知82C55輸出外設(shè)已收到82C55輸出的數(shù)據(jù)。33OBFACKOBF3434圖圖9-7 方式方式1輸出應(yīng)答聯(lián)絡(luò)信號輸出應(yīng)答聯(lián)絡(luò)信號35 圖圖9-8 PB口方式口方式1輸出工作過程示意圖輸出工作過程示意圖3536 82C55從應(yīng)答輸入線 B收到低電平后就對 B 和中斷允許控制位INTEB狀態(tài)進(jìn)行檢測,若皆為高電平,則INTRB變?yōu)楦唠娖阶?/p>
24、為高電平而向單片機請求中斷。 AT89C51單片機響應(yīng)響應(yīng)INTRB上中斷請求后便可通過中斷服務(wù)程序把下一個輸出數(shù)據(jù)下一個輸出數(shù)據(jù)送到PB口的輸出數(shù)據(jù)鎖存器。重復(fù)上述過程,完成數(shù)據(jù)的輸出。3方式方式2只有PA口才有方式2。圖圖9-9為工作示意圖。方式方式2是是方方式式1輸入輸入和和輸出輸出組合組合。PA7PA0為雙向I/O總線。當(dāng)作為輸入口使用,PA7PA0受STBA 和IBFA控制;當(dāng)作輸出輸出端口端口使用,PA7PA0受 A、 A 控制。36ACKOBFACKOBF3737圖圖9-9 PA口在方式口在方式2下的工作示意圖下的工作示意圖38方式方式2特別適用于像鍵盤、顯示器一類的外部設(shè)備特別
25、適用于像鍵盤、顯示器一類的外部設(shè)備,因為有時需要把鍵盤上輸入的編碼信號通過PA口送給單片機,有時又需把單片機發(fā)出的數(shù)據(jù)通過PA口送給顯示器顯示。9.2.4 AT89C51單片機與單片機與82C55的接口設(shè)計的接口設(shè)計1硬件接口電路硬件接口電路如圖9-10為AT89C51擴展一片82C55的電路。P0.1、P0.0經(jīng)經(jīng)74LS373與與82C55的的A1、A0連接連接;P0.7經(jīng)74LS373與片選端 相連,其它地址線懸空;82C55的控制線 、 直接與單片機 和和 端相連;單片機數(shù)據(jù)總線P0.0P0.7與82C55數(shù)據(jù)線D0D7連接。38CSRDWRRDWR392確定確定82C55端口地址端口
26、地址圖圖9-10中中82C55只有只有3條線與條線與AT89C51地址線相接,片地址線相接,片選端選端 、端口地址選擇端、端口地址選擇端A1、A0,分別接于,分別接于P0.7、P0.1和和P0.0,其他地址線全懸空。顯然只要保證,其他地址線全懸空。顯然只要保證P0.7為低為低電平時,電平時,即可選中即可選中82C55;若;若P0.1、P0.0再為再為“00”,則,則選中選中82C55的的PA口。同理口。同理P0.1、P0.0為為“01”、“10”、“11”分別選中分別選中PB口、口、PC口及控制口??诩翱刂瓶凇H舳丝诘刂酚萌舳丝诘刂酚?6位表示,其他無用端全設(shè)為位表示,其他無用端全設(shè)為“1”(
27、也(也可把無用端全設(shè)為可把無用端全設(shè)為“0”),則),則82C55的的A、B、C及控制及控制口口地址地址分別為分別為FF7CH、FF7DH、FF7EH、FF7FH。39CS4040圖圖9-10 AT89C51單片機擴展一片單片機擴展一片82C55的接口電路的接口電路41如果沒有用到的位取“0”,則4個端口地址分別為個端口地址分別為0000H、0001H、0002H、0003H,只要保證 、A1、A0的狀態(tài),無用位設(shè)為“0”或“1”均可。3軟件編程軟件編程在實際設(shè)計中,須根據(jù)外設(shè)的類型選擇82C55的操作方式,并在初始化程序中把相應(yīng)控制字寫入控制口在初始化程序中把相應(yīng)控制字寫入控制口。下面根據(jù)圖
28、圖9-10,介紹對82C55進(jìn)行操作的編程。【例例9-4】要求82C55工作在方式0,且PA口作為輸入,PB口、PC口作為輸出,程序如下:MOVA,#90H ;控制字送A MOVDPTR,#0FF7FH;控制寄存器地址FF7FHDPTR4142MOVXDPTR,A;方式控制字控制寄存器MOVDPTR,#0FF7CH;PA口地址FF7CHDPTRMOVXA,DPTR;從PA口讀入數(shù)據(jù)AMOVDPTR,#0FF7DH;PB口地址FF7DHDPTRMOVA,#data1;要輸出的數(shù)據(jù)#data1AMOVXDPTR,A;將#data1送PB口輸出MOVDPTR,#0FF7EH;PC口地址DPTRMOV
29、A,# data 2;數(shù)據(jù)#data 2AMOVXDPTR,A;將數(shù)據(jù)#data 2送PC口輸出4243【例例9-5】對端口PC的置位/復(fù)位。1PC口1中的任1一位,均可用指令來置位或復(fù)位。例如,如果想把PC口的PC5置“1”,相應(yīng)的控制字為00001011B = 0BH(關(guān)于82C55的PC口置位/復(fù)位的控制字說明見圖9-4)。程序如下:MOVR1,7FH;控制口地址;控制口地址7FHR1MOV A,0BH ;控制字;控制字0BHAMOVX R1, A ;控制字;控制字7FH控制口,把控制口,把PC5置置14344如果想把PC口的PC5復(fù)位復(fù)位,相應(yīng)的控制字0AH,程序如下:MOV R1,7
30、FH;控制口地址;控制口地址7FH R1MOV A,0AH;控制字;控制字0AHAMOVX R1,A;控制字;控制字7FH控制口,控制口, PC5清清082C55接口芯片在AT89C51單片機應(yīng)用系統(tǒng)中廣泛用于與各種外部數(shù)字設(shè)備的連接,如打印機、鍵盤、顯示器以及作為數(shù)字信息的輸入、輸出接口。44459.4 利用利用74LSTTL電路擴展并行電路擴展并行I/O口口在單片機應(yīng)用中,有些場合有些場合需要降低成本、縮小體積,這時采用TTL電路、CMOS電路鎖存器或三態(tài)門電路也可構(gòu)成各種類型的簡單輸入/輸出口。如圖圖9-20所示為一個利用用74LS244和和74LS273芯片芯片,將將P0口擴展成簡單的
31、輸入口擴展成簡單的輸入/輸出口的電路輸出口的電路。74LS244和74LS273的工作受AT89C51的P2.0、 、 3條條控制線控制。74LS244作為擴展輸入口,8個輸個輸入端入端分別接8個按鈕開關(guān)。74LS273是8D鎖存器擴展輸出擴展輸出口口,接8個個LED發(fā)光二極管發(fā)光二極管,以顯示以顯示8個按鈕個按鈕開關(guān)狀態(tài)。開關(guān)狀態(tài)。45RDWR46圖圖9-20 74LSTTL I/O擴展舉例擴展舉例47當(dāng)某條輸入口線的按鈕開關(guān)按下時,該輸入口線為低電為低電平平,讀入單片機后,其相應(yīng)位為“0”,然后再將口線的狀態(tài)經(jīng)74LS273輸出,某位低電平時二極管發(fā)光,從而顯示出按下的按鈕開關(guān)的位置。該電
32、路的工作原理電路的工作原理如下。當(dāng)P2.0=0, =0( =1)時,選中74LS244芯片,此時若無按鈕開關(guān)按下,輸入全為高電平。當(dāng)某開關(guān)按下時則對應(yīng)位輸入為“0”,74LS244的輸入端不全為“1”,其輸入狀態(tài)通過P0口數(shù)據(jù)線被讀入AT89C51片內(nèi)。47RDWR48當(dāng)P2.0 = 0, =1 ( = 0)時,選中74LS273芯片,CPU通過P0口輸出數(shù)據(jù)鎖存到74LS273,74LS273的輸出端低電平位對應(yīng)的LED發(fā)光二極管點亮??傊?,在圖9-20中只要保證P2.0為“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(無效位全為“1”),或用0000H(無效位全為“0”)都可。
33、48RDWR49輸入程序段:輸入程序段:MOV DPTR,#0FEFFH;I/O地址地址DPTRMOVX A,DPTR ; 為低,為低,74LS244數(shù)據(jù)被讀入數(shù)據(jù)被讀入A中中輸出程序段:輸出程序段:MOV A,#data;數(shù)據(jù);數(shù)據(jù)#dataAMOV DPTR,#0FEFFH;I/O地址地址#0FEFFHDPTRMOVXDPTR,A; 為低,數(shù)據(jù)經(jīng)為低,數(shù)據(jù)經(jīng)74LS273口輸出口輸出49RDWR50【例例9-9】編寫程序把按鈕開關(guān)狀態(tài)通過圖9-20的發(fā)光二極管顯示出來。程序如下:DDIS:MOV DPTR,#0FEFFH ;輸入口地址;輸入口地址DPTRLP:MOVX A,DPTR;按鈕開
34、關(guān)狀態(tài)讀入;按鈕開關(guān)狀態(tài)讀入A中中 MOVX DPTR,A;A中數(shù)據(jù)送顯示輸出口中數(shù)據(jù)送顯示輸出口 SJMP LP ;反復(fù)連續(xù)執(zhí)行;反復(fù)連續(xù)執(zhí)行由程序可看出,對于擴展接口的輸入/輸出就像從外部RAM讀/寫數(shù)據(jù)一樣方便。圖圖9-20僅僅擴展了兩片,如果僅僅擴展了兩片,如果仍不夠用,還可擴展多片仍不夠用,還可擴展多片74LS244、74LS273之類的芯片之類的芯片。但作為輸入輸入口時,一定要求有三態(tài)功能要求有三態(tài)功能,否則將影響總線的正常工作。50519.5 用用AT89C51單片機的串行口擴展并行口單片機的串行口擴展并行口串口的方式方式0用于用于I/O擴展擴展。方式0為同步移位寄存器同步移位寄
35、存器工作方式,波特率為fosc/12。數(shù)據(jù)由數(shù)據(jù)由RXD端(端(P3.0)輸入)輸入,同步移位時鐘由TXD端(端(P3.1)輸出。9.5.1 用用74LS165擴展并行輸入口擴展并行輸入口圖9-21串口擴展兩個擴展兩個8位并行輸入口。位并行輸入口。74LS165是8位并行輸入串行輸出的寄存器。當(dāng)74LS165的S/ 端由高到低跳變,并行輸入端的數(shù)據(jù)被置入寄存器;當(dāng)S/ = 1,且時鐘禁止端(15腳)為低時,允許TXD(P3.1)移位時鐘輸入,在該脈沖作用下,數(shù)據(jù)由右向左方向移動。51LL52TXD與所有74LS165的的CP相連相連;RXD與74LS165的串串行輸出端行輸出端QH相連;P1.
36、0與 S/ 相連,控制74LS165的串行移位或并行輸入;15腳接地,允許時鐘輸入。當(dāng)擴展多個8位輸入口時,相鄰兩芯片的首尾(QH與SIN)相連。 圖圖9-21 利用74LS165擴展并行輸入口52L53【例例9-10】從16位擴展口讀入5組數(shù)據(jù)(每組2B),把它們轉(zhuǎn)存到內(nèi)部RAM 20H開始的單元。 MOVR7,#05H;設(shè)置讀入組數(shù);設(shè)置讀入組數(shù) MOV R0,#20H;設(shè)置內(nèi)部;設(shè)置內(nèi)部RAM數(shù)據(jù)區(qū)首址數(shù)據(jù)區(qū)首址START:CLR P1.0;并行置入數(shù)據(jù),;并行置入數(shù)據(jù),S/ =0 SETB P1.0;允許串行移位,;允許串行移位,S/ =1 MOV R2,#02H;設(shè)每組字節(jié)數(shù),;設(shè)每
37、組字節(jié)數(shù), 即即74LS165的個數(shù)的個數(shù)RXDATA:MOV SCON,#00010000H;設(shè)置串口方式;設(shè)置串口方式0,允許,允許;接收,啟動接收過程;接收,啟動接收過程5354WAIT:JNB RI,WAIT;未接收完一幀,循環(huán)等待;未接收完一幀,循環(huán)等待 CLR RI;RI標(biāo)志清標(biāo)志清“0”,準(zhǔn)備下次接,準(zhǔn)備下次接收收 MOV A,SBUF;讀入數(shù)據(jù);讀入數(shù)據(jù) MOV R0,A;送至;送至RAM緩沖區(qū)緩沖區(qū) INC R0;指向下一個地址;指向下一個地址 DJNZ R2,RXDATA;未讀完一組數(shù)據(jù),;未讀完一組數(shù)據(jù), 繼續(xù)繼續(xù) DJNZ R7,START;5組數(shù)據(jù)未讀完重新并行置入組
38、數(shù)據(jù)未讀完重新并行置入 ;對數(shù)據(jù)進(jìn)行處理;對數(shù)據(jù)進(jìn)行處理5455串行接收過程采用查詢等待查詢等待的方式,如必要,可改中斷中斷方式方式。9.5.2 用用74LS164擴展并行輸出口擴展并行輸出口圖圖9-22為串口外接兩片兩片74LS164(8位串入并出移位寄存器)擴展兩個8位并行輸出口的接口電路。 圖圖9-22 利用74LS164擴展并行輸出口5556當(dāng)串口工作在方式0的發(fā)送,串行數(shù)據(jù)由串行數(shù)據(jù)由P3.0(RXD)送出,移位時鐘由送出,移位時鐘由P3.1(TXD)送出)送出。注意,由于74LS164無并行輸出控制端無并行輸出控制端,在串行輸入中,其輸出端的輸出端的狀態(tài)會不斷變化狀態(tài)會不斷變化,故
39、某些場合,在74LS164輸出端應(yīng)加接輸出三態(tài)門控制,以便保證串行輸入結(jié)束后再輸出數(shù)據(jù)。【例例9-11】將內(nèi)部RAM單元30H、31H的內(nèi)容經(jīng)串行口由74LS164并行輸出的子程序。START:MOVR7,#02H;設(shè)置要發(fā)送的字節(jié)個數(shù);設(shè)置要發(fā)送的字節(jié)個數(shù) MOV R0,#30H;設(shè)置地址指針;設(shè)置地址指針 MOV SCON,#00H;設(shè)置串行口為方式;設(shè)置串行口為方式05657SEND: MOV A,R0 MOV SBUF,A;啟動串行口發(fā)送過程;啟動串行口發(fā)送過程WAIT:JNB TI,WAIT;一幀未發(fā)完,等待;一幀未發(fā)完,等待 CLR TI INC R0;取下一個數(shù);取下一個數(shù) DJNZ
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄭州鐵路職業(yè)技術(shù)學(xué)院《攝影攝像》2023-2024學(xué)年第一學(xué)期期末試卷
- 長春醫(yī)學(xué)高等??茖W(xué)?!段⑸镔Y源保護(hù)與利用》2023-2024學(xué)年第一學(xué)期期末試卷
- 玉溪農(nóng)業(yè)職業(yè)技術(shù)學(xué)院《程序設(shè)計技術(shù)(C語言)》2023-2024學(xué)年第一學(xué)期期末試卷
- 物聯(lián)網(wǎng)設(shè)備電源功耗降低
- IT項目季報告模板
- 實習(xí)機會獲取指導(dǎo)
- 初一軍訓(xùn)學(xué)生發(fā)言稿
- 村容村情調(diào)研報告
- 統(tǒng)編版六年級語文上冊寒假作業(yè)(九)(有答案)
- 二零二五版房屋租賃合同附押金退還條款2篇
- 綠色供應(yīng)鏈管理制度內(nèi)容
- 心理學(xué)基礎(chǔ)知識考試參考題庫500題(含答案)
- 電力智慧檢修安全運行三維可視化管理平臺建設(shè)方案
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)集錦
- 消防安全應(yīng)急預(yù)案下載
- 《北航空氣動力學(xué)》課件
- 附件:財政業(yè)務(wù)基礎(chǔ)數(shù)據(jù)規(guī)范(3.0版)
- 電商公司售后服務(wù)管理制度
- 火災(zāi)應(yīng)急處理課件
- 創(chuàng)新者的逆襲3:新質(zhì)生產(chǎn)力的十八堂案例課-記錄
- 2024年河南省公務(wù)員考試《行測》真題及答案解析
評論
0/150
提交評論