




已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1,第9章 AT89S51單片機(jī)的 I/O擴(kuò)展,1,成都理工大學(xué)工程技術(shù)學(xué)院 自動(dòng)化工程系,2,2,第9章 目錄 9.1 I/O接口擴(kuò)展概述 9.1.1 擴(kuò)展的I/O接口功能 9.1.2 I/O端口的編址 9.1.3 I/O數(shù)據(jù)的傳送方式 9.1.4 I/O接口電路 9.2 AT89S51擴(kuò)展I/O接口芯片82C55的設(shè)計(jì) 9.2.1 82C55芯片簡介 9.2.2 工作方式選擇控制字及端口PC置位/復(fù)位控制字 9.2.3 82C55的3種工作方式 9.2.4 AT89S51單片機(jī)與82C55的接口設(shè)計(jì),3,9.3 AT89S51擴(kuò)展I/O接口芯片81C55的設(shè)計(jì) 9.3.1 81C55芯片介紹 9.3.2 81C55的工作方式 9.3.3 AT89S51單片機(jī)與81C55的接口設(shè)計(jì)及軟件編程 9.4 利用74LSTTL電路擴(kuò)展并行I/O口 9.5 用AT89S51單片機(jī)的串行口擴(kuò)展并行口 9.5.1 用74LS165擴(kuò)展并行輸入口 9.5.2 用74LS164擴(kuò)展并行輸出口 9.6 用I/O口控制的聲音報(bào)警接口 9.6.1 蜂鳴音報(bào)警接口 9.6.2 音樂報(bào)警接口,4,內(nèi)容概要 AT89S51有4個(gè)I/O口P0P3,真正用作I/O口線的只有P1口的8位I/O口線和P3口的某些位線。因此,大多需要外部I/O接口的擴(kuò)展。 介紹AT89S51與兩種常用的可編程I/O接口芯片82C55和81C55的擴(kuò)展接口設(shè)計(jì)。此外還介紹使用廉價(jià)的74LSTTL芯片擴(kuò)展并行I/O接口以及用AT89S51串行口來擴(kuò)展并行I/O接口的設(shè)計(jì)。最后介紹使用I/O口控制的聲音報(bào)警接口。,5,9.1 I/O接口擴(kuò)展概述 擴(kuò)展I/O接口與擴(kuò)展存儲(chǔ)器一樣,都屬于系統(tǒng)擴(kuò)展的內(nèi)容。擴(kuò)展的I/O接口應(yīng)該具有哪些功能? 9.1.1 擴(kuò)展的I/O接口功能 擴(kuò)展的I/O接口電路主要應(yīng)滿足以下功能要求。 1實(shí)現(xiàn)和不同外設(shè)的速度匹配 大多數(shù)外設(shè)的速度很慢,無法和s量級(jí)的單片機(jī)速度相比。單片機(jī)在與外設(shè)間進(jìn)行數(shù)據(jù)傳送時(shí),只有在確認(rèn)外設(shè)已為數(shù)據(jù)傳送做好準(zhǔn)備的前提下才能進(jìn)行數(shù)據(jù)傳送。外設(shè)是否準(zhǔn)備好,就需要I/O接口電路與外設(shè)之間傳送狀態(tài)信息,以實(shí)現(xiàn)單片機(jī)與外設(shè)之間的速度匹配。,5,6,2輸出數(shù)據(jù)鎖存 與外設(shè)比,單片機(jī)的工作速度快,數(shù)據(jù)在數(shù)據(jù)總線上保留的時(shí)間十分短暫,無法滿足慢速外設(shè)的數(shù)據(jù)接收。所以在擴(kuò)展的I/O接口電路中應(yīng)有輸出數(shù)據(jù)鎖存器,以保證輸出數(shù)據(jù)能為慢速的接收設(shè)備所接收。 3輸入數(shù)據(jù)三態(tài)緩沖 數(shù)據(jù)總線上可能“掛”有多個(gè)數(shù)據(jù)源,為使傳送數(shù)據(jù)時(shí)不發(fā)生沖突,只允許當(dāng)前時(shí)刻正在接收數(shù)據(jù)的I/O接口使用數(shù)據(jù)總線,其余的I/O接口應(yīng)處于隔離狀態(tài),為此要求I/O接口電路能為數(shù)據(jù)輸入提供三態(tài)緩沖功能。,6,7,9.1.2 I/O端口的編址 介紹I/O端口編址之前,首先要弄清楚I/O接口和I/O端口的概念。 I/O接口是單片機(jī)與外設(shè)間的連接電路的總稱。 I/O端口(簡稱I/O口)是指I/O接口電路中具有單元地址的寄存器或緩沖器。一個(gè)I/O接口芯片可以有多個(gè)I/O端口,如數(shù)據(jù)口,命令口,狀態(tài)口。當(dāng)然,并不是所有的外設(shè)都一定需要3種端口齊全的I/O接口。 每個(gè)I/O接口中的端口都要有地址,以便AT89S51通過讀寫端口來和外設(shè)交換信息。常用的I/O端口編址有兩種方式,獨(dú)立編址方式與統(tǒng)一編址方式。,7,8,1獨(dú)立編址 I/O端口地址空間和存儲(chǔ)器地址空間分開編址。優(yōu)點(diǎn)是I/O地址空間和存儲(chǔ)器地址空間相互獨(dú)立,界限分明。但需要設(shè)置一套專門的讀寫I/O端口的指令和控制信號(hào)。 2統(tǒng)一編址 把I/O端口與數(shù)據(jù)存儲(chǔ)器單元同等對待。I/O端口和外部數(shù)據(jù)存儲(chǔ)器RAM統(tǒng)一編址。因此外部數(shù)據(jù)存儲(chǔ)器空間也包括I/O端口在內(nèi)。 優(yōu)點(diǎn)是不需專門的I/O指令。缺點(diǎn)是需要把數(shù)據(jù)存儲(chǔ)器單元地址與I/O端口的地址劃分清楚,避免數(shù)據(jù)沖突。,8,9,9.1.3 I/O數(shù)據(jù)的傳送方式 為了實(shí)現(xiàn)和不同外設(shè)的速度匹配,必須根據(jù)不同外設(shè)選擇恰當(dāng)?shù)腎/O數(shù)據(jù)傳送方式。I/O數(shù)據(jù)傳送方式有:同步傳送、異步傳送和中斷傳送。 1同步傳送 同步傳送又稱無條件傳送。當(dāng)外設(shè)速度和單片機(jī)的速度相比擬時(shí),常采用同步傳送方式,典型的同步傳送是單片機(jī)和外部數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送。 2查詢傳送 又稱有條件傳送(也稱異步式傳送)。通過查詢外設(shè)“準(zhǔn)備好”后,再進(jìn)行數(shù)據(jù)傳送。優(yōu)點(diǎn)是通用性好,硬件連線和查詢程序簡單,但工作效率不高。,9,10,3中斷傳送 為了提高單片機(jī)對外設(shè)的工作效率,通常采用中斷傳送方式,來實(shí)現(xiàn)I/O數(shù)據(jù)的傳送。單片機(jī)只有在外設(shè)準(zhǔn)備好后,才中斷主程序的執(zhí)行,從而進(jìn)入與外設(shè)數(shù)據(jù)傳送的中斷服務(wù)子程序,進(jìn)行數(shù)據(jù)傳送。中斷服務(wù)完成后又返回主程序斷點(diǎn)處繼續(xù)執(zhí)行。采用中斷方式可大大提高工作效率。 9.1.4 I/O接口電路 常用的外圍I/O接口芯片: (1)82C55:可編程通用并行接口(3個(gè)8位I/O口)。,10,11,(2)81C55:可編程的IO/RAM擴(kuò)展接口電路(2個(gè)8位I/O口,1個(gè)6位I/O口,256RAM單元,1個(gè)14位的減法計(jì)數(shù)器)。 都可以和AT89S51直接連接,接口邏輯簡單。 9.2 AT89S51擴(kuò)展I/O接口芯片82C55的設(shè)計(jì) 先介紹可編程并行I/O接口芯片82C55的應(yīng)用特性,然后介紹AT89S51與82C55的接口電路以及軟件設(shè)計(jì)。 9.2.1 82C55芯片簡介 Intel公司的可編程并行I/O接口芯片,3個(gè)8位并行I/O口,3種工作方式,單片機(jī)與多種外設(shè)連接時(shí)的中間接口電路。引腳及內(nèi)部結(jié)構(gòu)如圖9-1和圖9-2所示。,11,12,12,圖9-1 82C55的引腳圖 圖9-2 82C55的內(nèi)部結(jié)構(gòu),13,1引腳說明 共40個(gè)引腳,引腳功能如下: D7D0:三態(tài)雙向數(shù)據(jù)線,與單片機(jī)的P0口連接,用來與單片機(jī)之間傳送數(shù)據(jù)信息。 :片選信號(hào)線,低有效,表示本芯片被選中。 :讀信號(hào)線,低有效,讀82C55端口數(shù)據(jù)的控制信號(hào)。 :寫信號(hào)線,低電平有效,用來向82C55寫入端口數(shù)據(jù)的控制信號(hào)。 VCC:+5V電源。,13,14,PA7PA0:端口A輸入/輸出線。 PB7PB0:端口B輸入/輸出線。 PC7PC0:端口C輸入/輸出線。 A1、A0:地址線,用來選擇82C55內(nèi)部的4個(gè)端口。 RESET:復(fù)位引腳,高電平有效。 2內(nèi)部結(jié)構(gòu) 如圖9-2所示,3個(gè)并行數(shù)據(jù)輸入/輸出端口,兩種工作方式的控制電路,一個(gè)讀/寫控制邏輯電路和一個(gè)8位數(shù)據(jù)總線緩沖器。 各部件的功能如下:,14,(1)端口PA、PB、PC 3個(gè)8位并行口PA、PB和PC,都可以選為輸入/輸出工作模式,功能和結(jié)構(gòu)上有差異。 PA口:一個(gè)8位數(shù)據(jù)輸出鎖存器和緩沖器;一個(gè)8位數(shù)據(jù)輸入鎖存器。 PB口:一個(gè)8位數(shù)據(jù)輸出鎖存器和緩沖器;一個(gè)8位數(shù)據(jù)輸入緩沖器。 PC口:一個(gè)8位的輸出鎖存器;一個(gè)8位數(shù)據(jù)輸入緩沖器。 通常PA口、PB口作為輸入/輸出口,PC口既可作為輸入/輸出口,也可在軟件控制下,分為兩個(gè)4位的端口,作為端口PA、PB選通方式操作時(shí)的狀態(tài)控制信號(hào)。,15,16,(2)A組和B組控制電路 是兩組根據(jù)AT89S51寫入的“命令字”控制82C55工作方式的控制電路。A組控制PA口和PC口的上半部(PC7PC4);B組控制PB口和PC口的下半部(PC3PC0),并可用“命令字”來對端口PC的每一位實(shí)現(xiàn)按位置“1”或清“0”。 (3)數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)雙向8位緩沖器,作為82C55與系統(tǒng)總線之間的接口,用來傳送數(shù)據(jù)、指令、控制命令以及外部狀態(tài)信息。,16,17,(4)讀/寫控制邏輯電路 接收AT89S51單片機(jī)發(fā)來的控制信號(hào) 、 、RESET、地址信號(hào)A1、A0等,然后根據(jù)控制信號(hào)的要求,端口數(shù)據(jù)被AT89S51單片機(jī)讀出,或者將AT89S51單片機(jī)送來的數(shù)據(jù)寫入端口。 各端口工作狀態(tài)與控制信號(hào)的關(guān)系見表9-1。,17,18,18,19,9.2.2 工作方式選擇控制字及端口PC置位/復(fù)位控制字 可向82C55控制寄存器寫入兩種不同的控制字。 1工作方式選擇控制字 82C55有3種基本工作方式: (1)方式0基本輸入/輸出; (2)方式1選通輸入/輸出; (3)方式2雙向傳送(僅PA口有此工作方式)。 3種工作方式方式控制字來決定。格式如圖9-3所示。最高位D7=1,為本方式控制字的標(biāo)志,以便與另一控制字相區(qū)別(最高位D7 = 0)。,19,20,20,圖9-3 82C55的方式控制字格式,21,PC口分兩部分,隨PA口稱為A組,隨PB口稱為B組。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。 【例9-1】 AT89S51向82C55的控制字寄存器寫入工作方式控制字95H,根據(jù)圖9-3,將82C55編程設(shè)置為:PA口方式0輸入,PB口方式1輸出,PC口的上半部分(PC7PC4)輸出,PC口的下半部分(PC3PC0)輸入。 MOV DPTR,#H ;控制字寄存器端口地址 ;H送DPTR MOV A,#95H ; 方式控制字95H送A MOVX DPTR,A ; 控制字95H送控制字寄存器,21,22,2PC口按位置位/復(fù)位控制字 為另一控制字。即PC口中任何一位,可用一個(gè)寫入82C55控制口的置位/復(fù)位控制字來對PC口按位置“1”或清“0”。用于位控。格式如圖9-4所示。 【例9-2】 AT89S51向82C55的控制字寄存器寫入工作方式控制字07H,則PC3置1;08H寫入控制口,則PC4清0。程序段如下: MOV DPTR,#H ; 控制寄存器端口地址 ;H送DPTR MOV A,#07H ; 方式控制字07H送A,22,23,圖9-4 PC口按位置位/復(fù)位控制字格式,24,MOVX DPTR,A; 控制字07H送控制寄存器,把PC3置1 MOV DPTR,#H; 控制字寄存器端口地址送DPTR MOV A,#08H ; 方式控制字08H送A MOVX DPTR,A ; 08H送控制字寄存器,PC4清0,24,25,9.2.3 82C55的3種工作方式 1方式0 是基本輸入/輸出方式。T89S51可對82C55進(jìn)行I/O數(shù)據(jù)的無條件傳送。 例如,AT89S51單片機(jī)從82C55的某一輸入口讀入一組開關(guān)狀態(tài),從82C55輸出控制一組指示燈的亮、滅。并不需要任何條件,外設(shè)I/O數(shù)據(jù)可在82C55的各端口得到鎖存和緩沖。因此,方式0稱為基本輸入/輸出方式。 方式0下,3個(gè)端口都可以由軟件設(shè)置為輸入或輸出,不需要應(yīng)答聯(lián)絡(luò)信號(hào)。方式0的基本功能如下:,25,26,(1)具有兩個(gè)8位端口(PA、PB)和兩個(gè)4位端口(PC的上半部分和下半部分)。 (2)任何端口都可以設(shè)定為輸入或輸出,各端口的輸入、輸出共有16種組合。 PA口、PB口和PC口均可設(shè)定為方式0,并可根據(jù)需要,向控制寄存器寫入工作方式控制字,規(guī)定各端口為輸入或輸出方式。,27,【例9-3】 假設(shè)82C55的控制字寄存器端口地址為FF7FH,令PA口和PC口的高4位為方式0輸出,PB口和PC口的低4位為方式0輸入,初始化程序: MOV DPTR,#0FF7FH ; 端口地址#0FF7F送DPTR MOV A,#83H ; 方式控制字83H送A MOVX DPTR,A ; 控制字83H送控制字寄存器,27,28,2方式1 是一種采用應(yīng)答聯(lián)絡(luò)的輸入/輸出工作方式。 PA口、PB口皆可設(shè)成這種工作方式。 在方式1下,82C55的PA口和PB口通常用于I/O數(shù)據(jù)的傳送,PC口用作PA口和PB口的應(yīng)答聯(lián)絡(luò)信號(hào)線,以實(shí)現(xiàn)采用中斷方式來傳送I/O數(shù)據(jù)。 PC口的PC7PC0的應(yīng)答聯(lián)絡(luò)線是規(guī)定好的,其各位分配如圖9-5和圖9-7所示,圖中,標(biāo)有I/O的各位仍可用作基本輸入/輸出,不作應(yīng)答聯(lián)絡(luò)用。 下介紹方式1輸入/輸出時(shí)的應(yīng)答聯(lián)絡(luò)信號(hào)與工作原理。,28,29,(1)方式1輸入 方式1輸入應(yīng)答聯(lián)絡(luò)信號(hào)如圖9-5所示。其中 與IBF為一對應(yīng)答聯(lián)絡(luò)信號(hào)。各應(yīng)答聯(lián)絡(luò)信號(hào)的功能如下。 :是由輸入外設(shè)發(fā)給82C55的選通輸入信號(hào),低有效。 IBF:輸入緩沖器滿,應(yīng)答信號(hào)。82C55通知外設(shè)已收到外設(shè)發(fā)來的且已進(jìn)入輸入緩沖器的數(shù)據(jù),高有效。 INTR:由82C55向AT89S51單片機(jī)發(fā)出的中斷請求信號(hào),高有效。 INTEA:控制PA口是否允許中斷的控制信號(hào),由PC4的置位/復(fù)位來控制。,29,30,INTEB:控制PB口是否允許中斷的控制信號(hào),由PC2的置位/復(fù)位來控制。 方式1輸入如圖9-6所示。下面以PA口的方式1輸入為例,介紹方式1輸入的工作過程。 當(dāng)外設(shè)向82C55輸入一個(gè)數(shù)據(jù)并送到PA7PA0時(shí),外設(shè)自動(dòng)在 上向82C55發(fā)送一個(gè)低電平選通信號(hào)。 82C55收到 后,先把PA7PA0輸入的數(shù)據(jù)存入PA口的輸入數(shù)據(jù)緩沖/鎖存器,然后使輸出應(yīng)答線IBF變?yōu)楦?,通知輸入外設(shè),PA口已收到它送來的數(shù)據(jù)。 82C55檢測到 由低電平變?yōu)楦唠娖?、IBFA(PC5)為“1”狀態(tài)和中斷允許INTEA(PC4)=1時(shí),使,30,31,INTRA(PC3)變?yōu)楦唠娖剑騿纹瑱C(jī)發(fā)出中斷請求。INTEA的狀態(tài)可由用戶通過指令對PC4的單一置位/復(fù)位控制字來控制。 單片機(jī)響應(yīng)中斷后,進(jìn)入中斷服務(wù)子程序來讀取PA口的外設(shè)發(fā)來的輸入數(shù)據(jù)。當(dāng)輸入數(shù)據(jù)被單片機(jī)讀走后,82C55撤銷INTRA上的中斷請求,并使IBFA變低,通知輸入外設(shè)可傳送下一個(gè)輸入數(shù)據(jù)。,31,32,32,圖9-5 方式1輸入應(yīng)答聯(lián)絡(luò)信號(hào),33,33,圖9-6 PA口方式1輸入工作過程示意圖,34,(2)方式1輸出 方式1輸出時(shí),應(yīng)答聯(lián)絡(luò)信號(hào)如圖9-7所示。 與 構(gòu)成一對應(yīng)答聯(lián)絡(luò)信號(hào),應(yīng)答聯(lián)絡(luò)信號(hào)功能如下。 :端口輸出緩沖器滿信號(hào),低有效,它是82C55發(fā)給外設(shè)的聯(lián)絡(luò)信號(hào),表示外設(shè)可以將數(shù)據(jù)取走。 :外設(shè)應(yīng)答信號(hào),低有效。表示外設(shè)已把82C55發(fā)出的數(shù)據(jù)取走。 INTR:中斷請求信號(hào),高有效。表示該數(shù)據(jù)已被外設(shè)取走,向單片機(jī)發(fā)出中斷請求,如果AT89S51響應(yīng)該中斷,在中斷服務(wù)子程序中向82C55寫入要輸出的下一數(shù)據(jù)。,34,35,INTEA控制PA口是否允許中斷,由PC6控制。 INTEB控制PB口是否允許中斷,由PC2控制。 方式1輸出工作示意如圖9-8所示。以PB口的方式1輸出為例,介紹工作過程。 AT89S51可以通過“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ù)。,35,36,36,圖9-7 方式1輸出應(yīng)答聯(lián)絡(luò)信號(hào),37,圖9-8 PB口方式1輸出工作過程示意圖,37,38, 82C55從應(yīng)答輸入線 B收到低電平后就對 B 和中斷允許控制位INTEB狀態(tài)進(jìn)行檢測,若皆為高電平,則INTRB變?yōu)楦唠娖蕉騿纹瑱C(jī)請求中斷。 AT89S51單片機(jī)響應(yīng)INTRB上中斷請求后便可通過中斷服務(wù)程序把下一個(gè)輸出數(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 控制。,38,39,39,圖9-9 PA口在方式2下的工作示意圖,40,方式2特別適用于像鍵盤、顯示器一類的外部設(shè)備,因?yàn)橛袝r(shí)需要把鍵盤上輸入的編碼信號(hào)通過PA口送給單片機(jī),有時(shí)又需把單片機(jī)發(fā)出的數(shù)據(jù)通過PA口送給顯示器顯示。 9.2.4 AT89S51單片機(jī)與82C55的接口設(shè)計(jì) 1硬件接口電路 如圖9-10為AT89S51擴(kuò)展一片82C55的電路。P0.1、P0.0經(jīng)74LS373與82C55的A1、A0連接;P0.7經(jīng)74LS373與片選端 相連,其它地址線懸空;82C55的控制線 、 直接與單片機(jī) 和 端相連;單片機(jī)數(shù)據(jù)總線P0.0P0.7與82C55數(shù)據(jù)線D0D7連接。,40,41,2確定82C55端口地址 圖9-10中82C55只有3條線與AT89S51地址線相接,片選端 、端口地址選擇端A1、A0,分別接于P0.7、P0.1和P0.0,其他地址線全懸空。顯然只要保證P0.7為低電平時(shí),即可選中82C55;若P0.1、P0.0再為“00”,則選中82C55的PA口。同理P0.1、P0.0為“01”、“10”、“11”分別選中PB口、PC口及控制口。 若端口地址用16位表示,其他無用端全設(shè)為“1”(也可把無用端全設(shè)為“0”),則82C55的A、B、C及控制口地址分別為FF7CH、FF7DH、FF7EH、FF7FH。,41,42,42,圖9-10 AT89S51單片機(jī)擴(kuò)展一片82C55的接口電路,43,如果沒有用到的位取“0”,則4個(gè)端口地址分別為0000H、0001H、0002H、0003H,只要保證 、A1、A0的狀態(tài),無用位設(shè)為“0”或“1”均可。 3軟件編程 在實(shí)際設(shè)計(jì)中,須根據(jù)外設(shè)的類型選擇82C55的操作方式,并在初始化程序中把相應(yīng)控制字寫入控制口。下面根據(jù)圖9-10,介紹對82C55進(jìn)行操作的編程。 【例9-4】要求82C55工作在方式0,且PA口作為輸入,PB口、PC口作為輸出,程序如下: MOV A,#90H ;控制字送A MOV DPTR,#0FF7FH;控制寄存器地址FF7FHDPTR,43,44,MOVX DPTR,A ;方式控制字控制寄存器 MOV DPTR,#0FF7CH ;PA口地址FF7CHDPTR MOVX A,DPTR ;從PA口讀入數(shù)據(jù)A MOV DPTR,#0FF7DH ;PB口地址FF7DHDPTR MOV A,#data1 ;要輸出的數(shù)據(jù)#data1A MOVX DPTR,A ;將#data1送PB口輸出 MOV DPTR,#0FF7EH ;PC口地址DPTR MOV A,# data 2 ;數(shù)據(jù)#data 2A MOVX DPTR,A ;將數(shù)據(jù)#data 2送PC口輸出,44,45,【例9-5】對端口PC的置位/復(fù)位。 1PC口1中的任1一位,均可用指令來置位或復(fù)位。例如,如果想把PC口的PC5置“1”,相應(yīng)的控制字為00001011B = 0BH(關(guān)于82C55的PC口置位/復(fù)位的控制字說明見圖9-4)。程序如下: MOV R1,7FH ;控制口地址7FHR1 MOV A,0BH ;控制字0BHA MOVX R1, A ;控制字7FH控制口,把PC5置1,45,46,如果想把PC口的PC5復(fù)位,相應(yīng)的控制字0AH,程序如下: MOV R1,7FH ;控制口地址7FH R1 MOV A,0AH ;控制字0AHA MOVX R1,A ;控制字7FH控制口, PC5清0 82C55接口芯片在AT89S51單片機(jī)應(yīng)用系統(tǒng)中廣泛用于與各種外部數(shù)字設(shè)備的連接,如打印機(jī)、鍵盤、顯示器以及作為數(shù)字信息的輸入、輸出接口。,46,47,9.3 AT89S51擴(kuò)展I/O接口芯片81C55的設(shè)計(jì) 包含256B的RAM存儲(chǔ)器(靜態(tài)),RAM的存取時(shí)間為400ns,可編程的兩個(gè)8位并行口PA和PB,可編程的一個(gè)6位并行口PC,以及一個(gè)14位的減1計(jì)數(shù)器。PA口和PB口可工作于基本輸入/輸出方式(同82C55的方式0)或選通輸入/輸出方式(同82C55的方式1)。81C55可直接與AT89S51相連,不需增加任何硬件邏輯電路。由于81C55片內(nèi)集成有I/O口、RAM和減1計(jì)數(shù)器,因而是被選用的I/O接口芯片之一。 9.3.1 81C55芯片介紹 介紹81C55芯片基本特性。,47,48,181C55的結(jié)構(gòu) 邏輯結(jié)構(gòu)如圖9-11。 圖9-11 81C55的邏輯結(jié)構(gòu),49,281C55的引腳功能 40引腳,采用雙列直插式封裝,如圖9-12所示。 圖9-12 81C55的引腳圖,49,50,各引腳功能如下。 (1)AD7AD0,為地址/數(shù)據(jù)線,與AT89S51單片機(jī)的P0口相連,用于分時(shí)傳送地址/數(shù)據(jù)信息。 (2)I/O總線(22條)。PA7PA0為通用I/O線,數(shù)據(jù)傳送方向由寫入81C55的命令字決定(圖9-13);PB7PB0為通用I/O線,用于傳送PB口上的外設(shè)數(shù)據(jù),數(shù)據(jù)傳送方向也由寫入81C55的控制字決定。PC5PC0為數(shù)據(jù)/控制線,共有6條,在通用I/O方式下,用作傳送I/O數(shù)據(jù);在選通I/O方式下,用作傳送命令/狀態(tài)信息(見表9-3)。,50,51,(3)控制引腳 RESET:復(fù)位輸入線,在RESET線上輸入一個(gè)大于600ns寬的正脈沖時(shí),81C55即可處于復(fù)位狀態(tài),PA、PB、PC三口也定義為輸入方式。 、IO/ : 為片選線,若 =0,則AT89S51單片機(jī)選中本81C55工作;否則,本81C55未被選中。IO/ 為I/O端口或RAM存儲(chǔ)器選擇線,若IO/ =0,則AT89S51單片機(jī)選中81C55片內(nèi)的RAM存儲(chǔ)器;若IO/ =1,則AT89S51單片機(jī)選中81C55的某一I/O端口。 和 :當(dāng) =0且 =1時(shí),81C55被讀出數(shù)據(jù)狀態(tài);當(dāng) =1且 = 0時(shí),81C55被寫入數(shù)據(jù)狀態(tài)。,51,52,ALE:允許地址輸入線,高有效。若ALE=1,則81C55允許AT89S51通過AD7AD0線發(fā)出地址鎖存到81C55片內(nèi)“地址鎖存器”;否則,81C55地址鎖存器處于封鎖狀態(tài)。81C55的ALE常和AT89S51的ALE相連。 TIMERIN和 :TIMERIN是計(jì)數(shù)器脈沖輸入線,輸入的脈沖上跳沿用于對81C55片內(nèi)的14位計(jì)數(shù)器減1。 為計(jì)數(shù)器輸出線,當(dāng)14位計(jì)數(shù)器減為0時(shí)就可以在該引線上輸出脈沖或方波,輸出脈沖或方波與所選的計(jì)數(shù)器工作方式有關(guān)。 (4)電源線。VCC為+5V電源輸入線,VSS接地。,52,53,3CPU對81C55 I/O端口的控制 3個(gè)端口數(shù)據(jù)傳送方式是由控制字和狀態(tài)字來決定的。 (1)81C55各端口地址分配 內(nèi)部有7個(gè)端口,需要3位地址A2A0上的不同組合代碼來加以區(qū)分。表9-2為端口地址分配以及RAM單元的選擇。 (2)81C55的控制字 有一個(gè)控制寄存器和一個(gè)狀態(tài)標(biāo)志寄存器。工作方式由寫入控制寄存器的控制字來確定??刂谱指袷饺鐖D9-13所示??刂萍拇嫫髦荒軐懭氩荒茏x出。,53,54,圖9-13 81C55的控制字格式,54,55,控制寄存器中的D3D0位用來設(shè)置PA口、PB口和PC口的工作方式。 D4、D5位用來確定A口、B口以選通輸入/輸出方式工作時(shí)是否允許中斷請求。 D6、D7位用來設(shè)置計(jì)數(shù)器的操作。 (3)81C55的狀態(tài)字 有一個(gè)狀態(tài)標(biāo)志寄存器,用來存入PA口和PB口的狀態(tài)標(biāo)志。它的地址與控制寄存器地址相同,只能對其讀出,不能寫入。格式如圖9-14所示。,56,下面僅對狀態(tài)字中的D6位給出說明。 D6為計(jì)數(shù)器中斷狀態(tài)標(biāo)志位TIMER。 若計(jì)數(shù)器正在計(jì)數(shù)或開始計(jì)數(shù)前,則D6=0;若計(jì)數(shù)器的計(jì)數(shù)長度已計(jì)滿,即計(jì)數(shù)器減為0,則D6=1,可作為計(jì)數(shù)器中斷請求標(biāo)志。在硬件復(fù)位或?qū)λx出后又恢復(fù)為0。 9.3.2 81C55的工作方式 下面介紹81C55的兩種工作方式。,56,57,圖9-14 81C55狀態(tài)字格式,57,58,1存儲(chǔ)器方式 存儲(chǔ)器方式用于對片內(nèi)256B RAM單元進(jìn)行讀/寫,若IO/ =0且 =0,則AT89S51可通過AD7AD0上的地址選擇RAM存儲(chǔ)器中任意單元讀/寫。 2I/O方式 分基本I/O和選通I/O兩種方式,見表9-3。在I/O方式下,81C55可選擇片內(nèi)任意端口寄存器讀/寫,端口地址由A2、A1、A0三位決定(見表9-2)。 (1)基本I/O方式。本方式下,PA、PB、PC三口用作輸入/輸出,由圖9-13的命令字決定。其中,PA、PB兩口的輸入/輸出由D1、D0決定,PC口各位由D3、D2狀態(tài)決,58,59,定。例如,若把02H的命令字送到81C55命令寄存器,則81C55的PA口和PC口各位設(shè)定為輸入方式,PB口設(shè)定為輸出方式。 (2)選通I/O方式。由命令字中D3、D2狀態(tài)設(shè)定,PA口和PB口都可獨(dú)立工作于這種方式。此時(shí),PA口和PB口用作數(shù)據(jù)口,PC口用作A口和B口的應(yīng)答聯(lián)絡(luò)控制。PC口各位應(yīng)答聯(lián)絡(luò)線的定義是在設(shè)計(jì)81C55時(shí)規(guī)定的,其分配和命名見表9-3。,59,60,60,選通I/O方式又可分為選通I/O數(shù)據(jù)輸入和選通I/O數(shù)據(jù)輸出兩種方式。 選通I/O數(shù)據(jù)輸入 PA口和PB口都可設(shè)定為本方式。若命令字中D0=0且D3、D2=10,則PA口設(shè)定為本工作方式;若命令字中D1= 0且,61,D3、D2=11,則PB口設(shè)定為本工作方式。本工作方式和82C55的選通I/O輸入情況類似,如圖9-15(a)所示。 選通I/O數(shù)據(jù)輸出 PA口和PB口都可設(shè)定為本方式。若命令字D0=1且D3、D2=10,則PA口設(shè)定為本工作方式;若命令字D1=1且D3、D2=11,則PB口設(shè)定為本工作方式。 選通I/O數(shù)據(jù)的輸出過程也和82C55的選通I/O輸出情況類似,圖9-15(b)所示為選通I/O數(shù)據(jù)輸出的示意圖。,61,62,圖9-15 選通I/O方式示意圖,62,63,3內(nèi)部計(jì)數(shù)器/計(jì)數(shù)器及使用 14位的計(jì)數(shù)器/計(jì)數(shù)器,CPU可通過軟件來選擇計(jì)數(shù)長度和計(jì)數(shù)方式。計(jì)數(shù)長度和計(jì)數(shù)方式由寫入計(jì)數(shù)器的控制字來確定。計(jì)數(shù)器的格式如圖9-16所示。 圖9-16 81C55計(jì)數(shù)器的格式 其中,T13T0為計(jì)數(shù)器的計(jì)數(shù)位;M2、M1用來設(shè)置計(jì)數(shù)器的輸出方式。81C55計(jì)數(shù)器的4種工作方式及對應(yīng)的 引腳輸出波形如圖9-17所示。,63,64,64,圖9-17 81C55計(jì)數(shù)器工作方式及 引腳輸出波形,65,任何時(shí)候都可設(shè)置計(jì)數(shù)器長度和工作方式,將控制字寫入控制寄存器。如果計(jì)數(shù)器正在計(jì)數(shù),只有在寫入啟動(dòng)命令后,計(jì)數(shù)器才接收新計(jì)數(shù)長度并按新的工作方式計(jì)數(shù)。 若寫入計(jì)數(shù)器的初值為奇數(shù), 引腳的方波輸出是不對稱的。例如,初值為9時(shí),計(jì)數(shù)器的輸出,在5個(gè)計(jì)數(shù)脈沖周期內(nèi)為高電平,4個(gè)計(jì)數(shù)脈沖周期內(nèi)為低電平,如圖9-18所示。 圖9-18 計(jì)數(shù)長度為奇數(shù)時(shí)的不對稱方波輸出(長度為9),65,66,注意,81C55的計(jì)數(shù)器初值不是從0開始,從2開始。這是因?yàn)?,如果選擇計(jì)數(shù)器的輸出為方波形式(無論是單方波還是連續(xù)方波),則規(guī)定是從啟動(dòng)計(jì)數(shù)開始,前一半計(jì)數(shù)輸出為高電平,后一半計(jì)數(shù)輸出為低電平。顯然,如果計(jì)數(shù)初值是0或1,就無法產(chǎn)生這種方波。因此81C55計(jì)數(shù)器的寫入初值范圍是3FFFH2H。 如果硬要將0或1作為初值寫入,其效果將與送入初值2的情況一樣。81C55復(fù)位后使計(jì)數(shù)器停止計(jì)數(shù)。 9.3.3 AT89S51單片機(jī)與81C55的接口設(shè)計(jì)及軟件編程 1硬件接口電路 接口如圖9-19所示。直接連接不需外加器件。,66,67,67,圖9-19 AT89S51單片機(jī)與81C55的接口電路,68,在圖9-19中,單片機(jī)P0口輸出的低8位地址不需要另外加鎖存器(81C55片內(nèi)集成有地址鎖存器),而直接與81C55的AD0AD7相連,既可作為低8位地址總線,又可作為數(shù)據(jù)總線,地址鎖存控制直接用AT89S51發(fā)出的ALE信號(hào)。 81C55的 端接P2.7,IO/ 端與P2.0相連。當(dāng)P2.7=0時(shí),若P2.0=0,則訪問81C55的RAM單元。由此可得到圖9-19中81C55的各端口以及RAM單元的地址編碼,見表9-4。,68,69,69,70,281C55的編程 根據(jù)圖9-19接口,介紹對81C55的具體操作。 初始化程序設(shè)計(jì) 【例9-6】若PA口定義為基本輸入方式,PB口定義為基本輸出方式,對輸入脈沖進(jìn)行24分頻(81C55計(jì)數(shù)器的最高計(jì)數(shù)頻率為4MHz),則81C55的初始化程序如下START: MOV DPTR,7F04H;DPTR指針指向計(jì)數(shù)器低8位 MOV A,18H ;計(jì)數(shù)初值24送A MOVX DPTR,A ;計(jì)數(shù)初值低8位裝入計(jì)數(shù)器 INC DPTR ;指向計(jì)數(shù)器高8位,70,71,MOV A,40H ;計(jì)數(shù)器為連續(xù)方波輸出 MOVX DPTR,A ;計(jì)數(shù)初值高6位裝入計(jì)數(shù)器 MOV DPTR,7F00H ;指向命令/狀態(tài)口 MOV A,#0C2H ;設(shè)定命令控制字 MOVX DPTR,A;A口基本輸入,B口基本輸出,開啟計(jì)數(shù) 【例9-7】讀81C55的7EF1H單元。程序如下: MOV DPTR,#7EF1H;DPTR指針指向81C55的7EF1H單元 MOVX A,DPTR ;7EF1H單元內(nèi)容A,71,72,【例9-8】將立即數(shù)41H寫入81C55 RAM的7E20H單元。程序如下: MOV A,#41H ;立即數(shù)A MOV DPTR,#7E20H;DPTR指針指向81C55的7E20H單元 MOVX DPTR,A;立即數(shù)41H送81C55 RAM的7E20H單元 81C55既有RAM又有I/O口,此外,還有計(jì)數(shù)器。在同時(shí)需要擴(kuò)展RAM 、I/O和計(jì)數(shù)器的系統(tǒng)中,選用81C55特別經(jīng)濟(jì),是單片機(jī)系統(tǒng)中常用的外圍接口芯片之一。,72,73,9.4 利用74LSTTL電路擴(kuò)展并行I/O口 在單片機(jī)應(yīng)用中,有些場合需要降低成本、縮小體積,這時(shí)采用TTL電路、CMOS電路鎖存器或三態(tài)門電路也可構(gòu)成各種類型的簡單輸入/輸出口。 如圖9-20所示為一個(gè)利用74LS244和74LS273芯片,將P0口擴(kuò)展成簡單的輸入/輸出口的電路。 74LS244和74LS273的工作受AT89S51的P2.0、 、 3條控制線控制。74LS244作為擴(kuò)展輸入口,8個(gè)輸入端分別接8個(gè)按鈕開關(guān)。74LS273是8D鎖存器擴(kuò)展輸出口,接8個(gè)LED發(fā)光二極管,以顯示8個(gè)按鈕開關(guān)狀態(tài)。,73,74,圖9-20 74LSTTL I/O擴(kuò)展舉例,75,當(dāng)某條輸入口線的按鈕開關(guān)按下時(shí),該輸入口線為低電平,讀入單片機(jī)后,其相應(yīng)位為“0”,然后再將口線的狀態(tài)經(jīng)74LS273輸出,某位低電平時(shí)二極管發(fā)光,從而顯示出按下的按鈕開關(guān)的位置。 該電路的工作原理如下。 當(dāng)P2.0=0, =0( =1)時(shí),選中74LS244芯片,此時(shí)若無按鈕開關(guān)按下,輸入全為高電平。當(dāng)某開關(guān)按下時(shí)則對應(yīng)位輸入為“0”,74LS244的輸入端不全為“1”,其輸入狀態(tài)通過P0口數(shù)據(jù)線被讀入AT89S51片內(nèi)。,75,76,當(dāng)P2.0 = 0, =1 ( = 0)時(shí),選中74LS273芯片,CPU通過P0口輸出數(shù)據(jù)鎖存到74LS273,74LS273的輸出端低電平位對應(yīng)的LED發(fā)光二極管點(diǎn)亮。 總之,在圖9-20中只要保證P2.0為“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(無效位全為“1”),或用0000H(無效位全為“0”)都可。,76,77,輸入程序段: MOV DPTR,#0FEFFH ;I/O地址DPTR MOVX A,DPTR ; 為低,74LS244數(shù)據(jù)被讀入A中 輸出程序段: MOV A,#data ;數(shù)據(jù)#dataA MOV DPTR,#0FEFFH ;I/O地址#0FEFFHDPTR MOVX DPTR,A ; 為低,數(shù)據(jù)經(jīng)74LS273口輸出,77,78,【例9-9】 編寫程序把按鈕開關(guān)狀態(tài)通過圖9-20的發(fā)光二極管顯示出來。程序如下: DDIS: MOV DPTR,#0FEFFH ;輸入口地址DPTR LP: MOVX A,DPTR ;按鈕開關(guān)狀態(tài)讀入A中 MOVX DPTR,A ;A中數(shù)據(jù)送顯示輸出口 SJMP LP ;反復(fù)連續(xù)執(zhí)行 由程序可看出,對于擴(kuò)展接口的輸入/輸出就像從外部RAM讀/寫數(shù)據(jù)一樣方便。圖9-20僅僅擴(kuò)展了兩片,如果仍不夠用,還可擴(kuò)展多片74LS244、74LS273之類的芯片。但作為輸入口時(shí),一定要求有三態(tài)功能,否則將影響總線的正常工作。,78,79,9.5 用AT89S51單片機(jī)的串行口擴(kuò)展并行口 串口的方式0用于I/O擴(kuò)展。方式0為同步移位寄存器工作方式,波特率為fosc/12。數(shù)據(jù)由RXD端(P3.0)輸入,同步移位時(shí)鐘由TXD端(P3.1)輸出。 9.5.1 用74LS165擴(kuò)展并行輸入口 圖9-21串口擴(kuò)展兩個(gè)8位并行輸入口。74LS165是8位并行輸入串行輸出的寄存器。當(dāng)74LS165的S/ 端由高到低跳變,并行輸入端的數(shù)據(jù)被置入寄存器;當(dāng)S/ = 1,且時(shí)鐘禁止端(15腳)為低時(shí),允許TXD(P3.1)移位時(shí)鐘輸入,在該脈沖作用下,數(shù)據(jù)由右向左方向移動(dòng)。,79,80,TXD與所有74LS165的CP相連;RXD與74LS165的串行輸出端QH相連;P1.0與 S/ 相連,控制74LS165的串行移位或并行輸入;15腳接地,允許時(shí)鐘輸入。當(dāng)擴(kuò)展多個(gè)8位輸入口時(shí),相鄰兩芯片的首尾(QH與SIN)相連。 圖9-21 利用74LS165擴(kuò)展并行輸入口,80,81,【例9-10】從16位擴(kuò)展口讀入5組數(shù)據(jù)(每組2B),把它們轉(zhuǎn)存到內(nèi)部RAM 20H開始的單元。 MOV R7,#05H ;設(shè)置讀入組數(shù) MOV R0,#20H ;設(shè)置內(nèi)部RAM數(shù)據(jù)區(qū)首址 START: CLR P1.0 ;并行置入數(shù)據(jù),S/ =0 SETB P1.0 ;允許串行移位,S/ =1 MOV R2,#02H;設(shè)每組字節(jié)數(shù), 即74LS165的個(gè)數(shù) RXDATA:MOV SCON,#00010000H;設(shè)置串口方式0,允許 ;接收,啟動(dòng)接收過程,81,82,WAIT: JNB RI,WAIT ;未接收完一幀,循環(huán)等待 CLR RI ;RI標(biāo)志清“0”,準(zhǔn)備下次接收 MOV A,SBUF ;讀入數(shù)據(jù) MOV R0,A ;送至RAM緩沖區(qū) INC R0 ;指向下一個(gè)地址 DJNZ R2,RXDATA ;未讀完一組數(shù)據(jù), 繼續(xù) DJNZ R7,START ;5組數(shù)據(jù)未讀完重新并行置入 ;對數(shù)據(jù)進(jìn)行處理,82,83,串行接收過程采用查詢等待的方式,如必要,可改中斷方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 團(tuán)隊(duì)環(huán)?;顒?dòng)方案
- 國慶飾品活動(dòng)方案
- 團(tuán)建活動(dòng)抓老鼠活動(dòng)方案
- 圖書打卡活動(dòng)方案
- 自考領(lǐng)導(dǎo)科學(xué)試題及答案
- 國際街區(qū)活動(dòng)策劃方案
- 國際飯店公司年會(huì)活動(dòng)方案
- 商業(yè)餐飲活動(dòng)方案
- 團(tuán)員手工活動(dòng)方案
- 商場動(dòng)漫活動(dòng)方案
- 2025年內(nèi)蒙古地礦集團(tuán)直屬子公司招聘筆試參考題庫含答案解析
- 心臟瓣膜病護(hù)理常規(guī)課件
- 卵巢交界性腫瘤診治進(jìn)展
- 持續(xù)葡萄糖監(jiān)測臨床應(yīng)用專家共識(shí)2024解讀
- 《冠心病的規(guī)范化診》課件
- 《數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)》 課件7.2.1 K-Means聚類
- 2025年圍產(chǎn)期保健工作計(jì)劃
- 2024年基本公共衛(wèi)生服務(wù)人員培訓(xùn)計(jì)劃
- 邊坡掛網(wǎng)噴漿應(yīng)急響應(yīng)方案
- 浙大城市學(xué)院《操作系統(tǒng)原理》2021-2022學(xué)年第一學(xué)期期末試卷
- 食品過敏原培訓(xùn)
評論
0/150
提交評論