第10章 基本人機(jī)交互設(shè)備接口_第1頁(yè)
第10章 基本人機(jī)交互設(shè)備接口_第2頁(yè)
第10章 基本人機(jī)交互設(shè)備接口_第3頁(yè)
第10章 基本人機(jī)交互設(shè)備接口_第4頁(yè)
第10章 基本人機(jī)交互設(shè)備接口_第5頁(yè)
已閱讀5頁(yè),還剩61頁(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)介

2023/2/1計(jì)算機(jī)接口技術(shù)1第10章人機(jī)交互設(shè)備接口本章內(nèi)容基本人機(jī)交互設(shè)備鍵盤、LED顯示器、打印機(jī)鍵盤/LED顯示器接口電路的解決方案LED顯示器接口設(shè)計(jì)矩陣鍵盤接口設(shè)計(jì)并行打印機(jī)接口設(shè)計(jì)2023/2/1計(jì)算機(jī)接口技術(shù)210.1人機(jī)交互設(shè)備

人機(jī)交互設(shè)備:人和計(jì)算機(jī)之間建立聯(lián)系、交流信息的輸入/輸出設(shè)備,是計(jì)算機(jī)系統(tǒng)的基本配置。10.2鍵盤10.2.1鍵盤的類型鍵盤是微型計(jì)算機(jī)系統(tǒng)中最基本的人機(jī)對(duì)話輸入設(shè)備。鍵盤按鍵,有機(jī)械式、電容式、導(dǎo)電橡膠式、薄膜式等多種,但不管何種形式,其作用都是一個(gè)使電路接通與斷開(kāi)的開(kāi)關(guān)。鍵盤的結(jié)構(gòu)有線性鍵盤和矩陣鍵盤兩種形式。2023/2/1計(jì)算機(jī)接口技術(shù)310.2.2線性鍵盤的工作原理與接口電路1.線性鍵盤的工作原理線性鍵盤由若干個(gè)獨(dú)立的按鍵組成,每個(gè)按鍵的兩端,一端接地,另一端通過(guò)電阻接+5V電源,并與接口的數(shù)據(jù)線直接連接,如圖10.1所示。當(dāng)無(wú)鍵按下時(shí),所有數(shù)據(jù)線的邏輯電平都是高電平,為全1(FFH),即全1表示無(wú)鍵按下;當(dāng)其中任意一鍵按下時(shí),它所對(duì)應(yīng)的數(shù)據(jù)線接地,其邏輯電平就變成低電平,即邏輯0表示有按鍵按下。2.線性鍵盤的接口電路線性鍵盤的接口是并行接口,采用通用并行接口芯片82C55A與鍵盤開(kāi)關(guān)連接,如圖10.1所示。2023/2/1計(jì)算機(jī)接口技術(shù)42023/2/1計(jì)算機(jī)接口技術(shù)53.線性鍵盤接口程序線性鍵盤接口程序是配合線性鍵盤實(shí)現(xiàn)鍵盤功能的組成部分,其主要作用有兩點(diǎn),一是判斷是否有鍵按下,通過(guò)查詢接口輸入數(shù)據(jù)是否為全1。若是全1,無(wú)鍵按下;若不是全1,則有鍵按下。二是確定按下的是哪一個(gè)鍵,根據(jù)哪一個(gè)數(shù)據(jù)位是邏輯0,則與此位數(shù)據(jù)線相連的鍵被按下。至于每個(gè)按鍵的功能,可由用戶定義,以便當(dāng)按下某個(gè)鍵時(shí),就可轉(zhuǎn)去執(zhí)行相應(yīng)的操作。例如,在上圖中要求當(dāng)按下S0鍵時(shí)報(bào)警,按下S1鍵時(shí)解除報(bào)警,按下S2鍵時(shí)退出。線性鍵盤尋鍵程序流程如圖10.2所示。2023/2/1計(jì)算機(jī)接口技術(shù)6圖10.2線性鍵盤的程序流程2023/2/1計(jì)算機(jī)接口技術(shù)7線性鍵盤的匯編語(yǔ)言程序段

MOVDX,303H ;初始化82C55A MOVAL,10010000B

;82C55A方式命令 OUTDX,ALKB:MOVDX,300H;查3個(gè)鍵(S0S1S2)是否鍵按下

INAL,DX;讀鍵狀態(tài)(閉合/斷開(kāi)狀態(tài)) ANDAL,07H;查低3位

CMPAL,07H

;查有無(wú)鍵按下

JZKB;無(wú)鍵按下,返回

CALLDELAY1

;有鍵按下,延時(shí)去抖

MOVDX,300H;再讀鍵狀態(tài)

INAL,DXANDAL,07H;查低3位

CMPAL,07H;再查有無(wú)鍵按下

JZKB ;無(wú)鍵按下,返回2023/2/1計(jì)算機(jī)接口技術(shù)8TESTAL,01H

;有鍵按下,是否S0鍵

JZBJ ;是,轉(zhuǎn)報(bào)警子程

TESTAL,02H ;是否S1鍵

JZJBJ ;是,轉(zhuǎn)解除報(bào)警

TESTAL,03H ;是否S2鍵

JZSTP ;是,停止,退出

JMPKB ;不是,返回DELAY: 延時(shí)子程序(略) BJ: 報(bào)警子程序(略)JBJ: 解除報(bào)警子程序(略)STP: MOVAX,4C00H ;退出

INT21H2023/2/1計(jì)算機(jī)接口技術(shù)9線性鍵盤C語(yǔ)言程序段如下 unsignedchartmp;outportb(0x303,0x90); //初始化82C55do{ tmp=inportb(0x300); //讀鍵狀態(tài)

if(tmp&0x07!=0x07){ //查低3位,判斷有無(wú)鍵按下

delay(10); //延時(shí)去抖

tmp=inportb(0x300); //再讀鍵狀態(tài)

if(tmp&0x07!=0x07){ //查低3位,查有無(wú)鍵按下

if(tmp&0x01==0x00) //是否S0鍵

BJ(); //是,轉(zhuǎn)報(bào)警子程

if(tmp&0x02==0x00) //是否S1鍵

JBJ(); //是,轉(zhuǎn)解除報(bào)警

if(tmp&0x03==0x00) //是否S2鍵

STP(); //是,停止,退出

} }}while(!kbhit());2023/2/1計(jì)算機(jī)接口技術(shù)1010.2.3矩陣鍵盤工作的動(dòng)態(tài)掃描技術(shù)1.矩陣鍵盤的工作原理矩陣鍵盤的結(jié)構(gòu)是將按鍵排成n行m列的矩陣形式,并且在行線或列線上通過(guò)電阻接高電平(+5V)。按鍵的行線與列線交叉點(diǎn)互不相通,是通過(guò)按鍵來(lái)接通的。下面以4×4鍵盤為例說(shuō)明矩陣鍵盤的工作原理,如圖10.3所示。

圖10.3矩陣鍵盤的結(jié)構(gòu)及接口(列掃描)2023/2/1計(jì)算機(jī)接口技術(shù)11

矩陣鍵盤與線性鍵盤一樣,也是首先確定是否有按鍵按下,然后再識(shí)別按下的是哪一個(gè)鍵。這個(gè)工作是采用一種掃描的方法進(jìn)行,掃描分逐行掃描(行掃描)和逐列掃描(列掃描)兩種方式,稱為動(dòng)態(tài)掃描技術(shù)。行掃描方式的特點(diǎn)是,矩陣鍵盤的列線一頭接輸入端口,另一頭固定接高電平(+5V),矩陣鍵盤的行線接輸出端口,輪流對(duì)列線輸出低電平(0V),即對(duì)列線進(jìn)行逐列掃描,然后從列線讀取掃描的結(jié)果。列掃描方式的特點(diǎn)是,其行線與列線的連接及方向剛好與行掃描方式的相反,即行線一頭接輸入端口,另一頭固定接高電平(+5V),列線接輸出端口,輪流對(duì)行線輸出低電平(0V),即對(duì)行線進(jìn)行逐行掃描然后從行線讀取掃描的結(jié)果。

2.矩陣鍵盤的接口電路矩陣鍵盤的接口電路如圖10.3所示。它是采用列掃描方式的并行接口電路,其工作過(guò)程分析如下:2023/2/1計(jì)算機(jī)接口技術(shù)12圖10.3中,PA0~PA3與0列~3列連接,PB0~PB3與0行~3行連接。采用列掃描方式找出被按下的鍵在矩陣中的位置,其過(guò)程是:先從0列開(kāi)始,通過(guò)PA端口,向0列輸出0(PA0=0),向其他列輸出1(PA1=PA2=PA3=1),然后從PB端口讀入,檢測(cè)PB0~PB3的電平:若PB0=0,表示是S1鍵按下;若PB1=0,表示是S5鍵按下;...;若PB03=0,表示是S13鍵按下。如果PB0~PB3的電平都為1,則說(shuō)明這一列沒(méi)有鍵按下,就對(duì)第二列進(jìn)行掃描,于是向1列輸出0,向其它列輸出1,再檢測(cè)PB0~PB3的電平。

依次逐列檢測(cè),直到找出被按下的鍵為止。2023/2/1計(jì)算機(jī)接口技術(shù)1310.3LED顯示器

10.3.1LED顯示器工作原理7段數(shù)碼顯示器是將多個(gè)LED管組成一定字形的顯示器,因此也可以叫做字形顯示器,有共陰極和共陽(yáng)極兩種結(jié)構(gòu),如圖10.4所示。共陰極:陰極連在一起,并接地,根據(jù)二極管導(dǎo)通的條件,分別對(duì)每只LED管的陽(yáng)極加不同的電平使其導(dǎo)通(點(diǎn)亮)或截止(熄滅),陽(yáng)極加高電平點(diǎn)亮,加低電平熄滅,如圖10.4所示。共陽(yáng)極:陽(yáng)極連在一起,接高電平,對(duì)每只陰極加不同的電平,陰極加低電平點(diǎn)亮,加高電平熄滅。2023/2/1計(jì)算機(jī)接口技術(shù)14圖10.4中的電阻是限流電阻,以防發(fā)光二極管燒毀,其阻值一般取為使流經(jīng)LED管的電流在10~20mA。2023/2/1計(jì)算機(jī)接口技術(shù)1510.3.2LED顯示器的字形碼7段數(shù)碼顯示器實(shí)際為8段,另一段用來(lái)顯示小數(shù)點(diǎn)P。字形碼格式如圖10.5所示。由字形碼構(gòu)成的LED顯示器字符如表10.1所示。其中包括共陰極與共陽(yáng)極兩種不同顯示器所顯示的字符與字形碼,表中的兩種字形碼雖然不同,但所表示的字符則相同。2023/2/1計(jì)算機(jī)接口技術(shù)1610.3.3LED顯示器動(dòng)態(tài)顯示的掃描方式LED顯示器采用掃描的方法使多位顯示器逐位輪流循環(huán)顯示,為此,首先把各位顯示器的8根段線并聯(lián)在一起,作為一組“段控”信號(hào)線,同時(shí)給每位顯示器分配1根“位控”信號(hào)線。在接口電路中設(shè)置兩個(gè)端口,一個(gè)用于發(fā)送“位控”信號(hào),控制顯示器的哪一位顯示,即顯示哪一位;另一個(gè)用于發(fā)送“段控”信號(hào),控制顯示器發(fā)光二極管的那些段點(diǎn)亮,即顯示字形碼。2023/2/1計(jì)算機(jī)接口技術(shù)17掃描過(guò)程:“段控”端口發(fā)出一個(gè)字形碼,送到每個(gè)顯示器的段線上,“位控”端口發(fā)出一個(gè)控制信號(hào),指定某一位顯示器顯示,該位顯示器就點(diǎn)亮,并持續(xù)1~5ms,然后熄滅所有的顯示器。依次從“段控”端口發(fā)字形碼信息,再?gòu)摹拔豢亍倍丝诎l(fā)位控信號(hào),去點(diǎn)亮某一位顯示器并持續(xù)一段時(shí)間,然后熄滅。從第1位到最末位把要顯示的不同字符顯示一遍,即為一個(gè)掃描周期。當(dāng)掃描周期符合視覺(jué)暫留效應(yīng)的要求時(shí),人們就覺(jué)察不出字符的變動(dòng)與閃爍,而感覺(jué)每位顯示器都在同時(shí)顯示。顯示器“位控”信號(hào)線相當(dāng)于鍵盤的行掃描線。2023/2/1計(jì)算機(jī)接口技術(shù)1810.4鍵盤/LED接口電路解決方案

方案采用專用接口芯片構(gòu)成外置式的鍵盤/LED接口。

82C79A是雙功能專用接口芯片,兼有鍵盤輸入接口和字符顯示器輸出接口兩種用途。作為鍵盤輸入接口時(shí),掃描方式,可連接64(8×8)個(gè)鍵的矩陣鍵盤,經(jīng)擴(kuò)充可128(8×8×2)個(gè)鍵,并具有自動(dòng)去抖動(dòng)功能。作為字符顯示器輸出接口時(shí),可連接16個(gè)7段數(shù)碼顯示器。數(shù)碼顯示器,采用動(dòng)態(tài)掃描方式,實(shí)現(xiàn)動(dòng)態(tài)顯示。10.4.182C79A的外部特性82C79A芯片是一種具有40條引腳的雙列直插式芯片,如圖10.6所示。由于82C79A是雙功能接口,可以同時(shí)為兩種不同外部設(shè)備的接口提供支持,因此所設(shè)置的外部引腳信號(hào)比較多,按功能可分為面向CPU、面向鍵盤和面向顯示器3組,如表10.2所示。2023/2/1計(jì)算機(jī)接口技術(shù)19圖10.682C79A芯片引腳功能及引腳信號(hào)分類2023/2/1計(jì)算機(jī)接口技術(shù)202023/2/1計(jì)算機(jī)接口技術(shù)2110.4.282C79A的編程模型1、寄存器功能82C79A內(nèi)部寄存器分為共用寄存器和鍵盤專用及顯示器專用的寄存器3種,分別介紹如下。(1)顯示器/鍵盤共用寄存器共用模塊主要是掃描計(jì)數(shù)器,其輸出可同時(shí)作為鍵盤的行掃描和顯示器的位掃描(“位控”信號(hào)),掃描方式分編碼掃描和譯碼掃描兩種,由編程命令選定。編碼掃描:4位掃描線輸出線SL0~SL3,由外部譯碼器譯碼產(chǎn)生16根掃描信號(hào)線,供鍵盤和顯示器使用。故編碼掃描方式能夠掃描16×8的矩陣鍵盤和16位數(shù)碼顯示器。譯碼掃描:由內(nèi)部譯碼器譯碼后,產(chǎn)生的4根掃描線SL0~SL3,直接作為鍵盤和顯示器掃描信號(hào)??梢?jiàn),譯碼掃描方式只能掃描4×8的矩陣鍵盤和4位數(shù)碼顯示器,并且不需要設(shè)置外部譯碼器。2023/2/1計(jì)算機(jī)接口技術(shù)22(2)鍵盤專用寄存器鍵盤接口模塊包括返回緩沖器、FIFORAM及狀態(tài)寄存器。返回緩沖器作為鍵盤接口芯片實(shí)現(xiàn)行掃描方式。在行掃描時(shí),返回緩沖器用于鎖存來(lái)自RL0~RL2的鍵盤列線返回值,即按鍵的列值。另外,行掃描時(shí)所搜尋到閉合鍵所在的按鍵行值SL0~SL2,兩者合起來(lái)就形成鍵盤上按鍵的行號(hào)、列號(hào)編碼。如果在加上用于鍵功能擴(kuò)展的兩位CTRL、SHIFT一起組成一個(gè)完整的鍵盤按鍵數(shù)據(jù)。鍵盤按鍵的數(shù)據(jù)格式如表10.3所示。2023/2/1計(jì)算機(jī)接口技術(shù)23表10.3中各位的含義:SL0~SL2是按鍵的行編碼,由行掃描計(jì)數(shù)器的值確定;RL0~RL2是按鍵的列編碼,由返回緩沖器的值確定。從6位行列編碼可知,82C79A支持64個(gè)鍵的鍵盤矩陣。再加上CTRL和SHIFT兩位附加按鍵參加編碼,可以擴(kuò)展到128個(gè)鍵。2023/2/1計(jì)算機(jī)接口技術(shù)24FIFORAM及狀態(tài)寄存器FIFORAM是一個(gè)8×8的先進(jìn)先出片內(nèi)存儲(chǔ)器,用于暫存從鍵盤輸入的按鍵數(shù)據(jù),供CPU讀取。

為了報(bào)告FIFORAM中有無(wú)數(shù)據(jù)和空、滿等的狀態(tài),設(shè)置FIFORAM狀態(tài)寄存器。只要FIFORAM存儲(chǔ)器有數(shù)據(jù)未取走,狀態(tài)寄存器就產(chǎn)生IRQ信號(hào)請(qǐng)求中斷,要求CPU讀取數(shù)據(jù)。(3)用于LED顯示器的寄存器LED顯示器接口模塊包括顯示存儲(chǔ)器RAM、顯示字符寄存器和顯示地址寄存器。顯示存儲(chǔ)器RAM顯示存儲(chǔ)器RAM用來(lái)存儲(chǔ)顯示數(shù)據(jù),容量為16×8位,對(duì)應(yīng)16個(gè)數(shù)碼顯示器。顯示存儲(chǔ)器內(nèi)容在顯示過(guò)程中保持不變。2023/2/1計(jì)算機(jī)接口技術(shù)25

顯示字符寄存器

顯示字符寄存器用于存放將要顯示的字符的字形碼。顯示字符寄存器的內(nèi)容是動(dòng)態(tài)變化的,在顯示過(guò)程中它與顯示掃描配合,輪流從顯示RAM中讀出要顯示的信息并依次送到被選中的顯示器,循環(huán)不斷地刷新顯示字符,使顯示器件呈現(xiàn)穩(wěn)定的顯示字符。

顯示字符寄存器分為A、B兩組OUTA0~3和OUTB0~3,構(gòu)成一個(gè)8段的字形碼,作為“段控”信號(hào)送到每位顯示器。2023/2/1計(jì)算機(jī)接口技術(shù)26顯示地址寄存器顯示地址寄存器用于存放讀/寫(xiě)顯示存儲(chǔ)器RAM的地址指針,指出顯示字符從哪一位開(kāi)始以及每次讀出或?qū)懭胫蟮刂肥欠褡詣?dòng)加1。(4)寄存器端口地址82C79A只分配了兩個(gè)端口地址,一個(gè)數(shù)據(jù)端口(30CH),一個(gè)命令/狀態(tài)端口(30DH)。但它有8個(gè)命令字,因此出現(xiàn)端口地址共享的問(wèn)題。為此,采用在命令字中加特征位的方法識(shí)別共享端口中的命令字。2023/2/1計(jì)算機(jī)接口技術(shù)272.編程命令與狀態(tài)字82C79A芯片可執(zhí)行的命令共有8條,命令字中的0,1,2,4號(hào)命令(帶*號(hào))是必須使用的,它們用于初始化。其中,0號(hào)設(shè)置鍵盤及顯示方式,1號(hào)設(shè)置掃描頻率,2號(hào)指定讀FIFORAM,4號(hào)指定寫(xiě)顯示存儲(chǔ)器RAM。

而初始化后的實(shí)際輸入/輸出操作是從(向)82C79A的數(shù)據(jù)口讀(寫(xiě))數(shù)據(jù)來(lái)實(shí)現(xiàn)的。2023/2/1計(jì)算機(jī)接口技術(shù)28命令字的一般格式如表10.4所示。其中,高3位為特征位,產(chǎn)生8種編碼對(duì)應(yīng)著8個(gè)不同的命令字。低5位是命令參數(shù)位,表示不同命令字的含義。(注:標(biāo)有“×”的位無(wú)用)2023/2/1計(jì)算機(jī)接口技術(shù)29(1)0號(hào)命令:設(shè)置鍵盤及顯示器工作方式000:命令特征碼。命令分3個(gè)字段,K0,K2K1,DD。●K0:用來(lái)設(shè)定掃描方式,為鍵盤和顯示器共用。其含義:K0=0,為編碼掃描;K0=1,為譯碼掃描?!馣2K1:用來(lái)設(shè)定鍵盤輸入方式。有4種鍵盤輸入方式,如表10.5所示。2023/2/1計(jì)算機(jī)接口技術(shù)30表10.5中,雙鍵鎖定,N鍵輪回,是處理多鍵同時(shí)按下的方式。雙鍵鎖定:兩個(gè)鍵同時(shí)按下時(shí),只把后釋放的鍵當(dāng)作有效鍵N鍵輪回:多個(gè)同時(shí)按下時(shí),鍵盤掃描能根據(jù)它們被發(fā)現(xiàn)的順序依次將相應(yīng)鍵盤數(shù)據(jù)送入FIFORAM中●DD:用來(lái)設(shè)定顯示輸出方式。有4種顯示輸出方式,如表10.6所示。2023/2/1計(jì)算機(jī)接口技術(shù)31在表10.6中,左進(jìn)方式是指顯示字符從最左一位(最高位)開(kāi)始,逐個(gè)向右順序輸出,左進(jìn)方式也是手機(jī)撥號(hào)的顯示方式;右進(jìn)方式是指顯示字符從最右一位開(kāi)始,最高位從右邊進(jìn)入,以后逐個(gè)左移。右進(jìn)方式也是計(jì)算器的顯示方式。例如,要求掃描鍵盤輸入,雙鍵鎖定;8個(gè)字符顯示,右進(jìn)方式;鍵盤和LED顯示器的掃描方式為編碼掃描,則82C79A的工作方式命令為00010000B。2023/2/1計(jì)算機(jī)接口技術(shù)32(2)1號(hào)命令:設(shè)置掃描頻率001:命令特征碼。命令包含5個(gè)有效位PPPPP。●PPPPP:用來(lái)設(shè)定對(duì)外部輸入CLK的分頻系數(shù)N(N值可為2~31),以便獲得82C79A內(nèi)部要求的100kHz的掃描頻率。PPPPP分頻系數(shù)的5位二進(jìn)制數(shù)。例如,外部提供的時(shí)鐘LCK為2.5MHz,要求產(chǎn)生100kHz的掃描頻率,則設(shè)置掃描頻率的命令為00111001B。(3)2號(hào)命令:讀FIFORAM

010:命令特征碼。命令分2個(gè)字段,A2~A0,AI。●A2~A0:用來(lái)指定讀取鍵盤FIFORAM中字符的起始地址,A2~A0可有8種編碼,以指定FIFORAM中的8個(gè)地址單元任意一個(gè)作為讀取的起始地址。2023/2/1計(jì)算機(jī)接口技術(shù)33●AI:自動(dòng)地址增量標(biāo)志位。當(dāng)AI=1時(shí),每次讀出FIFORAM后,地址自動(dòng)加1指向下一存儲(chǔ)單元;當(dāng)AI=0時(shí),讀出后地址不變(即不自動(dòng)加1,但可由人工改變地址)。

需要特別指出的是,該命令并不是實(shí)際從FIFORAM中讀取數(shù)據(jù),僅僅指定是讀取鍵盤的FIFORAM,而不是讀取顯示器RAM,因此,若要實(shí)現(xiàn)讀鍵盤的數(shù)據(jù),還必須接著在該命令后面從數(shù)據(jù)端口讀數(shù)。2023/2/1計(jì)算機(jī)接口技術(shù)34例如,要求從鍵盤FIFORAM讀1個(gè)字節(jié)數(shù)據(jù),從0位開(kāi)始讀取,讀數(shù)據(jù)后地址不自動(dòng)加1,其程序段為如下。MOVDX,30DH;82C79A命令端口MOVAL,01000000B

;2號(hào)命令,讀FIFORAMOUTDX,ALMOVDX,30CH;82C79A數(shù)據(jù)端口INAL,DX

;從FIFORAM讀1個(gè)字節(jié)數(shù)據(jù)2023/2/1計(jì)算機(jī)接口技術(shù)35(4)4號(hào)命令:寫(xiě)顯示RAM

100:命令特征碼。命令字分2個(gè)字段,A0~A3,AI?!馎0~A3:用來(lái)指定寫(xiě)顯示RAM中字符的起始地址,A0~A3可有16種編碼,以指定顯示RAM中的16個(gè)地址單元任意一個(gè)作為寫(xiě)的起始地址?!馎I:自動(dòng)地址增量標(biāo)志。當(dāng)AI=1時(shí),每次寫(xiě)后地址自動(dòng)增1,當(dāng)AI=0時(shí),寫(xiě)后地址不變。一旦數(shù)據(jù)寫(xiě)入,82C79A的硬件便自動(dòng)管理顯示RAM的輸出并同步掃描信號(hào)。同樣,需要特別指出的是,該命令并不是實(shí)際向顯示器RAM中寫(xiě)入數(shù)據(jù),僅僅指定是寫(xiě)入顯示器的RAM,而不是寫(xiě)入鍵盤的FIFORAM,因此,若要實(shí)現(xiàn)寫(xiě)入顯示器數(shù)據(jù),還必須接著在該命令后面從數(shù)據(jù)端口寫(xiě)入數(shù)據(jù)。2023/2/1計(jì)算機(jī)接口技術(shù)36例如,如果要求向顯示器RAM寫(xiě)入數(shù)據(jù),并且從0位起,地址自動(dòng)加1,其程序段如下。

MOVDX,30DH ;82C79A的命令口

MOVAL,10010000B

;4號(hào)命令,寫(xiě)顯示RAM OUTDX,AL MOVSI,OFSETBUF MOVDX,30CH ;82C79A的數(shù)據(jù)口

MOVAL,[SI]

OUTDX,AL

;向顯示RAM寫(xiě)入數(shù)據(jù)

2023/2/1計(jì)算機(jī)接口技術(shù)37(5)狀態(tài)字狀態(tài)字主要用來(lái)指示FIFORAM中待取走的字符數(shù)和有無(wú)錯(cuò)誤發(fā)生。格式如圖10.7所示。8位狀態(tài)字中的D0~D45位是常用的,用于查詢方式,其中,D5位表示“超出”,D4位表示“空”,D3位表示“滿”,D2~D0位表示鍵盤存儲(chǔ)區(qū)里是否尚有未取走的字符?!馩:超出標(biāo)志位。當(dāng)向已滿的FIFORAM中寫(xiě)入,使FIFORAM中的字符個(gè)數(shù)n>8而產(chǎn)生重疊時(shí),O被置為1。

2023/2/1計(jì)算機(jī)接口技術(shù)38●U:“空”標(biāo)志位。當(dāng)FIFORAM中的字符個(gè)數(shù)n=0時(shí)U被置為1。

●F:“滿”標(biāo)志位。當(dāng)FIFORAM中的字符個(gè)數(shù)n=8時(shí),F(xiàn)被置為1?!馧NN:表示FIFORAM中待CPU取走的字符個(gè)數(shù)為n。例如,當(dāng)要求采用查詢方式從鍵盤FIFORAM讀取數(shù)據(jù)時(shí),先應(yīng)該查狀態(tài)寄存器是否有數(shù)據(jù)可讀。這可以查標(biāo)志位“空”、“滿”或者查待CPU取走的字符個(gè)數(shù)n,其程序段為。LOOP1: MOVDX,30DH;狀態(tài)口

INAL,DX;讀狀態(tài)字

TESTAL,00000111B

;檢查是否有待取走的字符

JZLOOP1;無(wú),再查2023/2/1計(jì)算機(jī)接口技術(shù)3910.5LED顯示器接口設(shè)計(jì)例10.1LED顯示器接口設(shè)計(jì)1.要求設(shè)計(jì)一個(gè)8位LED顯示器,要求從0位開(kāi)始顯示13579H六個(gè)字符,顯示方式為左進(jìn),采用編碼掃描。2.分析

采用82C79A作為L(zhǎng)ED顯示器接口可以實(shí)現(xiàn)上述要求。另外,為了實(shí)現(xiàn)編碼掃描要外加掃描譯碼器和提供LED顯示器的驅(qū)動(dòng)電路。2023/2/1計(jì)算機(jī)接口技術(shù)403.設(shè)計(jì)(1)硬件設(shè)計(jì)

接口電路由82C79A芯片、掃描譯碼器7445和段驅(qū)動(dòng)器7406組成,如圖10.8所示。圖中的82C79A為接口的核心,主管顯示器與CPU之間的連接,執(zhí)行控制命令;掃描譯碼器7445負(fù)責(zé)LED顯示器的動(dòng)態(tài)掃描,作為“位控”信號(hào)控制8位顯示器的哪一位點(diǎn)亮;反向器驅(qū)動(dòng)器7406為L(zhǎng)ED的8段字型碼提供電流驅(qū)動(dòng),作為“段控”信號(hào)控制8段顯示器的哪一段發(fā)光。2023/2/1計(jì)算機(jī)接口技術(shù)41圖10.8LED接口電路2023/2/1計(jì)算機(jī)接口技術(shù)42圖10.8中,8個(gè)LED顯示器相同的段連到一起,由7406驅(qū)動(dòng),實(shí)現(xiàn)段控。LED顯示器為共陽(yáng)極,每個(gè)陽(yáng)極通過(guò)開(kāi)關(guān)三極管及限流電阻與+5V連接,三極管的導(dǎo)通與截止由7445的8個(gè)輸出端控制,實(shí)現(xiàn)8位顯示器的位控。當(dāng)82C79A的掃描信號(hào)SL0~3經(jīng)7445譯碼所產(chǎn)生的輸出信號(hào)循環(huán)變化時(shí),就可以使各位顯示器輪流點(diǎn)亮或熄滅,實(shí)現(xiàn)LED顯示器的動(dòng)態(tài)掃描。(2)軟件設(shè)計(jì)下面是從0位開(kāi)始顯示13579H六個(gè)字符的程序,六個(gè)字符的字形碼存放在內(nèi)存的BUF區(qū)。2023/2/1計(jì)算機(jī)接口技術(shù)43LED顯示器的匯編語(yǔ)言程序段如下。CODESEGMENT ASSUMECS:CODE,DS:CODE ORG100HBEGIN: JMPSTART BUFDB06H,4FH,6DH,07H,67H,76H ;六個(gè)字符的字形碼START: MOVAX,CODE MOVCS,AX MOVDS,AX ;82C79A初始化

MOVDX,30DH;82C79A的命令口

MOVAL,00000000B

;0號(hào)命令,顯示方式命令

MOVDX,AL MOVAL,001110001B

;1號(hào)命令,設(shè)置分頻系數(shù)252023/2/1計(jì)算機(jī)接口技術(shù)44OUTDX,AL MOVAL,10010000B

;4號(hào)命令,寫(xiě)顯示RAM命令 OUTDX,AL

MOVSI,OFSETBUF;顯示字符首址

MOVCX,06H ;顯示字符數(shù)

L: MOVDX,30CH;82C79A的數(shù)據(jù)口

MOVAL,[SI]

OUTDX,AL

;向顯示RAM寫(xiě)數(shù)據(jù) INCSI ;緩存地址加1 DECCX ;字?jǐn)?shù)減1 JNZL ;未完,繼續(xù)

MOVAX,4C00H ;已完,返回

INT21HCODEENDS ENDBEGIN2023/2/1計(jì)算機(jī)接口技術(shù)45//LED顯示器的C語(yǔ)言程序如下。

unsignedchardisplay[6]={0x06,0x4f,0x6d,0x07,0x67,0x76};outportb(0x30d,0x00); //顯示方式:8字符顯示,左端輸入,編碼掃描outportb(0x30d,0x39); //分頻系數(shù)25,產(chǎn)生100kHz掃描頻率outportb(0x30d,0x90); //指定寫(xiě)顯示RAM命令,從0位起,地址自動(dòng)加1for(i=0;i<6;i++){ outportb(0x30c,display[i]); //從內(nèi)存單元中取顯示代碼送顯示RAM delay(50); //延時(shí)}2023/2/1計(jì)算機(jī)接口技術(shù)4610.6矩陣鍵盤接口設(shè)計(jì)例10.2鍵盤接口電路設(shè)計(jì)1.要求設(shè)計(jì)一個(gè)24鍵的鍵盤接口。要求鍵盤采用編碼掃描、雙鍵鎖定工作方式。從鍵盤讀取10個(gè)字符代碼。外部時(shí)鐘CLK=2.5MHz。2.分析為了實(shí)現(xiàn)24鍵的鍵盤矩陣,采用3行8列的結(jié)構(gòu)形式。同時(shí)為了滿足編碼掃描工作方式,故使用82C79A的3根掃描輸出信號(hào)SL0~SL2,接至譯碼器74LS156的輸入端,經(jīng)譯碼后,產(chǎn)生低電平有效的3根輸出線Y0~Y2,作為鍵盤矩陣的3個(gè)行掃描信號(hào)。鍵盤矩陣的8個(gè)列線的一端與82C79A的返回信號(hào)RL0~RL7相連接,另一端通過(guò)電阻接高電平(+5V)。2023/2/1計(jì)算機(jī)接口技術(shù)473.設(shè)計(jì)(1)硬件設(shè)計(jì)

根據(jù)上述分析,24鍵的鍵盤矩陣接口電路原理如圖10.9所示。圖10.9鍵盤接口電路2023/2/1計(jì)算機(jī)接口技術(shù)48(2)軟件設(shè)計(jì)鍵盤輸入?yún)R編語(yǔ)言程序段如下。CODESEGMENT ASSUMECS:CODE,DS:CODE ORG100HSTART: JMPBEGIN ;從0100H處執(zhí)行第一條指令

BUFDB10DUP(0)BEGIN: MOVAX,CODE MOVDS,AX ;設(shè)置數(shù)據(jù)段的段地

MOVDX,30DH ;82C79A初始化

MOVAL,00000000B

;0號(hào)命令,鍵盤輸入工作方式

OUTDX,AL MOVAL,00111001B

;1號(hào)命令,設(shè)置分頻系數(shù)為25, OUTDX,AL2023/2/1計(jì)算機(jī)接口技術(shù)49MOVDI,OFSETBUF MOVCX,10LOOP1: MOVDX,30DH ;讀狀態(tài)字

INAL,DX TESTAL,00000111B

;檢查是否有待取走的字符

JZLOOP1 ;無(wú),再查

MOVAL,01000000B

;2號(hào)命令,讀FIFORAM OUTDX,AL MOVDX,30CH ;讀數(shù)據(jù)

INAL,DX

;從鍵盤讀取數(shù)據(jù)

MOV[DI],AL ;存入內(nèi)存BUF INCDI DECCX JNZLOOP1MOVAX,4C00H ;退出

INT21H2023/2/1計(jì)算機(jī)接口技術(shù)50CODEENDS ENDSTART//鍵盤輸入C語(yǔ)言程序段如下。unsignedcharbuf[10];unsignedchari;outportb(0x30d,0x00); //設(shè)定鍵盤輸入工作方式(編碼掃描、雙鍵鎖定)outportb(0x30d,0x39); //設(shè)置分頻系數(shù)為25,產(chǎn)生100kHz掃描頻率for(i=0;i<10;i++){ while(inportb(0x30d)&0x07==0x00);//檢查是否有待CPU取走的字符

outportb(0x30d,0x40); //有,指定讀FIFORAM buf[i]=inportb(0x30c); //讀鍵盤,并存入內(nèi)存BUF}2023/2/1計(jì)算機(jī)接口技術(shù)514.討論①HELLO五個(gè)字符的字形碼在內(nèi)存區(qū)的存放順序與在顯示器上的順序相反,這是什么原因?②如果顯示的字符不是從第0位,而是從第2位或第3位開(kāi)始顯示,程序要如何修改?2023/2/1計(jì)算機(jī)接口技術(shù)5210.7打印機(jī)接口

打印機(jī)是微型計(jì)算機(jī)系統(tǒng)中一種常用的輸出設(shè)。目前打印機(jī)技術(shù)正朝著高速度、低噪聲、美觀清晰和彩色打印的方向發(fā)展。打印機(jī)的種類很多,性能差別也很大。當(dāng)前流行的有針式打印機(jī)、激光打印機(jī)、噴墨式打印機(jī)等。10.7.1并行打印機(jī)接口標(biāo)準(zhǔn)1.信號(hào)線定義

Centronics標(biāo)準(zhǔn)定義了36芯插頭/座,其信號(hào)線如表10.7所示。最主要的是8根并行數(shù)據(jù)線DATA1~DATA8,2根握手聯(lián)絡(luò)信號(hào)線、及1根狀態(tài)線BUSY,應(yīng)重點(diǎn)了解。2023/2/1計(jì)算機(jī)接口技術(shù)532023/2/1計(jì)算機(jī)接口技術(shù)542.工作時(shí)序Centronics標(biāo)準(zhǔn)對(duì)打印機(jī)接口的工作時(shí)序,即打印機(jī)與CPU之間傳送數(shù)據(jù)的過(guò)程作了規(guī)定,如圖10.10所示。圖10.10并行打印機(jī)接口標(biāo)準(zhǔn)工作時(shí)序2023/2/1計(jì)算機(jī)接口技術(shù)55打印機(jī)與CPU之間傳送數(shù)據(jù)的過(guò)程:是按照Centronics打印機(jī)接口標(biāo)準(zhǔn)的工作時(shí)序進(jìn)行的,以查詢方式為例,其工作步驟如下。①當(dāng)CPU要求打印機(jī)打印數(shù)據(jù)時(shí),CPU首先查詢BUSY。若BUSY=1,打印機(jī)忙,則等待;當(dāng)BUSY=0,打印不忙時(shí),才送數(shù)據(jù)。②

CPU通過(guò)并行接口,把數(shù)據(jù)送到DATA1~DATA8數(shù)據(jù)線上,此時(shí)數(shù)據(jù)并未進(jìn)入打印機(jī)。③

CPU再送出一個(gè)數(shù)據(jù)選通信號(hào)(負(fù)脈沖),把數(shù)據(jù)線上的數(shù)據(jù)打入到打印機(jī)的內(nèi)部緩沖器。④打印機(jī)在收到數(shù)據(jù)后,向CPU發(fā)出“忙”信號(hào),表明打印機(jī)正在處理輸入的數(shù)據(jù)。等到輸入的數(shù)據(jù)處理完畢,打印機(jī)撤銷“忙”信號(hào),置BUSY=0。⑤接著,打印機(jī)送出一個(gè)回答信號(hào)

給CPU,表示一個(gè)字符已經(jīng)處理完畢。2023/2/1計(jì)算機(jī)接口技術(shù)563.打印機(jī)連接器

Centronics接口標(biāo)準(zhǔn)對(duì)打印機(jī)連接器規(guī)定為D-36芯插頭/插座。而臺(tái)式PC機(jī)配置的打印機(jī)接口插座簡(jiǎn)化為D-25芯,去掉了Centronics中的一些未使用信號(hào)和地線。很明顯,打印機(jī)接口標(biāo)準(zhǔn)的連接器與PC機(jī)的打印機(jī)接口插座不兼容,因此要對(duì)兩者信號(hào)線的排列作一些調(diào)整,要特別注意兩者相應(yīng)信號(hào)線的對(duì)接,按照?qǐng)D10.11所示的信號(hào)線連接。2023/2/1計(jì)算機(jī)接口技術(shù)57圖10.11打印機(jī)與PC機(jī)并口信號(hào)線連接圖2023/2/1計(jì)算機(jī)接口技術(shù)5810.7.2并行打印機(jī)接口設(shè)計(jì)例10.3并行打印機(jī)接口電路設(shè)計(jì)1.要求

要求為某應(yīng)用系統(tǒng)配置一個(gè)并行打印機(jī)接口,通過(guò)接口采用查詢方式把存放在BUF緩沖區(qū)的256個(gè)字符(ASCII碼)送去打印。2.分析由于打印機(jī)接口面向的對(duì)象是打印機(jī)接口標(biāo)準(zhǔn)而不是打印機(jī)本身,因此打印機(jī)接口硬件電路設(shè)計(jì)要以標(biāo)準(zhǔn)所定義的信號(hào)線為依據(jù),而軟件設(shè)計(jì)應(yīng)以接口標(biāo)準(zhǔn)所規(guī)定的工作時(shí)序?yàn)橐罁?jù)。3.設(shè)計(jì)(1)打印機(jī)接口電路設(shè)計(jì)打印機(jī)接口電路原理框圖如圖10.12所示。2023/2/1計(jì)算機(jī)接口技術(shù)59圖10.12并行打印機(jī)接口電路框圖2023/2/1計(jì)算機(jī)接口技術(shù)60該電路的設(shè)計(jì)思路是:按照Centronics標(biāo)準(zhǔn)對(duì)打印機(jī)接口信號(hào)線的定義,最基本的信號(hào)線需要8根數(shù)據(jù)線(DATA1~DATA8),1根控制線(STROBE,),1根狀態(tài)線(BUSY)和1根地線。為此,采用82C55A作打印機(jī)的接口比較合適。

分配A端口作為數(shù)據(jù)口,輸出8位打印數(shù)據(jù),工作方式為0方式。

分配PC7作為控制信號(hào),輸出1個(gè)選通信號(hào)STROBE,將數(shù)據(jù)線上的數(shù)據(jù)輸入打印機(jī)緩沖器。

分配PC2作為狀態(tài)線來(lái)接收打印機(jī)的狀態(tài)信號(hào)BUSY,這樣就滿足了打印機(jī)Centronics接口標(biāo)準(zhǔn)中主要信號(hào)線的要求。2023/2/1計(jì)算機(jī)接口技術(shù)61圖10.13打印控制程序流程圖(2)打印機(jī)接口控制程序設(shè)計(jì)打印機(jī)接口控制程序流程如圖10.13所示。2023/2/1計(jì)算機(jī)接口技術(shù)62打印機(jī)接口控制匯編語(yǔ)言程序段如下。DATASEGMENT CTL55EQU303H;82C55A的控制口

PA55EQU300H

溫馨提示

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