微機(jī)原理第10章-并行接口芯片.ppt_第1頁(yè)
微機(jī)原理第10章-并行接口芯片.ppt_第2頁(yè)
微機(jī)原理第10章-并行接口芯片.ppt_第3頁(yè)
微機(jī)原理第10章-并行接口芯片.ppt_第4頁(yè)
微機(jī)原理第10章-并行接口芯片.ppt_第5頁(yè)
已閱讀5頁(yè),還剩108頁(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)介

1、I/O接口概述,并行接口 8255A,掌握可編程并行接口芯片 8255A的連接與編程,微機(jī)系統(tǒng)的信息交換有并行通信 和串行通信兩種方式。,并行通信是以微機(jī)的字長(zhǎng)為傳輸單位;適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、大量和快速的信息交換。,概 述,10.1 8255A的基本功能和結(jié)構(gòu),一、8255A的內(nèi)部結(jié)構(gòu)和引腳信號(hào),1. 8255A內(nèi)部結(jié)構(gòu),圖10.1 8255A內(nèi)部結(jié)構(gòu),8255A包括四大部分:數(shù)據(jù)總線緩沖器、讀寫控制部件、A組和B組控制部件、端口A、B、C。,(1) 并行輸入 / 輸出端口A、B、C,端口A:包含一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器,輸入輸出數(shù)據(jù)均受到鎖存。,

2、端口B和C: 都包含一個(gè)8位數(shù)據(jù)輸入緩沖器和一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,輸出數(shù)據(jù)能鎖存,輸入數(shù)據(jù)不鎖存。 端口C:可分成兩個(gè)4位端口,分別定義為輸入或輸出端口,還可定義為控制、狀態(tài)端口,配合端口A和端口B工作。,(2) A組和B組控制部件,A組,B組的控制寄存器,接收來(lái)自數(shù)據(jù)總線的控制字,并根據(jù)控制字確定各端口的工作狀態(tài)和工作方式。,(3) 數(shù)據(jù)總線緩沖器,(4)讀/寫控制部件,接收來(lái)自CPU地址總線信號(hào)和控制信號(hào),并發(fā)出命令到兩個(gè)控制組 (A組和B組)。,RESET:復(fù)位信號(hào)。RESET有效時(shí),清 8255A 所有控制寄存器內(nèi)容, 并將各端口置成輸入方式。,2. 8255A的引腳,82

3、55A采用40線雙列直插封裝,引腳圖如圖所示。,圖10.2 8255A引腳定義,* PA7PA0:A端口數(shù)據(jù)信號(hào)引腳,* PB7PB0:B端口數(shù)據(jù)信號(hào)引腳,* PC7PC0:C端口數(shù)據(jù)信號(hào)引腳,* D7D0: 8255A的8位數(shù)據(jù)線,* A1A0: 端口選擇信號(hào),當(dāng)A1A0=00時(shí) 選擇端口A,當(dāng)A1A0=01時(shí) 選擇端口B,當(dāng)A1A0=10時(shí) 選擇端口C,當(dāng)A1A0=11時(shí) 選擇控制端口,表10.1 8255A的讀寫操作控制,8255A共有兩個(gè)控制字:即工作方式控制字和對(duì)C口置位/復(fù)位控制字。,1. 控制字,(1)工作方式控制字: 控制字和各位的含義如圖所示。,10.2 8255A的控制字及

4、方式選擇,圖10.3 8255A工作方式控制字格式,(2) 端口C的置位/復(fù)位控制字,控制字的格式如圖所示。,圖10.4 8255A 置位/復(fù)位控制字格式,關(guān)于控制字要說(shuō)明幾點(diǎn):,(1) 設(shè)置方式控制字時(shí),A口、B口作為整體設(shè)置,而C口要分成上、下兩部分分別設(shè)置。三個(gè)端口的工作方式由一個(gè)控制字規(guī)定。,(2) C口按位置位/復(fù)位控制字不是送到C口地址,而是送到控制寄存器地址;且一個(gè)控制字只能使C口一位置位或復(fù)位。,(3) 方式控制字和按位置位/復(fù)位控制字均寫入同一個(gè)控制寄存器地址,二者通過(guò)最高位D7來(lái)區(qū)別。D7=1為方式控制字,D7=0為按位置位/復(fù)位控制字。,方式0是一種基本輸入輸出工作方式,

5、它的24條I/O線可以全部都用作傳送數(shù)據(jù),不設(shè)置應(yīng)答信號(hào)線,常用于無(wú)條件傳送,輸出有鎖存,輸入只有緩沖能力而無(wú)鎖存功能。,方式0控制字具體格式如圖10.5所示,10.3 方式0 基本輸入/輸出方式,圖10.5 8255A工作方式0控制字格式,由控制字中D4D3D1D0等4位的不同 取值可定義方式0的16種工作方式的組 合如表10.2所示。,方式0中,端口C被分成兩個(gè)4位 端口,它們可被定義為輸入或輸出端 口,CPU與3個(gè)端口之間交換數(shù)據(jù), 可直接由CPU執(zhí)行IN和OUT指令來(lái)完 成。,表10.2 方式0的工作狀態(tài)組合, 方式1選通輸入,方式1操作使端口A或端口B作為鎖存輸入設(shè)備工作。端口C也可

6、按方式1操作使用但不是對(duì)數(shù)據(jù),而是對(duì)控制信號(hào),或當(dāng)端口A或端口B為選通輸入端口時(shí)的握手信號(hào)。,下圖示出8255A方式1選通輸入時(shí)的內(nèi)部結(jié)構(gòu)圖。,10.4 方式1選通式輸入/輸出方式,圖10.6工作方式1輸入控制字格式,(a)端口A方式1輸入,(b)端口B方式1輸入,圖10.7方式1輸入端口狀態(tài),IBF:輸入緩沖器滿信號(hào),向外設(shè)輸 出,高電平有效。,INTE:中斷允許信號(hào),它是通過(guò)端口PC4(端口A)或PC2(端口B)的位來(lái)編程的內(nèi)部位。, 方式1選通輸出,圖10.8 方式1輸出控制字格式,圖10.9 方式1輸出端口狀態(tài),(a)端口A方式1輸出,(b)端口B方式1輸出,INTE:中斷允許信號(hào)。,

7、INTR:中斷請(qǐng)求信號(hào)。高 電平有效。,方式2只允許A組采用,此時(shí)端口A變?yōu)殡p向,允許數(shù)據(jù)在同一組8條線上發(fā)送和接收。,下圖示出方式2操作內(nèi)部結(jié)構(gòu)圖。,10.5 方式2雙向選通輸入/輸出方式,圖10.10 端口A方式2控制字,圖10.11 端口A工作在方式2的端口狀態(tài),IBFA:輸入緩沖器滿信號(hào),向外設(shè)輸出,高電平有效。,INTE:中斷允許信號(hào) (INTE1和INTE2)。高電平有效。,INTRA:中斷請(qǐng)求信號(hào),高電平有效。,8255A中端口A工作方式2時(shí),允許端口B工作于方式0或方式1,完成輸入/輸出功能。4種組合狀態(tài)及其工作方式控制字格式如表10.3。,表10.3 方式2的組合狀態(tài)與控制字

8、格式,目前打印機(jī)一般采用并行接口Centronics標(biāo)準(zhǔn),其主要信號(hào)與傳送時(shí)序如圖10.12。打印機(jī)接收主機(jī)傳送數(shù)據(jù)的過(guò)程是這樣的:,10.6 8255A的應(yīng)用實(shí)例,10.6.1 8255A與打印機(jī)接口,一、用方式0與打印機(jī)接口,當(dāng)主機(jī)準(zhǔn)備好輸出打印的一個(gè)數(shù)據(jù)時(shí),通過(guò)8255A把數(shù)據(jù)送給打印機(jī)接口的數(shù)據(jù)引腳DATA0DATA7,同時(shí)送出一個(gè)數(shù)據(jù)選通信號(hào)STROBE 給打印機(jī)。打印機(jī)收到該信號(hào)后,把數(shù)據(jù)鎖存到內(nèi)部緩沖區(qū),同時(shí)在BUSY信號(hào)線上發(fā)出忙信號(hào)。待打印機(jī)處理好輸入數(shù)據(jù)時(shí),打印機(jī)撤消忙信號(hào),同時(shí)向主機(jī)送出一個(gè)響應(yīng)信號(hào)ACK。主機(jī)根據(jù)BUSY信號(hào)或信號(hào)ACK決定是否輸出下一個(gè)數(shù)據(jù)。,圖10.

9、12 方式0的打印機(jī)接口,本例中,CPU與8255A采用查詢方式輸出數(shù)據(jù)。端口A設(shè)置為方式0,輸出打印數(shù)據(jù),端口C的PC7產(chǎn)生負(fù)脈沖選通信號(hào),PC2連接打印機(jī)的BUSY信號(hào)查詢其狀態(tài),PC0連接打印機(jī)的信號(hào)。 假設(shè)8255A的A、B、C口的I/O地址為FFF8H、FFFAH和FFFCH,控制端口地址為FFFEH。,: ;初始化程序段 MOV DX, 0FFFEH MOV AL, 81H ;A口方式0輸出,C口上半部輸出, ;下半部輸入 OUT DX, AL ;輸出工作方式字 MOV AL, 0FH ;C口的置位/復(fù)位控制字,使PC7 ;= 1,即置STROBE= 1 OUT DX, AL ;輸

10、出打印數(shù)據(jù)子程序,打印數(shù)據(jù) ;在AH中 PUSH AX PUSH DX PM: MOV DX, 0FFFCH,IN AL, DX ;查詢PC2 AND AL, 04H ;BUSY=0? JNZ PM ;忙,則等待,D2=1 表示忙 MOV DX, 0FFF8H ;不忙,則輸出數(shù)據(jù) MOV AL, AH OUT DX, AL MOV DX, 0FFFEH MOV AL,0EH ;使PC7=0,即置 = 0 OUT DX, AL,NOP ;適當(dāng)延時(shí),產(chǎn)生一定寬 度的低電平 NOP MOV AL, 0FH ;使PC7=1,置 = 1 OUT DX, AL POP DX POP AX RET,STRO

11、BE,要求將8255單元與LED-KEYBOARD單元連接,編寫程序,掃描鍵盤輸入,并將掃描結(jié)果送數(shù)碼塊顯示。,二、用方式1與打印機(jī)接口,圖10.13 方式1的打印機(jī)接口,PRINT PROC PUSH AX ;保護(hù)寄存器 PUSH BX PUSH CX PUSH DX MOV DX, 0FFFEH ;設(shè)定A口為選通輸出方式 MOV AL, 0A0H OUT DX, AL MOV AL,0CH ;使INTEA(PC6)為0,禁中斷 OUT DX, AL MOV CX, M ;打印字節(jié)數(shù)送CX,MOV BX, OFFSET BUF ;取緩沖區(qū)首址送BX PRINT1: MOV AL, BX ;取

12、一個(gè)數(shù)據(jù) MOV DX, 0FFF8H OUT DX, AL ;從A口輸出 MOV DX, 0FFFCH PRINT2: IN AL, DX ;讀C口 TEST AL, 80H ;檢測(cè)OBFA(PC7) ;為1否?,JZ PRINT2 ;為0,則繼續(xù)檢測(cè) INC BX ;為1,說(shuō)明數(shù)據(jù)已輸出 LOOP PRINT1 ;準(zhǔn)備取下一個(gè)數(shù)據(jù)輸出 POP DX ;打印結(jié)束,恢復(fù)寄存器 POP CX POP BX POP AX RET ;返回 PRINT ENDP,本例與上例的主要區(qū)別是:在上例中,由軟件對(duì)PC7復(fù)位和置位來(lái)產(chǎn)生打印機(jī)的選通信號(hào),而本例中,8255A工作在選通方式,當(dāng)執(zhí)行輸出指令時(shí),自動(dòng)

13、由硬件從PC7(OBFA)輸出負(fù)脈沖選通信號(hào)。當(dāng)打印機(jī)ACK變?yōu)橛行r(shí),自動(dòng)將PC7置為高電平。,最簡(jiǎn)單的鍵盤如圖10.14(a)所示,其中每個(gè)鍵對(duì)應(yīng)I/O端口的一位。沒(méi)有鍵閉合時(shí),各位均處于高電平;當(dāng)有一個(gè)鍵按下時(shí),就使對(duì)應(yīng)位接地而成為低電平,而其它位仍為高電平。這樣,CPU只要檢測(cè)到某一位為0,便可判別出對(duì)應(yīng)鍵已按下。,10.6.2 8255A與鍵盤接口,一、鍵盤的工作原理,圖10.14 鍵盤的結(jié)構(gòu),用圖10.14(a)的結(jié)構(gòu)設(shè)計(jì)鍵盤有一個(gè)很大的缺點(diǎn):占用的I/O端口也太多。所以,這種簡(jiǎn)單結(jié)構(gòu)只用在只有幾個(gè)鍵的小鍵盤中。,通常使用的鍵盤是矩陣結(jié)構(gòu)的。以33=9個(gè)鍵為例,如圖10.14(b)

14、,這個(gè)矩陣分為3行3列,如果鍵5按下,則第1行和第2列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會(huì)使第2列線也輸出低電平。,二、鍵的識(shí)別,(1)行掃描法,圖10.15是一個(gè)8行8列組成的鍵盤。行掃描法識(shí)別按鍵的原理如下:先使第0行接低電平,其余行為高電平,然后看第0行是否有鍵閉合。這是通過(guò)檢查列線電位來(lái)實(shí)現(xiàn)的,即在第0行接低電平時(shí),看是否有哪條列線變成低電平。,圖10.15 鍵盤接口電路,如果沒(méi)有任何一條列線為低電平,則說(shuō)明第0行沒(méi)有任何鍵被按下。此后,再將第1行接低電平,檢測(cè)是否有變?yōu)榈碗娖降牧芯€。如此重復(fù)地掃描,直到最后一行。在掃描過(guò)程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí),便退出掃描,通

15、過(guò)組合行線和列線即可識(shí)別此刻按下的是哪一鍵。,圖10.15中將行線與8255A端口B相連,端口B設(shè)置為輸出。CPU使端口B的某一位為0,便相當(dāng)于將該行線接低電平;某位為1,則該行線接高電平。將列線與端口A相連,端口A設(shè)置為輸入。CPU只要讀取端口A的數(shù)據(jù),就可以判別是否有鍵被按下及是第幾列的鍵被按下。,從上面的原理可知,鍵盤掃描程序的第一步應(yīng)該判斷是否有鍵被按下。為此,使輸出端口各位全為0,即相當(dāng)于將所有行線接低電平。然后,從輸入端口讀取數(shù)據(jù),如果讀得的數(shù)據(jù)不是FFH,則說(shuō)明必有列線處于低電平,從而可斷定必有鍵被按下。此時(shí),為了消除鍵的抖動(dòng),調(diào)用延遲程序。如果讀得的數(shù)據(jù)是FFH,則程序在循環(huán)中

16、等待。這段程序如下:,KEY1: MOV AL, 00H MOV DX, ROWPORT ;ROWPORT為行線端口 ;地址 OUT DX, AL ;使所有行線為低 MOV DX, COLPORT ;COLPORT為列線端口地 ;址 IN AL,DX ;讀取列值 CMP AL, 0FFH ;判定是否有列線為低電平 JZ KEY1 ;沒(méi)有,無(wú)閉合鍵,則循環(huán)等待 CALL DELAY ;有,則延遲20ms清除抖動(dòng),鍵盤掃描程序的第二步是逐行掃描以判斷哪一個(gè)鍵被按下了。開(kāi)始時(shí),將計(jì)數(shù)值設(shè)置為行數(shù)。掃描初值11111110使第0行為低電平,其它行為高。輸出掃描初值后,馬上讀取列線的值,看是否有列線處于

17、低電平。若無(wú),則將掃描初值循環(huán)左移一位,變?yōu)?1111101,同時(shí),計(jì)數(shù)值減1,如此下去,直到計(jì)數(shù)值為0,或找到按鍵所在行時(shí)止,程序段如下:,MOV AH, 0FEH ;掃描初值送AH MOV CX, 8 ;行數(shù)送CX KEY2: MOV AL, AH MOV DX, ROWPORT OUT DX, AL ;輸出行值(掃描值) MOV DX, COLPORT IN AL, DX ;讀進(jìn)列值,CMP AL, 0FFH ;判斷有無(wú)接地線 JNZ KEY3 ;有,則轉(zhuǎn)下一步處理 ROL AH,1 ;無(wú),則修改掃描值 ;準(zhǔn)備下一行掃描 LOOP KEY2 ;計(jì)數(shù)一次,未掃完8行,則繼續(xù)循環(huán) JMP K

18、EY1 ;所有行都沒(méi)有鍵按下,則返回繼 ;續(xù)檢測(cè) KEY3: ; 此時(shí),AL=列值,AH=行值,進(jìn)行后 ; 續(xù)處理,將行線接一個(gè)數(shù)據(jù)端口,先讓它工作在輸出方式;將列線也接到一個(gè)數(shù)據(jù)端口,先讓它工作在輸入方式。程序使CPU通過(guò)輸出端口往各行線上送低電平,然后讀入列線值。如果此時(shí)有某鍵被按下,則程序再對(duì)兩個(gè)端口進(jìn)行方式設(shè)置,使接行線的端口改為輸入方式,接列線的端口改為輸出方式。并將剛才讀得的列值從列線所接端口輸出,再讀取行線的輸入值,那么,閉合鍵所在的行線值必定為0。,(2) 行反轉(zhuǎn)法,為了查找鍵代碼,鍵盤程序設(shè)計(jì)時(shí),可將各個(gè)鍵對(duì)應(yīng)的行、列值放在一個(gè)表中,程序通過(guò)查表來(lái)確定哪一個(gè)鍵被按下,進(jìn)而在另

19、一個(gè)表中找到這個(gè)鍵的代碼。 如果遇到多個(gè)鍵同時(shí)閉合的情況,則輸入的行值或者列值中一定有一個(gè)以上的0,而由程序預(yù)選建立的鍵值表中不會(huì)有此值,因而可以判為重鍵而重新查找。所以,用這種方法可以方便地解決重鍵問(wèn)題。,KEY1: ;設(shè)置行線接輸出端口ROWPORT, ;列線接輸入端口COLPORT, 并 ;判斷是否有鍵按下 KEY2: MOV AL, 00H MOV DX,ROWPORT OUT DX,AL ;行線全為低 MOV DX,COLPORT IN AL,DX ;讀取列值 CMP AL,0FFH JZ KEY2 ;無(wú)閉合鍵,循環(huán)等待 PUSH AX ;有閉合鍵,保存列值 PUSH AX, ;設(shè)置

20、行線接輸入端口ROWPORT, ;列線接輸出端口COLPORT,并判 ;斷是否有鍵按下 MOV DX, COLPORT POP AX OUT DX,AL ;輸出列值 MOV DX, ROWPORT IN AL,DX ;讀取行值 POP BX ;結(jié)合行列值,此時(shí) MOV AH,BL ;AL=行值,AH=列值 ;查找鍵代碼,;查找鍵代碼 MOV SI, OFFSET TABLE ;TABLE為鍵值表 MOV DI, OFFSET CHAR ;CHAR為鍵對(duì)應(yīng)的代碼 MOV CX, 64 ;鍵的個(gè)數(shù) KEY3: CMP AX, SI ;與鍵值比較 JZ KEY4 ;相同,說(shuō)明查到 INC SI ;不

21、相同,繼續(xù)比較 INC SI INC DI LOOP KEY3 JMP KEY1 ;全部比較完,仍無(wú)相同,說(shuō)明是重鍵 KEY4: MOV AL,DI ;獲取鍵代碼送AL ;判斷按鍵是否釋放,沒(méi)有則等待,CALL DELAY ;按鍵釋放,延時(shí)消除抖動(dòng) ;后續(xù)處理 TABLE DW 0FEFEH ;鍵0的行列值(鍵值) DW 0FDFEH ;鍵1的行列值 DW 0FBFEH ;鍵2的行列值 ;全部鍵的行列值 CHAR DB ;鍵0的代碼 DB ;鍵1的代碼 ;全部鍵的代碼,當(dāng)用手按下一個(gè)鍵時(shí),往往會(huì)出現(xiàn)按鍵在閉合和斷開(kāi)位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個(gè)鍵時(shí),也會(huì)出現(xiàn)類似的情況,這就是

22、抖動(dòng)。抖動(dòng)持續(xù)時(shí)間隨操作員而異,一般不大于10ms。抖動(dòng)問(wèn)題不解決就會(huì)引起對(duì)閉合鍵的錯(cuò)誤識(shí)別。,三、抖動(dòng)和重鍵問(wèn)題,圖10.16 抖動(dòng)和硬件消抖電路,所謂重鍵就是指兩個(gè)或多個(gè)鍵同時(shí)閉合。出現(xiàn)重鍵時(shí),讀取的鍵值必然出現(xiàn)有一個(gè)以上的0。于是就產(chǎn)生了到底是否給予識(shí)別哪一個(gè)鍵的問(wèn)題。 對(duì)重鍵問(wèn)題的處理,簡(jiǎn)單的情況下,可以不予識(shí)別,即認(rèn)為重鍵是一個(gè)錯(cuò)誤的按鍵。,通常情況,則是只承認(rèn)先識(shí)別出來(lái)的鍵,對(duì)此時(shí)同時(shí)按下的其它鍵均不作識(shí)別,直到所有鍵都釋放以后,才讀入下一個(gè)鍵,稱為連鎖法。另外還有一種巡回法,它的基本思想是:等被識(shí)別的鍵釋放以后,就可以對(duì)其它閉合鍵作識(shí)別,而不必等待全部鍵釋放。顯然巡回法比較適合于

23、快速鍵入操作。,LED數(shù)碼管的主要部分是七段發(fā)光二極管,如圖10.17(a)所示。這七段發(fā)光二極管分別稱為a、b、c、d、e、f、g,有的產(chǎn)品還附帶有一個(gè)小數(shù)點(diǎn)h,通過(guò)7個(gè)發(fā)光段的不同組合,可以顯示09和AF共16個(gè)字母數(shù)字或其它異形字符。,10.6.3 8255A與LED數(shù)碼管接口,一、LED數(shù)碼管的工作原理,(a)數(shù)碼管外型,圖10.17 LED數(shù)碼管,(b)共陽(yáng)極結(jié)構(gòu),(d) 與8255A的連接,(c) 共陰極結(jié)構(gòu),圖10.17 LED數(shù)碼管,表10.4七段LED編碼表,為了將一個(gè)十六進(jìn)制數(shù)在一個(gè)LED上顯示出來(lái),就需要將十六進(jìn)制數(shù)譯為L(zhǎng)ED的7位顯示代碼。一種方法是采用專用的帶驅(qū)動(dòng)的L

24、ED段譯碼器,實(shí)現(xiàn)硬件譯碼。另一種常用的方法是軟件譯碼。在程序設(shè)計(jì)時(shí),將0F這16個(gè)數(shù)字(也可為09)對(duì)應(yīng)的顯示代碼組成一個(gè)表。,比如,用共陰極數(shù)碼管如圖10.17(d)所示連接,則0的顯示代碼為3FH,1的顯示代碼為06H,并在表中按順序排列,則要顯示的數(shù)字可以很方便地通過(guò)8086的換碼指令譯碼為該數(shù)字對(duì)應(yīng)的顯示代碼。,1位數(shù)字的LED顯示程序如下:,MOV BX, OFFSET BUFDATA ;BUFDATA區(qū)存放數(shù)字 MOV AL, BX ;取出要顯示的數(shù)字 MOV BX, OFFSET TABLE ;取顯示代碼表首地址 XLAT ;換碼為顯示代碼 MOV DX, PORT ;PORT

25、為與數(shù)碼管 ;相接的端口地址 OUT DX, AL ;輸出顯示 TABLE DB 3FH, 06H, 5BH, ;顯示代碼表,實(shí)際使用時(shí),往往要用幾個(gè)數(shù)碼管實(shí)現(xiàn)多位顯示。如果每一個(gè)數(shù)碼管占用一個(gè)獨(dú)立的輸出端口,將占用太多的通道,驅(qū)動(dòng)電路的數(shù)目也很多。 圖10.18是多位顯示的接口電路示意圖,這是一種常用的方案。在這種方案中,硬件上用公共的驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)各數(shù)碼管;軟件上用掃描方法實(shí)現(xiàn)數(shù)字顯示。,二、多位顯示,反相驅(qū)動(dòng)器 位控制端口,同相驅(qū)動(dòng)器 段控制端口,圖10.18 多位數(shù)碼管顯示接口示意圖,從圖中可以看到,用2個(gè)8位輸出端口就可以實(shí)現(xiàn)8個(gè)數(shù)碼管的顯示控制。其中,一個(gè)端口用作位控制,即控制哪個(gè)

26、(位)數(shù)碼管顯示。對(duì)于圖10.18的共陽(yáng)極數(shù)碼管,當(dāng)位控制端口的控制碼某位為低電平時(shí),經(jīng)反相驅(qū)動(dòng),便在相應(yīng)的數(shù)碼管的陽(yáng)極加上了高電平,這個(gè)數(shù)碼管就可以顯示數(shù)據(jù)。,但具體顯示什么數(shù)碼,則由另一個(gè)端口,即段控制端口決定。段控制端口通過(guò)段驅(qū)動(dòng)電路送出顯示代碼到數(shù)碼管響應(yīng)段。此端口由8個(gè)數(shù)碼管共用,因此當(dāng)CPU送出一個(gè)顯示代碼時(shí),各數(shù)碼管的陰極都收到了此代碼。但是,只有位控制碼中為低的位所對(duì)應(yīng)的數(shù)碼管才顯示數(shù)字,其它管子并不發(fā)光。,綜上所述,只要CPU通過(guò)段控制端口送出段代碼,然后通過(guò)位控制端口送出位代碼,指定的數(shù)碼管便顯示相應(yīng)的數(shù)字。如果CPU順序地輸出段碼和位碼,依次讓每個(gè)數(shù)碼管顯示數(shù)字,并不斷地

27、重復(fù),當(dāng)重復(fù)頻率達(dá)到一定程度,利用人眼的視覺(jué)暫留特性,從數(shù)碼管上便可見(jiàn)到相當(dāng)穩(wěn)定的數(shù)字顯示。,程序設(shè)計(jì)時(shí)可以開(kāi)辟一個(gè)BUFDATA緩沖區(qū),依次存放要顯示的數(shù)字。還需要建立一個(gè)顯示代碼表TABLE,依次存放0F對(duì)應(yīng)的七段顯示代碼。顯示代碼是和硬件連接有關(guān)的,在圖10.18的接口電路中,數(shù)字0的顯示代碼為C0H,1的顯示代碼為F9H,。,MOV DI, OFFSET BUFDATA ;指向數(shù)字緩沖區(qū) MOV CL, 0FEH ;指向最右邊數(shù)碼管 DISP: MOV AL, DI ;取出數(shù)字 MOV BX, OFFSET TABLE ;指向顯示代碼表 XLAT ;得到顯示代碼 MOV DX, SEG

28、PORT ;SEGPORT為段控制端口 OUT DX, AL ;送出段碼 MOV AL, CL ;取出位顯示代碼 MOV DX, BITPORT ;BITPORT為位控制端口 OUT DX, AL ;送出位碼,CALL DELAY ;延時(shí)1ms,讓數(shù)碼管有充分的點(diǎn)亮?xí)r間 INC DI ;指向下一個(gè)數(shù)字 ROL CL,1 ;指向下一個(gè)數(shù)碼管 CMP CL, 0FEH ;是否指向最右邊的數(shù)碼管 JNZ DISP ;沒(méi)有,顯示下一個(gè)數(shù)字 RET ;8位數(shù)碼管都顯示一遍,返回 TABLE DB 0C0H,0F9H,0A4H,0B0H ;顯示代碼表 DB 99H,92H,82H,0F8H DB 80H,

29、98H,88H,83H DB 0C6H,0A1H,86H,8EH BUFDATA DB 8 DUP(0) ;數(shù)字緩沖區(qū),例:設(shè)8255A的端口地址為344H347H。由16個(gè)按鍵組成44矩陣式鍵盤,編寫程序讀取按鍵(定義鍵值為0F)將鍵值寫入輸出口,在數(shù)碼管上顯示,以觀察輸入的鍵位。,10.6.4 8255A與鍵盤/LED接口,8255A與鍵盤和LED連接電路,程序流程如下:,流程圖,相應(yīng)程序如下:,DATA SEGMENTdisc DB 0BBH, 0A0H, 097H, 0B5H, 0ACH, 3DHDB 3FH, 0A1H, 0BFH, 0BDH, 0AFH, 3EH, 0B6HDB 1

30、FH, 0FH ; 0f 顯示段碼表DISO DB Press any of the keys to quit !. 24H; 提示信息DQQ DB 0DATA Ends,CODE SEGMENTMAIN PROC FARASSUME CS:CODE DS:DATA START: MOV AL, 3 ; 清屏幕MOV AH, 0INT 10H MOV AX, DATA ;顯示提示信息MOV DS, AXMOV AH, 2 ;光標(biāo)定位MOV BH, 0MOV DX, 0614HINT 10HMOV DX, OFFSET DISO;顯示:“Press”,QWE: MOV DX, 347H ;8255A控制寄存器初始化MOV AL, 80H ;B口、C口設(shè)為輸出OUT DX, AL MOV DX, 345H ; 345H為8255A的B口地址MOV BL, DQQMOV BH, 0MOV DI, BXMOV AL, DI;取0F顯示字形碼OUT DX, AL;將顯示字形碼送B口 MOV DX,346H;8255A C口地址MOV AL,0E0HOUT DX,AL;,MOV BX,DLYC1LPO:MOV

溫馨提示

  • 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)論