第8章 并行接口_第1頁(yè)
第8章 并行接口_第2頁(yè)
第8章 并行接口_第3頁(yè)
第8章 并行接口_第4頁(yè)
第8章 并行接口_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE11第八章并行接口基本內(nèi)容:并行通訊概念;并行接口芯片8255A的結(jié)構(gòu)、引腳定義及8255與CPU的連接;8255控制字的使用;8255的工作方式;8255的應(yīng)用;鍵盤的工作原理(行反轉(zhuǎn)法、行掃描法);LED數(shù)碼顯示的工作原理及常用的驅(qū)動(dòng)電路;LED多位顯示的解決方案?;疽螅毫私獠⑿型ㄓ嵉母拍睿徽莆?255A的結(jié)構(gòu)、引腳定義及與CPU的連接;會(huì)正確選用8255的工作方式,熟練使用8255;了解鍵盤及LED的工作原理;會(huì)設(shè)計(jì)簡(jiǎn)單的鍵盤和顯示電路。重點(diǎn)內(nèi)容:8255的結(jié)構(gòu)、與CPU的連接;8255的工作方式0;鍵盤、LED的工作原理難點(diǎn)內(nèi)容:8255的工作方式;LED的多位顯示問(wèn)題。第一節(jié)可編程并行通訊接口8255A一、8255A的編程結(jié)構(gòu)8255A的內(nèi)部結(jié)構(gòu)框圖8255A的芯片引腳信號(hào)8255A的內(nèi)部結(jié)構(gòu)框圖8255A的芯片引腳信號(hào)數(shù)據(jù)端口A、B、C8255A有3個(gè)8位數(shù)據(jù)端口,即端口A、端口B、端口C;設(shè)計(jì)人員可以編程設(shè)定其作為輸入口還是輸出口。PA口:一個(gè)八位輸入寄存器和一個(gè)八位輸出鎖存緩沖器。輸入輸出時(shí)受鎖存PB口:一個(gè)八位輸入緩沖器和一個(gè)八位輸出鎖存緩沖器。PC口:一個(gè)八位輸入緩沖器和一個(gè)八位輸出鎖存緩沖器。在實(shí)際應(yīng)用中,端口A和端口B常用作獨(dú)立的輸入輸出口,端口C可以用作獨(dú)立的I/O口,也可以分成2個(gè)四位端口,每個(gè)4位端口包含1個(gè)4位的輸入緩沖器和1個(gè)4位的輸出鎖存器/緩沖器,它們分別用來(lái)為端口A和端口B提供控制信號(hào)和狀態(tài)信號(hào)。(用控制字實(shí)現(xiàn))讀寫邏輯控制電路這部分電路是用來(lái)完成對(duì)8255A內(nèi)部三個(gè)數(shù)據(jù)口及控制口(含A組和B組)的譯碼工作,由CPU的地址總線A1、A0和8255A的片選信號(hào)CS和WR、RD信號(hào)組合后產(chǎn)生控制命令,從而完成對(duì)數(shù)據(jù)信息的傳輸控制。接收和A1、A0信號(hào)、RESET信號(hào)及讀寫信號(hào)、產(chǎn)生相應(yīng)的控制。A組控制和B組控制實(shí)際應(yīng)用中,根據(jù)情況將PC口分成兩組4位口:PC0~PC3與PB口配合作為B組,PC4~PC7與PA口配合作為A組,數(shù)據(jù)總線緩沖器這是一個(gè)雙向三態(tài)的8位數(shù)據(jù)緩沖器,8255A正是通過(guò)它與系統(tǒng)總路線相連。輸入數(shù)據(jù)、輸出數(shù)據(jù)、CUP發(fā)給8255A的控制字都是通過(guò)這個(gè)緩沖器傳遞的。8位雙向CPU送出的控制字與數(shù)據(jù)、8255的狀態(tài)信息及數(shù)據(jù)通過(guò)此通訊。二、8255A的引腳信號(hào)8255A共40個(gè)引腳,采用雙列直插式封裝—DIP,除電源和地以外,其他信號(hào)可分為兩組:與外設(shè)相連的引腳PA0~PA7:A組數(shù)據(jù)信號(hào)PB0~PB7:B組數(shù)據(jù)信號(hào)PC0~PC7:C組數(shù)據(jù)信號(hào)與CPU相連的引腳RESET: 復(fù)位信號(hào),高電平有效。復(fù)位后,內(nèi)部寄存器清空,3個(gè)數(shù)據(jù)端口被自動(dòng)設(shè)為輸入端口。 D0~D7: 8255A的數(shù)據(jù)線引腳,和系統(tǒng)數(shù)據(jù)總路線相連。、: 讀寫控制信號(hào),低有效。有效時(shí),CPU可從8255A中讀取輸入數(shù)據(jù);有效時(shí),CPU可往8255A中寫入控制字或數(shù)據(jù)。: 片選信號(hào)(芯片選擇信號(hào)),低電平有效。為低電平時(shí),才能對(duì)8255A進(jìn)行讀寫。A1、A0: 端口選擇信號(hào)。8255內(nèi)部有PA、PB、PC三個(gè)數(shù)據(jù)端口和一個(gè)控制端口,共四個(gè)端口,用A1、A0來(lái)選擇對(duì)哪一個(gè)端口進(jìn)行操作。規(guī)定:A1、A0為00時(shí),選中A端口;為01時(shí),選中B端口;為10時(shí),選中C端口;為11時(shí),選中控制端口??蓞⒁?jiàn)P155頁(yè)圖5.4為8255A的控制信號(hào)和傳輸動(dòng)作之間的對(duì)應(yīng)關(guān)系。三、8255與CPU的連接8086中16位數(shù)據(jù)線,低8位數(shù)據(jù)通過(guò)D0~D7傳送,而低8位總線總要連接偶地址單元與偶地址單口,怎樣保證8255的PA、PB、PC口是偶地址端口呢?一般用地址線的A2、A1與8255的A1、A0相連,而訪問(wèn)8255時(shí)令A(yù)0=0,則PA、PB、PC的端口地址為00111000PA00111010PB00111100PC00111110控制口四、8255的控制字8255有幾種工作方式,可以輸入也可以輸出,靠寫控制字來(lái)實(shí)現(xiàn),即使用前要對(duì)8255初始化。控制端口由一個(gè)8位的寄存器組成,共有兩類控制字:一類用于定義各端口的工作方式,稱為方式選擇控制字;另一類用于對(duì)C端口的一位進(jìn)行置1或置0操作,稱為C端口置1/置0控制字。兩種控制字通過(guò)控制字D7位(標(biāo)識(shí)位)的狀態(tài)來(lái)區(qū)別。方式選擇控制字的第7位總是1,而C端口置1/置0控制字的第7位總是0,8255A正是通過(guò)這一位來(lái)識(shí)別這兩個(gè)同樣寫入控制端口中的控制字到底是哪一個(gè),所以,第7位稱為標(biāo)識(shí)位。1稱為方式選擇控制字的標(biāo)識(shí)符,0稱為C端口置1/置0控制字的標(biāo)識(shí)符。方式選擇控制字即設(shè)定3個(gè)口的工作方式對(duì)8255A的方式選擇控制字,先作如下幾點(diǎn)說(shuō)明:①8255A共有三種基本工作方式:方式0:基本的輸入輸出方式。方式1:選通輸入/輸出方式(應(yīng)答方式)方式2:雙向傳輸方式②端口A可以工作在3種工作方式中的任何一種,端口B只能工作在方式0或方式1,端口C則常常配合端口A和端口B工作,為這兩個(gè)端口的輸入/輸出傳輸提供控制信號(hào)和狀態(tài)信號(hào)??梢?jiàn),只有端口A能工作在方式2。③歸為同一組的兩個(gè)端口可以分別工作在輸入方式和輸出方式,并不要求同為輸入方式或同為輸出方式。而一個(gè)端口具體到底作為輸入還是輸出端口,這也由方式選擇控制字來(lái)決定。下圖為方式選擇控制字的格式:D7位為方式選擇控制字的標(biāo)識(shí)位,必須為“1”,。A組控制:(D6、D5、D4、D3位)(控制A口和C口高4位)D6、D5位決定A端口的工作方式,D6D5位為00、01、1x時(shí)分別表示A端口工作在方式0、方式1和方式2下。D4位決定A端口工作在輸入還是輸出方式。D4位為0時(shí),A端口工作在輸出方式;D4位為1時(shí),A端口工作在輸入方式。D3位決定用于A端口的C端口高4位PC7~PC4是作為輸入端口,還是作為輸出端口。D3位為0時(shí),PC7~PC4作輸出;D3位為1時(shí),PC7~PC4作輸入。B組控制:(D2、D1、D0位)(控制B口和C口低4位)D2位用來(lái)選擇B端口的工作方式。D2位為0時(shí),B端口工作在方式0,D2位為1時(shí),B端口工作在方式1。D1位決定B端口作為輸入還是輸出端口。D1位為1時(shí)B端口工作在輸入方式;D1位為0時(shí)B端口工作在輸出方式。D0位決定C端口低4位PC3~PC0用來(lái)輸入還是輸出。D0位為0時(shí),PC3~PC0作輸出;D0位為1時(shí),PC3~PC0作輸入。例1:某8255A的控制端口地址為237H,現(xiàn)要求將其3個(gè)數(shù)據(jù)端口設(shè)置為基本的輸入輸出方式,其中端口A和端口C的低4位為輸出,端口B和端口C的高4位為輸入。由方式選擇控制字格式圖可知,該8255A的方式選擇控制字應(yīng)為8AH,其初始化程序如下:MOVAL,8AHMOVDX,237HOUTD例2:如果要求8255A的A端口作輸入,B端口和C端口作輸出,A組工作在方式0,B組工作在方式1,編程完成對(duì)該芯片工作方式的選擇。分析:方式選擇控制字:10010100(94H)則用三條指令可完成對(duì)該芯片工作方式的選擇。MOV AL,94H ;方式選擇控制字送ALMOVDX,PortCtr ;控制端口地址PortCtr送DXOUT DX,AL ;方式選擇控制字輸出給8255A的控制端口,完成方式選擇。端口C置1/置0控制字端口C常用于配合A口、B口工作,常要將其按位置0、置1。需要注意的是,雖然是對(duì)端口C的某一位進(jìn)行置1或清0,但該控制字要寫入控制口而不是寫入端口C。該控制字可使C端口某一位輸出高電平或低電平,不影響其他位。顯然,只有當(dāng)該位被置為輸出方式時(shí)這項(xiàng)設(shè)置才有效。**一定要注意D7=0D6D5D4D3D2D1D0標(biāo)志位表明對(duì)端口C操作無(wú)關(guān),可為1,也可為0選擇對(duì)PC口的哪一位進(jìn)行操作000——PC0001——PC1010——PC2…111——PC7進(jìn)行什么操作1——置10——清0D3~D1位用來(lái)決定對(duì)C端口8位中的哪一位進(jìn)行操作。D0位用來(lái)決定對(duì)D3~D1所選擇的位是置1,還是置0。D6~D4位可為任意值,不影響操作。例:設(shè)3~8譯碼器A、B、C分別接于AD13、AD14、AD15,8255片選信號(hào)接,A0A1與總線A1、A2相連,現(xiàn)要求:對(duì)8255A初始化,PA口工作于方式0,輸入口;PB口工作于方式0,輸出方式;PC4~PC7輸出,PC0~PC3輸入;將PC7置1,PC3置0。分析:1、首選必須確定各端口地址PA 010XXXXXXXXXX000 4000HPB 010XXXXXXXXXX010 4002HPC 010XXXXXXXXXX100 4004H控制口 010XXXXXXXXXX110 4006H2、要設(shè)定方式,必須初始化8255,即正確選定控制字MOVDX,4006HMOVAL,10010001BOUTDX,AL3、對(duì)PC7置1,PC3置0,即向控制口寫控制字MOVDX,4006HMOVAL,00001111BOUTDX,ALMOVAL,00000110BOUTDX,AL例:設(shè)8255A控制口的地址為237H,現(xiàn)要對(duì)C口的最高位PC7置1,將次高位PC6清0??捎萌缦鲁绦?qū)崿F(xiàn)。MOVDX,237HMOVAL,0FH;PC7置1OUTDXMOVAL,0CH;PC6清0OUTDX五、8255的工作方式方式0基本輸入輸出方式特點(diǎn):A、B可規(guī)定為輸入口或輸出口,端口C可獨(dú)立作8位口使用,也可分為2個(gè)4位端口,可獨(dú)立使用為I/O口,共有24=16種組合??偨Y(jié):四個(gè)I/O(2個(gè)8位,2個(gè)4位)或三個(gè)I/O(3個(gè)8位)使用場(chǎng)合:1)無(wú)條件傳送不需聯(lián)絡(luò)信號(hào),直接進(jìn)行數(shù)據(jù)傳輸2)查詢傳送要給外設(shè)控制信號(hào),要查詢外設(shè)狀態(tài),可以將C口的一半工作于輸入狀態(tài),另一半工作于輸出狀態(tài)。PC0~PC3作為輸出口,由PC0發(fā)出啟動(dòng)信號(hào)。PC4~PC7作為輸入口,由PC4接收轉(zhuǎn)換完成信號(hào)。例:設(shè)8255A端口A工作在方式0下,通過(guò)A口輸出數(shù)據(jù)控制8個(gè)指示燈輪流點(diǎn)亮。電路連接如圖8.24所示。(地址為04A0H~04A6H)MOVDX,04A6H;控制口地址送DXMOVAL,80H;寫工作方式控制字OUTDX,ALMOVDX,04A0H;A端口地址送DXMOVAL,0FEH;低電平燈亮AA1:OUTDX,AL;輸出數(shù)據(jù)CALLDELAY;延時(shí)ROLAL,1;輪流點(diǎn)亮JMPAA1執(zhí)行此段程序時(shí)要注意延時(shí)子程序的延時(shí)時(shí)間,若延時(shí)時(shí)間不夠,指示燈會(huì)全亮或全滅。2、方式1選通輸入輸出方式特點(diǎn):①A、B端口傳輸數(shù)據(jù),作I/O口使用,端口C提供選通信號(hào)與應(yīng)答信號(hào),與方式0中查詢傳送類似,但是端口C的數(shù)位有固定的用途,不能改變,而查詢方式中可以自己定義。②A、B任何一個(gè)可以工作在方式1,也可以兩個(gè)都工作在方式1。(1)、方式1的輸入狀態(tài)端口A:端口B PC3—INTRA中斷請(qǐng)求信號(hào)輸出端 PC0—INTRB PC4— 選通信號(hào)輸入端 PC2— PC5—IBFA 輸入緩沖器滿信號(hào)輸出 PC1—IBFB例:工作過(guò)程:當(dāng)8255向外設(shè)讀取數(shù)據(jù)時(shí),如果外設(shè)已經(jīng)將數(shù)據(jù)準(zhǔn)備好,則向8255的引腳送出一個(gè)低電平,此時(shí)8255將數(shù)據(jù)存入輸入緩沖器,存入后,8255在IBF引腳上送出高電平,告訴CPU數(shù)據(jù)已經(jīng)準(zhǔn)備好,供CPU查詢;同時(shí)8255通過(guò)INTR引腳向CPU發(fā)出中斷請(qǐng)求信號(hào),如果CPU響應(yīng)中斷,則從輸入緩沖器中將數(shù)據(jù)取走,INTR降低位低電平,IBF為高電平。若要保證CPU響應(yīng)中斷,必須8255能夠送出INTR信號(hào),則PC4或PC2必須為一,若為0,則禁止相應(yīng)端口的中斷。(2)、方式1的輸出狀態(tài)端口A: 端口B PC3—INTRA中斷請(qǐng)求信號(hào)輸出端 PC0—INTRB PC6— 外設(shè)接收數(shù)據(jù)后的響應(yīng)信號(hào)輸入端 PC2— PC7— 輸出緩沖器滿信號(hào)輸出 PC1—工作過(guò)程:CPU要送數(shù)據(jù)給外部設(shè)備,需要先將數(shù)據(jù)打入8255的輸出緩沖器,如果8255的輸出緩沖器中的數(shù)據(jù)尚未被外設(shè)取走,則為低電平,通知外設(shè)取走數(shù)據(jù),外設(shè)接收到信號(hào)后將數(shù)據(jù)取走,送給8255一個(gè)信號(hào),表示數(shù)據(jù)已經(jīng)取走,8255接收到信號(hào)后,則向CPU發(fā)出中斷請(qǐng)求信號(hào)INTR,通知CPU再發(fā)送下一個(gè)數(shù)據(jù)。可見(jiàn):A口工作方式1時(shí),C口有三根線參與,B口也一樣。當(dāng)只有A口在方式1時(shí),B口可在方式1,也可在其他方式,C口其他位一樣當(dāng)只有A口在方式1時(shí),B口可在方式1,也可在其他方式,C口其他位一樣當(dāng)A、B都工作在方式1時(shí),C口有6位參與,剩余兩位仍可以用作輸入輸出口。方式2—雙向傳輸方式只能用于端口A特點(diǎn):外設(shè)可以向CPU送出數(shù)據(jù),也可以向CPU接收數(shù)據(jù),端口C中有6位參與配合,分別作控制信號(hào)和狀態(tài)信號(hào)。PC3—INTRAPC6—PC7—PC4—PC5—IBFA 這樣,端口B只能工作在方式0,因?yàn)槎丝贐在方式1時(shí)要用到PC0—PC2,沖突!使用場(chǎng)合:外設(shè)即可輸入又可輸出,且不同時(shí)進(jìn)行,能提供應(yīng)答信號(hào)!例:8255的A、B口工作方式0,A口為輸入口,接4個(gè)開關(guān),B口為輸出口,接七段發(fā)光二極管,如圖:要從LED顯示開關(guān)所撥通的數(shù)字(0—0FH)分析:要從A口讀入鍵盤狀態(tài),必須為輸入方式,B口為輸出狀態(tài),工作方式0所以控制字為:10010000即為90H。要從A口讀出狀態(tài),向B口輸出數(shù)據(jù),必須確定出端口的地址。A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0PA1000000000001000PB1000000000001010PC1000000000001100PK1000000000001110所以:PA口地址為:8008H,PB口地址為:800AH,PC口地址為:800CH控制口地址為:800EH要讓LED顯示數(shù)字,要顯示0,應(yīng)該g不發(fā)光,其他發(fā)光,小數(shù)點(diǎn)dp不亮,應(yīng)向端口B送數(shù)據(jù)00111111B,即3FH。其他類似。程序清單: DATA SEGMENT TAB DB3FH,06H,5BH,…31H DATA ENDS CODE SEGMENT ASSUMECS:CODE,DS:DSTAMAINPROCFARSTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,90H MOV DX,800EH OUT DX,AL MOV DX,8008H IN AL,DX AND AL,0FH MOV BX,OFFSETTAB XLAT MOV DX,800AH OUT DX,AL MOV CX,0400HDELAY: LOOP DELAY JMP NEXT RETMAIN ENDPCODE ENDSEND START第二節(jié)、鍵盤及其接口電路一.鍵盤的基本工作原理鍵盤是計(jì)算機(jī)必備的輸入設(shè)備,數(shù)據(jù)錄入大多數(shù)是通過(guò)擊鍵完成的,DOS方式下的多數(shù)操作也是通過(guò)鍵入命令行來(lái)執(zhí)行的。和CRT顯示器一樣,鍵盤是一個(gè)單獨(dú)的部件,通過(guò)一根五芯電纜接到機(jī)箱背面的圓形鍵盤插座上。鍵盤是由一組規(guī)則排列的按鍵組成,它主要由鍵開關(guān)和鍵掃描電路兩部分組成。按物理結(jié)構(gòu)分,鍵盤有機(jī)械式、薄膜式和電容式三種。電容式鍵盤采用無(wú)觸點(diǎn)按鍵,觸感好,操作靈活。按鍵盤鍵數(shù)分,常見(jiàn)的有83/84鍵、101/102鍵等。Windows95面市后,在101/102鍵盤的基礎(chǔ)上改進(jìn)而推出104/105鍵。目前微機(jī)以配備101/102鍵、104/105鍵電容式鍵盤的居多。在微機(jī)系統(tǒng)中運(yùn)用的按鍵,通常僅需提供邏輯的通與斷,其機(jī)械結(jié)構(gòu)往往是比較簡(jiǎn)單的。構(gòu)成形式可如圖12.1所示。它主要的功能是把機(jī)械上的通斷轉(zhuǎn)換成電氣上的邏輯關(guān)系。也就是說(shuō),它能提供標(biāo)準(zhǔn)的TTL邏輯電平,以便與通用數(shù)字系統(tǒng)的邏輯電平相容。在按鍵電路中的電阻R用于限制其中流過(guò)的電流。從按鍵的定位方式看,它有無(wú)鎖的、自鎖的和互鎖的。在邏輯上它們等效于單穩(wěn)態(tài)、雙穩(wěn)態(tài)和多穩(wěn)態(tài)。在計(jì)算機(jī)系統(tǒng)中,常用的是機(jī)械結(jié)構(gòu)最簡(jiǎn)單的無(wú)鎖單穩(wěn)式的按鍵(常態(tài)為開路),它的工作壽命可達(dá)100萬(wàn)次以上。圖1最簡(jiǎn)單的鍵盤結(jié)構(gòu) 鍵盤的矩陣式結(jié)構(gòu)最簡(jiǎn)單的鍵盤如圖1所示,其中,每個(gè)鍵對(duì)應(yīng)I/O端口的一位,沒(méi)有什么鍵閉合時(shí),各位均處于高電位。當(dāng)有一個(gè)鍵按下時(shí),就使對(duì)應(yīng)位接地而成為低電位,而其他位仍為高電位。這樣,CPU只要檢測(cè)到某一位為“0”時(shí),便可判別出對(duì)應(yīng)鍵已經(jīng)按下。但是,用圖1的結(jié)構(gòu)來(lái)設(shè)計(jì)鍵盤有一個(gè)很大的缺點(diǎn),就是當(dāng)鍵盤上的鍵較多時(shí),引線太多,占用的I/O端口也太多。比如,一個(gè)有64個(gè)鍵的鍵盤,采用這種方法來(lái)設(shè)計(jì)時(shí),就需要64條連線和8個(gè)8位并行端口。所以這種簡(jiǎn)單結(jié)構(gòu)只用在僅有幾個(gè)鍵的小鍵盤中。通常使用的鍵盤結(jié)構(gòu)是矩陣式的,如圖2所示。設(shè)有m×n個(gè)鍵,那么,采用矩陣式結(jié)構(gòu)以后,便只要m+n條引線就行了。比如,有8×8個(gè)鍵,那么,只要用兩個(gè)并行端口和16條引線便可以完成鍵盤的連接。二、鍵的識(shí)別為了識(shí)別鍵盤上的閉合鍵,通常采用兩種方法,一種稱為行掃描法,另一種稱為行反轉(zhuǎn)法。1、行掃描法的原理行掃描法識(shí)別閉合鍵的原理如下:首先判斷是否有鍵被按下,即先進(jìn)行全掃描,將所有行線置成低電平;然后掃描全部列線,如果掃描的列值全是高電平,則說(shuō)明沒(méi)有任何一個(gè)鍵被按下;如果讀入的列值不是全1,則說(shuō)明有鍵按下,再用逐行掃描的方法確定哪一個(gè)鍵被按下。先掃描第一行,即置該行為低電平,其他行為高電平,然后檢查列線,如果某條列線為低電平,則說(shuō)明第一行與該列相交的位置上的按鍵被按下;如果所有列線全是高電平,則說(shuō)明第一行沒(méi)有鍵被按下,接著掃描第二行,以此類推,直到找到被按下的鍵。(分行掃描;檢查是否有鍵按下;若有,確定哪個(gè)鍵被按下)圖3行線與列線分別接到兩個(gè)并行端口的示意圖在硬件上,行線和列線的接法如圖3所示。圖3中是一個(gè)8×8=64鍵的鍵盤,將行線和一個(gè)并行輸出端口相接。CPU每次使并行輸出端口的某一位為0,便相當(dāng)于將某一行接地;而其他位為1,則相當(dāng)于使其他行線處于高電平。為了檢查列線的的電位,將列線和一個(gè)并行輸入端口相接,CPU只要讀取輸入端口中的數(shù)據(jù),就可以設(shè)法判別出第幾號(hào)鍵被按下。下面,對(duì)鍵盤掃描程序作具體說(shuō)明。第一步、判斷是否有鍵被按下。為此,使輸出端口各位均輸出為0,即相當(dāng)于將所有各行都接地。然后,從輸入端口讀取數(shù)據(jù),如果讀得的數(shù)據(jù)不是FFH,則說(shuō)明必有列線處于低電平,從而可斷定必有某鍵被按下。此時(shí),為了消除鍵的抖動(dòng),所心調(diào)用延遲程序,然后再判別具體按下的到底是哪個(gè)鍵。如果讀得的數(shù)據(jù)是FFH,則程序在循環(huán)中等待。這段程序如下:;判斷是否有按鍵WAIT: MOV AL,00H MOV DX,OUTPORT OUT DX,AL ;往所有行線上輸出低電平,OUTPORT為行線所連的輸出端口MOVDX,INPORT IN AL,DX ;讀取列值 AND AL,0FFH CMP AL,0FFH ;是否有列線為低電平 JZ WAIT ;否,則循環(huán)等待DONE:CALLDELAY ;是,則延遲去抖動(dòng) …第二步、判斷哪一個(gè)鍵被按下了。這段程序的流程圖如圖4所示。開始時(shí),程序先將鍵號(hào)寄存器置0,將計(jì)數(shù)器值設(shè)置為鍵盤行的數(shù)目,然后設(shè)置掃描初值。掃描初值11111110使第0行為地電位,而其他行為高電位。輸出掃描初值循環(huán)左移一位,變?yōu)?1111101,這樣,使第1行為地電位,而使其他行為高電位。同時(shí),使鍵號(hào)成為8,即從第2行上第1個(gè)鍵開始檢查。此外,計(jì)數(shù)值減1……。如此下去,一直查到計(jì)數(shù)值為0.如果在此過(guò)程中,查到有一列線為地電位,則將列線數(shù)據(jù)保留,并右移一位,使進(jìn)位位相當(dāng)于第0列線的狀態(tài)。如果此位為地電位對(duì)應(yīng)值0,則相當(dāng)于第0列線上的0號(hào)鍵(在第二次循環(huán)中為8號(hào)鍵…等等)閉合;否則,繼續(xù)循環(huán)右移。由于已經(jīng)確定了此行上有一鍵閉合,所以,一定可以在列線中檢查出某列處于地電位。程序見(jiàn)課本254頁(yè)。圖4用掃描法判斷哪一個(gè)鍵被按下的流程圖2、行反轉(zhuǎn)法的原理行反轉(zhuǎn)法也是識(shí)別閉合鍵的常用方法,行反轉(zhuǎn)法又稱線反轉(zhuǎn)法,利用一個(gè)可編程的并行接口(如8255A)來(lái)實(shí)現(xiàn)。它的原理如下:將行線接一個(gè)并行

溫馨提示

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

評(píng)論

0/150

提交評(píng)論