




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 I/O接口概述本章內容 并行接口 8255A學習目的 掌握可編程并行接口芯片 8255A的連接與編程 微機系統的信息交換有并行通信和串行通信兩種方式。 并行通信是以微機的字長為傳輸單位;適合于外部設備與微機之間進行近距離、大量和快速的信息交換。 實現并行通信的接口稱之為并行接口。 概 述 8255A是Intel86系列微處理機的配套并行接口芯片,它可為86系列CPU與外部設備之間提供并行輸入/輸出通道。一、8255A的內部結構和引腳信號1. 8255A內部結構8255A可編程外圍設備接口(Programmable Peripheral Interface, 簡寫為PPI) ,其內部結構如圖所
2、示。1 可編程并行接口芯片8255A圖11.1 8255A內部結構A組控制部件數據總線緩沖器讀/寫控制部件B組控制部件 RESETA0A1A組端口A8位A組A組端口C(高4位)B組端口C(低4位)8位B組端口BPA7PA0PC7PC4PC3PC0PB7PB0雙向D7D08255A包括四大部分:數據總線緩沖器、讀寫控制部件、A組和B組控制部件、端口A、B、C。(1) 并行輸入 / 輸出端口A、B、C端口A:包含一個8位數據輸出鎖存器/緩沖器和一個8位數據輸入鎖存器,輸入輸出數據均受到鎖存。端口B和C: 都包含一個8位數據輸入緩沖器和一個8位的數據輸出鎖存器/緩沖器,輸出數據能鎖存,輸入數據不鎖存
3、。端口C:可分成兩個4位端口,分別定義為輸入或輸出端口,還可定義為控制、狀態端口,配合端口A和端口B工作。(2) A組和B組控制部件A組A口:PA0PA7C口的高4位:PC4PC7B組B口:PB0PB7C口的低4位:PC0PC3 A組,B組的控制寄存器,接收來自數據總線的控制字,并根據控制字確定各端口的工作狀態和工作方式。(3) 數據總線緩沖器三態雙向8位緩沖器,是8255A與CPU 之間的數據接口。傳送輸入數據、輸出數據、控制命令字。(4)讀/寫控制部件接收來自CPU地址總線信號和控制信號,并發出命令到兩個控制組 (A組和B組)。CS:片選信號,接CPU高位地址的譯碼輸出WR:寫信號,WR有
4、效,CPU向8255A寫入控制或數據信息。RD:讀信號,RD有效,CPU讀8255A的數據或狀 態;RESET:復位信號。RESET有效時,清 8255A 所有控制寄存器內容, 并將各端口置成輸入方式。2. 8255A的引腳8255A采用40線雙列直插封裝,引腳圖如圖所示。圖11.2 8255A引腳定義432140371834.27D7D0A0A1RESETVCCGND986536358255APPI數據總線控制線電源線通道A通道B通道CCPU接口外設接口.PA7PA0.PB7PB0.PC7PC025141516 171312 11 10 * PA7PA0:A端口數據信號引腳* PB7PB0:
5、B端口數據信號引腳* PC7PC0:C端口數據信號引腳* D7D0: 8255A的8位數據線* A1A0: 端口選擇信號 當A1A0=00時 選擇端口A當A1A0=01時 選擇端口B當A1A0=10時 選擇端口C當A1A0=11時 選擇控制端口表11.1 8255A的讀寫操作控制 8255A共有兩個控制字:即工作方式控制字和對C口置位/復位控制字。1. 控制字(1)工作方式控制字:控制字和各位的含義如圖所示。二 、 8255A的控制字及其工作方式D7 D6 D5 D4 D3 D2 D1 D0B組端口C(PC3PC0)1=輸入, 0=輸出端口B1=輸入,0=輸出方式選擇0方式0, 1=方式1A組
6、端口C(PC7PC4)1=輸入, 0=輸出端口A1=輸入,0=輸出方式選擇00端口A方式0, 01=端口A方式1,1=端口A方式2方式設置標志1=有效圖11.3 8255A工作方式控制字格式(2) 端口C的置位/復位控制字控制字的格式如圖所示。圖11.4 8255A 置位/復位控制字格式D7 D6 D5 D4 D3 D2 D1 D0位的置位/復位1=置位,0=復位位 選 擇D3 D2 D1 通道C位按位置位/復位控制標志0=有效0 0 0 PC00 0 1 PC10 1 0 PC20 1 1 PC31 0 0 PC41 0 1 PC51 1 0 PC61 1 1 PC7不使用設置為000關于控
7、制字要說明幾點:(1) 設置方式控制字時,A口、B口作為整體設置,而C口要分成上、下兩部分分別設置。三個端口的工作方式由一個控制字規定。(2) C口按位置位/復位控制字不是送到C口地址,而是送到控制寄存器地址;且一個控制字只能使C口一位置位或復位。(3) 方式控制字和按位置位/復位控制字均寫入同一個控制寄存器地址,二者通過最高位D7來區別。D7=1為方式控制字,D7=0為按位置位/復位控制字。(1) 方式0 基本輸入/輸出方式方式0是一種基本輸入輸出工作方式,它的24條I/O線可以全部都用作傳送數據,不設置應答信號線,常用于無條件傳送,輸出有鎖存,輸入只有緩沖能力而無鎖存功能。方式0控制字具體
8、格式如圖11.5所示2. 工作方式圖11.5 8255A工作方式0控制字格式 由控制字中D4D3D1D0 等4位的不同取值,可定義方式0的16種工作方式的組合,如表11.2所示。 方式0中,端口C被分成兩個4位端口,它們可被定義為輸入或輸出端口,CPU與3個端口之間交換數據,可直接由CPU執行IN和OUT指令來完成。表11.2 方式0的工作狀態組合序號控制字D7,D0A組B組端口A端口C高4位(PC7PC4)端口B端口C低4位(PC3PC0)110000000輸出輸出輸出輸出210000001輸出輸出輸出輸入310000010輸出輸出輸入輸出410000011輸出輸出輸入輸入510001000
9、輸出輸入輸出輸出610001001輸出輸入輸出輸入710001010輸出輸入輸入輸出810001011輸出輸入輸入輸入910010000輸入輸出輸出輸出1010010001輸入輸出輸出輸入1110010010輸入輸出輸入輸出1210010011輸入輸出輸入輸入1310011000輸入輸入輸出輸出1410011001輸入輸入輸出輸入1510011010輸入輸入輸入輸出1610011011輸入輸入輸入輸入(2) 工作方式1選通式輸入/輸出方式 方式1選通輸入方式1操作使端口A或端口B作為鎖存輸入設備工作。端口C也可按方式1操作使用但不是對數據,而是對控制信號,或當端口A或端口B為選通輸入端口時的握
10、手信號。下圖示出8255A方式1選通輸入時的內部結構圖。圖11.6工作方式1輸入控制字格式(a)端口A方式1輸入(b)端口B方式1輸入圖11.7方式1輸入端口狀態IBF:輸入緩沖器滿信號,向外設輸 出,高電平有效。STB:選通信號。由外設輸入,低電平 有效。INTR:中斷請求信號,高電平有效。INTE:中斷允許信號,它是通過端口PC4(端口A)或PC2(端口B)的位來編程的內部位。 方式1選通輸出當端口A或端口B為方式1輸出時,各指定PC的3條線作為8255A與外設及CPU之間應答信號。下圖為方式1選通輸出操作的內部結構圖。 圖11.8 方式1輸出控制字格式圖11.9 方式1輸出端口狀態INT
11、RAPC3PC6PC7PA70方式1輸出端口APC4,5I/OINTEA2WR方式1輸出端口BINTRBPC0PC2PC1INTEBPB70WR(a)端口A方式1輸出(b)端口B方式1輸出OBF:輸出緩沖器滿信號。向外設 輸出,低電平有效。ACK: 外設應答信號。由外設輸入,低電平有效。INTE:中斷允許信號。INTR:中斷請求信號。高 電平有效。(3) 工作方式2雙向選通輸入/輸出方式方式2只允許A組采用,此時端口A變為雙向,允許數據在同一組8條線上發送和接收。下圖示出方式2操作內部結構圖。圖11.10 端口A方式2控制字 圖11.11 端口A工作在方式2的端口狀態OBFA:輸出緩沖器滿信號
12、,向外設輸出,低電平有效。ACKA:應答信號,由外設輸入,低電平有效。STBA: 數據選通輸入信號。由外設輸入, 低電平有效。IBFA:輸入緩沖器滿信號,向外設輸出,高電平有效。INTE:中斷允許信號 (INTE1和INTE2)。高電平有效。INTRA:中斷請求信號,高電平有效。 8255A中端口A工作在方式2時,允許端口B工作于方式0或方式1,完成輸入/輸出功能。4種組合狀態及其工作方式控制字格式如表11.3。表11.3 方式2的組合狀態與控制字格式3. 8255A的工作方式初始化(初始化) 根據8255A與CPU接口硬件電路圖確 定8255A四個端口地址。 根據8255A的具體應用,確定8
13、255A工 作方式控制字內容。 利用輸出指令,將工作方式控制字送 至控制命令寄存器中。 4. 8255A中PC口置位/復位操作 根據8255A與CPU接口硬件電路確定 8255A四個端口的端口地址。 根據對PC口具體哪一位操作,確定 8255A的按位置位/復位控制字內容。 利用輸出指令,將按位置位/復位控制 字送至8255A控制命令寄存器中。 目前打印機一般采用并行接口Centronics標準,其主要信號與傳送時序如圖11.12。打印機接收主機傳送數據的過程是這樣的:2 8255A的應用實例一、 8255A與打印機接口1、用方式0與打印機接口 當主機準備好輸出打印的一個數據時,通過8255A把
14、數據送給打印機接口的數據引腳DATA0DATA7,同時送出一個數據選通信號STROBE 給打印機。打印機收到該信號后,把數據鎖存到內部緩沖區,同時在BUSY信號線上發出忙信號。待打印機處理好輸入數據時,打印機撤消忙信號,同時向主機送出一個響應信號ACK。主機根據信號BUSY或信號ACK決定是否輸出下一個數據。圖11.12 方式0的打印機接口 本例中,CPU與8255A采用查詢方式輸出數據。端口A設置為方式0,輸出打印數據,端口C的PC7產生負脈沖選通信號,PC2連接打印機的BUSY信號查詢其狀態,PC0連接打印機的ACK信號。 假設8255A的A、B、C口的I/O地址為FFF8H、FFFAH和
15、FFFCH,控制端口地址為FFFEH。 ;初始化程序段 MOV DX , 0FFFEH MOV AL , 81H ; A口方式0輸出, C口上半部輸出, ;下半部輸入 OUT DX , AL ; 輸出工作方式字 MOV AL , 0FH ; C口的置位/復位控制字, ; 使PC7 = 1, 即置STROBE= 1 OUT DX , AL PUSH AX ;輸出打印數據子程序, 打印數據 ; 在AH中 PUSH DXPM: MOV DX , 0FFFCHIN AL, DX ;查詢PC2AND AL, 04H ;BUSY=0?JNZ PM ;忙,則等待,D2=1 表示忙MOV DX, 0FFF8H
16、 ;不忙,則輸出數據MOV AL, AHOUT DX, ALMOV DX, 0FFFEHMOV AL,0EH ;使PC7=0,即置 = 0OUT DX, ALSTROBENOP ;適當延時,產生一定寬 度的低電平NOPMOV AL, 0FH ;使PC7=1,置 = 1OUT DX, ALPOP DX POP AXRETSTROBE2、用方式1與打印機接口 8255A的端口A工作于選通輸出方式,PC7作為 OBFA輸出信號,PC6作為ACKA 輸入信號,而PC3作為INTRA輸出信號;另外,可用程序控制INTEA(PC6),決定是否采用中斷方式。打印機接口的時序與8255A的選通輸出方式的時序類
17、似,但略有差別,用單穩電路74LS123即可滿足雙方的時序要求,見圖11.13。圖11.13 方式1的打印機接口 假設8255A的A、B、C口的I/O地址為FFF8H、FFFAH和FFFCH。控制端口的地址為FFFEH。以下為采用選通方式輸出緩沖區BUF中的打印字符的子程序,輸出的字節數為M。PRINT PROC PUSH AX ;保護寄存器 PUSH BX PUSH CX PUSH DX MOV DX , 0FFFEH ;設定A口為選通輸出方式 MOV AL , 0A0H OUT DX , AL MOV AL , 0CH ;使INTEA(PC6)為0 , 禁止 中斷 OUT DX , AL
18、MOV CX , M ;打印字節數送CX MOV BX , OFFSET BUF ; 取緩沖區首址 送BX PRINT1: MOV AL , BX ; 取一個數據 MOV DX , 0FFF8H OUT DX , AL ; 從A口輸出 MOV DX , 0FFFCHPRINT2: IN AL , DX ;讀C口 TEST AL , 80H ;檢測OBFA(PC7) ;是否為1? JZ PRINT2 ; 為0,則繼續檢測 INC BX ;為1,說明數據已輸出 LOOP PRINT1 ;準備取下一個數據輸出 POP DX ; 打印結束,恢復寄存器 POP CX POP BX POP AX RET
19、; 返回PRINT ENDP 本例與上例的主要區別是:在上例中,由軟件對PC7復位和置位來產生打印機的選通信號,而本例中,8255A工作在選通方式,當執行輸出指令時,自動由硬件從PC7(OBFA)輸出負脈沖選通信號。當打印機ACK變為有效時,自動將PC7置為高電平。 最簡單的鍵盤如圖11.14(a)所示,其中每個鍵對應I/O端口的一位。沒有鍵閉合時,各位均處于高電平;當有一個鍵按下時,就使對應位接地而成為低電平,而其它位仍為高電平。這樣,CPU只要檢測到某一位為0,便可判別出對應鍵已按下。二、 8255A與鍵盤接口1、鍵盤的工作原理圖11.14 鍵盤的結構 用圖11.14(a)的結構設計鍵盤有
20、一個很大的缺點:占用的I/O端口也太多。所以,這種簡單結構只用在只有幾個鍵的小鍵盤中。 通常使用的鍵盤是矩陣結構的。以33=9個鍵為例,如圖11.14(b),這個矩陣分為3行3列,如果鍵5按下,則第1行和第2列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會使第2列線也輸出低電平。2、鍵的識別(1)行掃描法 圖11.15是一個8行8列組成的鍵盤。行掃描法識別按鍵的原理如下:先使第0行接低電平,其余行為高電平,然后看第0行是否有鍵閉合。這是通過檢查列線電位來實現的,即在第0行接低電平時,看是否有哪條列線變成低電平。 圖11.15 鍵盤接口電路 如果沒有任何一條列線為低電平,則說明第0行沒
21、有任何鍵被按下。此后,再將第1行接低電平,檢測是否有變為低電平的列線。如此重復地掃描,直到最后一行。在掃描過程中,當發現某一行有鍵閉合時,便退出掃描,通過組合行線和列線即可識別此刻按下的是哪一鍵。 實際應用中,一般先快速檢查鍵盤中是否有鍵按下,然后再確定按鍵的具體位置。為此,先使所有行線為低,然后檢查列線。這時如果列線有一位為0,則說明必有鍵被按下, 采用掃描法可進一步確定按鍵的具體位置。 圖11.15中將行線與8255A端口B相連,端口B設置為輸出。CPU使端口B的某一位為0,便相當于將該行線接低電平;某位為1,則該行線接高電平。將列線與端口A相連,端口A設置為輸入。CPU只要讀取端口A的數
22、據,就可以判別是否有鍵被按下及是第幾列的鍵被按下。 從上面的原理可知,鍵盤掃描程序的第一步應該判斷是否有鍵被按下。為此,使輸出端口各位全為0,即相當于將所有行線接低電平。然后,從輸入端口讀取數據,如果讀得的數據不是FFH,則說明必有列線處于低電平,從而可斷定必有鍵被按下。此時,為了消除鍵的抖動,調用延遲程序。如果讀得的數據是FFH,則程序在循環中等待。這段程序如下:KEY1: MOV AL , 00H MOV DX , ROWPORT ;ROWPORT為行線 ;端口地址 OUT DX , AL ;使所有行線為低 MOV DX , COLPORT ; COLPORT為列線 ;端口地址 IN AL
23、 , DX ;讀取列值 CMP AL , 0FFH ;判定是否有列線為低電平 JZ KEY1 ;沒有,無閉合鍵,則循環等待 CALL DELAY ;有, 則延遲20ms清除抖動 鍵盤掃描程序的第二步是逐行掃描以判斷哪一個鍵被按下了。開始時,將計數值設置為行數。掃描初值11111110使第0行為低電平,其它行為高。輸出掃描初值后,馬上讀取列線的值,看是否有列線處于低電平。若無,則將掃描初值循環左移一位,變為11111101,同時,計數值減1,如此下去,直到計數值為0,或找到按鍵所在行時止,程序段如下: MOV AH , 0FEH ;掃描初值送AH MOV CX , 8 ;行數送CXKEY2: M
24、OV AL , AH MOV DX , ROWPORT OUT DX , AL ;輸出行值(掃描值) MOV DX , COLPORT IN AL , DX ;讀進列值 CMP AL , 0FFH ; 判斷有無鍵按下 JNZ KEY3 ;有,則轉下一步處理 ROL AH , 1 ; 無 , 則修改掃描值, ;準備下一行掃描 LOOP KEY2 ; 計數一次 , 未掃完8 行, 則 繼續循環 JMP KEY1 ; 所有行都沒有鍵按下,則 返回繼續檢測KEY3: ; 進行后續, 處理此時AL=列值, AH=行值 ; 將行線接一個數據端口,先讓它工作在輸出方式;將列線也接到一個數據端口,先讓它工作在
25、輸入方式。程序使CPU通過輸出端口往各行線上送低電平,然后讀入列線值。如果此時有某鍵被按下,則程序再對兩個端口進行方式設置,使接行線的端口改為輸入方式,接列線的端口改為輸出方式。并將剛才讀得的列值從列線所接端口輸出,再讀取行線的輸入值,那么,閉合鍵所在的行線值必定為0。 (2) 行反轉法 這樣,當一個鍵被按下時,必定可以讀得一對唯一的行值和列值。但是,要實現上述行反轉法,行、列線所接的數據端口應能夠改變輸入、輸出方式,而8255A的3個端口正好具有這個功能。 為了查找鍵代碼,鍵盤程序設計時,可將各個鍵對應的行、列值放在一個表中,程序通過查表來確定哪一個鍵被按下,進而在另一個表中找到這個鍵的代碼
26、。 如果遇到多個鍵同時閉合的情況,則輸入的行值或者列值中一定有一個以上的0,而由程序預先建立的鍵值表中不會有此值,因而可以判為重鍵而重新查找。用這種方法可以方便地解決重鍵問題。KEY1: ;設置行線接輸出端口ROWPORT, ;列線接輸入端口COLPORT, 并 ;判斷是否有鍵按下KEY2: MOV AL , 00H MOV DX , ROWPORT OUT DX , AL ; 行線全為低 MOV DX , COLPORT IN AL , DX ; 讀取列值 CMP AL , 0FFH JZ KEY2 ; 無閉合鍵 , 循環等待 PUSH AX ; 有閉合鍵 , 保存列值 PUSH AX ;設
27、置行線接輸入端口ROWPORT, ;列線接輸出端口COLPORT, MOV DX , COLPORTPOP AXOUT DX , AL ; 輸出列值MOV DX , ROWPORTIN AL , DX ; 讀取行值 POP BX ; 結合行列值 ,此時MOV AH , BL ; AL=行值 ,AH=列值 ;查找鍵代碼MOV SI , OFFSET TABLE ; TABLE為鍵值表MOV DI , OFFSET CHAR ; CHAR為鍵對應的代碼表 MOV CX , 64 ; 鍵的個數KEY3: CMP AX, SI ;與鍵值比較 JZ KEY4 ; 相同 ,說明查到 INC SI ;不相同
28、 ,繼續比較 INC SI INC DI LOOP KEY3 JMP KEY1 ;全部比較完, 仍無相同, 說明是重鍵 KEY4: MOV AL , DI ; 獲取鍵代碼送AL ; 判斷按鍵是否釋放,沒有則等待 CALL DELAY ; 按鍵釋放, 延時消除抖動 ;后續處理TABLE DW 0FEFEH ; 鍵0的行列值(鍵值) DW 0FDFEH ;鍵1的行列值 DW 0FBFEH ;鍵2的行列值 ;全部鍵的行列值CHAR DB ;鍵0的代碼 DB ;鍵1的代碼 ;全部鍵的代碼 當用手按下一個鍵時,往往會出現按鍵在閉合和斷開位置之間跳幾下才穩定到閉合狀態的情況;在釋放一個鍵時,也會出現類似的
29、情況,這就是抖動。抖動持續時間隨操作員而異,一般不大于10ms。抖動問題不解決就會引起對閉合鍵的錯誤識別。 利用硬件很容易消除抖動,如圖11.16的硬件消抖電路所示。3、抖動和重鍵問題圖11.16 抖動和硬件消抖電路 所謂重鍵就是指兩個或多個鍵同時閉合。出現重鍵時,讀取的鍵值必然出現有一個以上的0。于是就產生了到底識別哪一個鍵的問題。 對重鍵問題的處理,簡單的情況下,可以不予識別,即認為重鍵是一個錯誤的按鍵。 通常情況,則是只承認先識別出來的鍵,對此時同時按下的其它鍵均不作識別,直到所有鍵都釋放以后,才讀入下一個鍵,稱為連鎖法。另外還有一種巡回法,它的基本思想是:等被識別的鍵釋放以后,就可以對
30、其它閉合鍵作識別,而不必等待全部鍵釋放。顯然巡回法比較適合于快速鍵入操作。 LED數碼管的主要部分是七段發光二極管,如圖11.17(a)所示。這七段發光二極管分別稱為a、b、c、d、e、f、g,有的產品還附帶有一個小數點h,通過7個發光段的不同組合,可以顯示09和AF共16個字母數字或其它異形字符。三、8255A與LED數碼管接口1、LED數碼管的工作原理 LED數碼管有共陽極、共陰極兩種結構,如圖11.17(b)和(c)所示。表11.4表示了共陰極與共陽極結構字符0F的編碼表。編碼的低位為a,高位為g。 由于發光二極管發光時,通過的平均電流為10mA20mA,而通常的輸出鎖存器不能提供這么大
31、的電流,所以LED各段必須接驅動電路,如圖11.17(d)所示。(a)數碼管外型 圖11.17 LED數碼管(b)共陽極結構(d) 與8255A的連接 (c) 共陰極結構 圖11.17 LED數碼管顯示數字編碼共陰極共陽極 0 3FH C0H 1 06H F9H 2 5BH A4H 3 4FH B0H 4 66H 99H 5 6DH 92H 6 7DH 82H 7 07H F8H 8 7FH 80H 9 67H 98H A 77H 88H B 7CH 83H C 39H C6H D 5EH A1H E 79H 86H F 71H 8EH . 80H 7FH表11.4七段LED編碼表 為了將一位
32、十六進制數在一個LED上顯示出來,就需要將十六進制數譯為LED的7位顯示代碼。 硬件譯碼:采用專用的帶驅動的LED段譯碼器。 軟件譯碼:在程序設計時,將0F這16個數字(也可為09)對應的顯示代碼組成一個表。 比如,用共陰極數碼管如圖11.17(d)所示連接,則0的顯示代碼為3FH,1的顯示代碼為06H,并在表中按順序排列,則要顯示的數字可以很方便地通過8086的換碼指令譯碼為該數字對應的顯示代碼。1位數字的LED顯示程序如下: MOV BX , OFFSET BUFDATA ; BUFDATA區存放 待顯示的數字 MOV AL , BX ; 取出要顯示的數字 MOV BX , OFFSET
33、TABLE ;取顯示代碼表首地址 XLAT ;換碼為顯示代碼 MOV DX , PORT ;PORT為與數碼管 ;相接的端口地址 OUT DX , AL ; 輸出顯示 TABLE DB 3FH , 06H , 5BH , ; 顯示代碼表 實際使用時,往往要用幾個數碼管實現多位顯示。如果每一個數碼管占用一個獨立的輸出端口,將占用太多的通道,驅動電路的數目也很多。 圖11.18是多位顯示的接口電路示意圖,這是一種常用的方案。在這種方案中,硬件上用公共的驅動電路來驅動各數碼管;軟件上用掃描方法實現數字顯示。2、多位顯示反相驅動器位控制端口同相驅動器段控制端口圖11.18 多位數碼管顯示接口示意圖 從
34、圖中可以看到,用2個8位輸出端口就可以實現8個數碼管的顯示控制。其中,一個端口用作位控制,即控制哪個(位)數碼管顯示。對于圖11.18的共陽極數碼管,當位控制端口的控制碼某位為低電平時,經反相驅動,便在相應的數碼管的陽極加上了高電平,這個數碼管就可以顯示數據。 但具體顯示什么數碼,則由另一個端口,即段控制端口決定。段控制端口通過段驅動電路送出顯示代碼到數碼管響應段。此端口由8個數碼管共用,因此當CPU送出一個顯示代碼時,各數碼管的陰極都收到了此代碼。但是,只有位控制碼中為低的位所對應的數碼管才顯示數字,其它管子并不發光。 綜上所述,只要CPU通過段控制端口送出段代碼,然后通過位控制端口送出位代
35、碼,指定的數碼管便顯示相應的數字。如果CPU順序地輸出段碼和位碼,依次讓每個數碼管顯示數字,并不斷地重復,當重復頻率達到一定程度,利用人眼的視覺暫留特性,從數碼管上便可見到相當穩定的數字顯示。 程序設計時可以開辟一個BUFDATA緩沖區,依次存放要顯示的數字。還需要建立一個顯示代碼表TABLE,依次存放0F對應的七段顯示代碼。顯示代碼是和硬件連接有關的,在圖11.18的接口電路中,數字0的顯示代碼為C0H,1的顯示代碼為F9H,。 下面是一段將8位數碼管依次顯示一遍的子程序。 MOV DI , OFFSET BUFDATA ;指向數字緩沖區 MOV CL , 0FEH ; 指向最右邊數碼管DI
36、SP: MOV AL , DI ; 取出數字 MOV BX , OFFSET TABLE ;指向顯示代碼表 XLAT ;得到顯示代碼 MOV DX , SEGPORT ; SEGPORT為段控制 端口 OUT DX , AL ; 送出段碼 MOV AL , CL ; 取出位顯示代碼 MOV DX , BITPORT ; BITPORT為位控制端口 OUT DX , AL ; 送出位碼 CALL DELAY ; 延時1ms,讓數碼管有充分的點亮時間 INC DI ; 指向下一個數字 ROL CL , 1 ; 指向下一個數碼管 CMP CL , 0FEH ; 是否指向最右邊的數碼管 JNZ DIS
37、P ; 沒有,顯示下一個數字 RET ; 8位數碼管都顯示一遍 , 返回 TABLE DB 0C0H , 0F9H , 0A4H , 0B0H ;顯示代碼表 DB 99H , 92H , 82H , 0F8H DB 80H , 98H , 88H , 83H DB 0C6H , 0A1H , 86H , 8EHBUFDATA DB 8 DUP ( 0 ) ;數字緩沖區例:設8255A的端口地址為344H347H。由16個按鍵組成44矩陣式鍵盤,編寫程序讀取按鍵(定義鍵值為0F)將鍵值寫入輸出口,在數碼管上顯示,以觀察輸入的鍵位。電路圖如圖所示。四、8255A與鍵盤/LED接口8255A與鍵盤和
38、LED連接電路8255APB0PB1PB2PB3PB4PB5PB6PB7PC7PC6PC5PC4PC3PC2PC1PC0LED3LED2LED1LED0+5VD0D7D0D7RDWRA0A1RSTCSIORIOWA0A1ResetY1程序流程如下:開始在CRT上顯示提示信息寫8255A控制字80H字型碼送B口延時且關指示燈寫8255A控制字88H有鍵按下行掃描鍵盤列掃描鍵盤延時消抖等待釋放S1S4按下否 退 出YNNY流程圖相應程序如下:DATA SEGMENTdisc DB 0BBH, 0A0H, 097H, 0B5H, 0ACH, 3DHDB 3FH, 0A1H, 0BFH, 0BDH, 0AFH, 3EH, 0B6HDB 1FH, 0FH ; 0f 顯示段碼表DISO DB Press any of the keys to quit !. 24H; 提示信息DQQ DB 0DATA EndsCODE SEGMENTMAIN PROC FARASSUME CS:CODE DS:DATA START: MOV AL, 3 ; 清屏幕MOV AH, 0INT 10HMOV AX, DATA ;顯示提示信息MOV DS, AXMOV AH, 2 ;光標定位MOV BH
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機務材料考試題及答案
- 心理咨詢的技術與方法探討試題及答案
- 藥劑類考試重要環節試題及答案
- 精簡西醫臨床知識點梳理試題及答案
- 心理咨詢師考試常見謬誤試題及答案
- 2025貴州省安全員《A證》考試題庫
- 探索2024文化產業管理試題及答案
- 激光技術設備功能試題及答案
- 藥物的臨床前研究階段試題及答案
- 法律考研基礎試題及答案
- 基于PLC的生產流水線電氣控制系統設計
- 2023年中考語文復習專題五文學文化常識
- 【蘇科版】八年級物理下冊知識點梳理
- 注塑模具基礎知識培訓
- 葉縣至魯山高速公路環境影響報告書
- 超聲檢測胃內容物在麻醉中應用
- 削竹式洞門隧道工程總體實施性施工組織設計平導豎井 全封閉復合式襯砌
- 煙風道管道井防水構造做法及節點詳圖
- 案例分析一次C4506交換機CPU利用率過高的處理過程
- 2023年安全質量的表態發言稿5篇
- 2023年公安機關人民警察高級執法資格考試題卷
評論
0/150
提交評論