接口應(yīng)用技術(shù)人機(jī)接口_第1頁(yè)
接口應(yīng)用技術(shù)人機(jī)接口_第2頁(yè)
接口應(yīng)用技術(shù)人機(jī)接口_第3頁(yè)
接口應(yīng)用技術(shù)人機(jī)接口_第4頁(yè)
接口應(yīng)用技術(shù)人機(jī)接口_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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)介

第10章人機(jī)交互設(shè)備接口

第10章人機(jī)交互設(shè)備接口10.1鍵盤接口

鍵盤:是微型計(jì)算機(jī)系統(tǒng)中最基本的人機(jī)對(duì)話輸入設(shè)備。鍵盤按鍵:有機(jī)械式、電容式、導(dǎo)電橡膠式、薄膜式等多種,但不管何種形式,其作用都是一個(gè)使電路接通與斷開的開關(guān)。1.編碼鍵盤鍵盤本身帶有實(shí)現(xiàn)接口主要功能所必需的硬件電路。由硬件邏輯自動(dòng)提供與被按鍵對(duì)應(yīng)的ASCII碼。2.非編碼鍵盤鍵盤只簡(jiǎn)單地提供按鍵開關(guān)的行列矩陣。一、鍵盤接口的功能和原理1.接口功能鍵盤接口必須具有去抖動(dòng)、防串鍵、按鍵識(shí)別和鍵碼產(chǎn)生4個(gè)基本功能。(1)去抖動(dòng)每個(gè)按鍵在按下或松開時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為5~20ms。所謂去抖動(dòng)是指在識(shí)別被按鍵和釋放鍵時(shí)必須避開抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識(shí)別正確無(wú)誤。去抖動(dòng)問(wèn)題可通過(guò)軟件延時(shí)或硬件濾波電路(RC濾波或RS去抖)解決。(2)防串鍵防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒(méi)有釋放又有新下時(shí)產(chǎn)生的問(wèn)題。

①雙鍵鎖定:當(dāng)檢測(cè)到有兩個(gè)或兩個(gè)以上的鍵被按下時(shí),只把最后釋放的鍵當(dāng)作有效鍵,并產(chǎn)生相應(yīng)鍵碼。

②N鍵輪回:當(dāng)檢測(cè)到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。(3)被按鍵識(shí)別

①行掃描法:該方法的基本思想是,由程序?qū)︽I盤進(jìn)行逐行掃描,通過(guò)檢測(cè)到的列輸出的列輸出狀態(tài)來(lái)確定閉合鍵。

②線反轉(zhuǎn)法:該方法的基本思想是通過(guò)行列顛倒兩次掃描來(lái)識(shí)別閉合鍵。多用Z-80PIO芯片實(shí)現(xiàn)(4)鍵碼產(chǎn)生一般在內(nèi)存區(qū)中鍵立一個(gè)鍵盤編碼表,通過(guò)查表獲得被按鍵的鍵碼。2.接口原理①檢查是否有鍵按下,其方法是:輸出掃描碼,使所有行線為0。然后讀入列線狀態(tài),檢查是否有列線為0。若有,則表明有行線和列線接通,意味著有鍵按下。②去抖動(dòng):當(dāng)有鍵按下時(shí),延時(shí)20ms左右,待抖動(dòng)消失后,在穩(wěn)定狀態(tài)下進(jìn)行被按鍵識(shí)別。③被按鍵識(shí)別:從第0行第0列開始,順序?qū)λ邪存I編號(hào)。通過(guò)逐行掃描確定被按鍵的編號(hào)。④產(chǎn)生鍵碼:根據(jù)掃描得到的鍵編號(hào)查找鍵盤編碼表,獲得與被按鍵功能對(duì)應(yīng)的鍵碼。

例如,假定有一個(gè)34的矩陣鍵盤通過(guò)并行接口芯片8255A與微機(jī)相連。8255A的A定義為輸出口,與鍵盤行線相連;B口定義為輸入口,與鍵盤列線相連。接口硬件如圖10.1所示。PA0PA1PA2PB3PB2PB1PB08255ACPU行0行1行2列0列3列1列2圖10.1非編碼鍵盤接口

設(shè)8255AA口地址為60H,B口地址為61H,控制寄存器地址為63H,則實(shí)現(xiàn)接口有關(guān)功能的程序如下:

;8255A初始化

MOVAL,82H;方式0,A口輸出,B口輸入

OUT63H,AL

;檢查是否有鍵按下BEGIN:MOVAL,0;低電平有效

OUT60H,ALWAIT:INAL,61HANDAL,0FHCMPAL,0FH;低電平有效

JZWAIT

MOVCX,7FFH;;延時(shí)去抖動(dòng)L0:LOOPL0;識(shí)別被按下的鍵ST:MOVBL,03H;行數(shù)送BLMOVBH,04H;列數(shù)送BHMOVAL,0FEH;掃描碼,0行為0MOVCL,0FH;列線屏蔽碼送CLMOVCH,0FFH ;置鍵號(hào)初值為-1L1:OUT60H,AL;掃描一行

ROLALDECBLMOVAH,AL;修改掃描碼并送AH保存

INAL,61H

ANDAL,CLCMPAL,CL;讀入列線值,檢查是否有列填線為0JNZL2;有列線為0時(shí)轉(zhuǎn)去找該列線

ADDCH,BH;否則,指向該行末列鍵號(hào)

MOVAL,AH;取回掃描碼

DECBLJNZL1;行數(shù)減1,未完成轉(zhuǎn)下一行

JMPBEGINL2:INCCH;該列非0,檢查下一列

RCRALJCL2;該列非0,檢查下一列

MOVAL,CH;該列為0,鍵號(hào)送AL

JMPKEYTABLE;轉(zhuǎn)查找鍵盤編碼表子程序,獲取與鍵功能對(duì)應(yīng)的鍵碼二、可編程鍵盤/LED接口芯片82791.內(nèi)部結(jié)構(gòu)及各部分功能

8279芯片的內(nèi)部結(jié)構(gòu)框圖如圖10.2所示。圖中各組成部分功能如下:(1)I/O控制及數(shù)據(jù)緩沖器(2)控制與定時(shí)寄存器及定時(shí)控制(3)掃描計(jì)數(shù)器(4)鍵盤去抖與控制及返回緩沖器(5)FIFORAM及狀態(tài)寄存器(6)顯示RAM、顯示寄存器、顯示地址寄存器數(shù)據(jù)緩沖器I/O控制FIFORAM的狀態(tài)寄存器顯示地址寄存器16×8顯示RAM片選總線控制與定時(shí)寄存器8×8FIFORAM鍵盤去抖與控制顯示寄存器定時(shí)控制掃描計(jì)數(shù)器返回緩沖器時(shí)鐘CLK復(fù)位ResetOUTA0~3OUTB0~3BDSL0~3RL0~3SHIFTCNTL/STBD0~7RDWRCSA0IRQ圖10.28279芯片的內(nèi)部結(jié)構(gòu)框圖2.外部特性電信號(hào)連接示意圖可知,40條引線中與CPU一側(cè)相關(guān)的共15條,與鍵盤、顯示接口相關(guān)的共23條,電源、地各一條。8279RL0~RL7SHIFTCNTL/STBSL0~SL3OUTA0~3OUTB0~3BDD0~D7IRQRDWRCSA0CLKRESET+5VGNDCPU鍵盤顯示器D0~D7:雙向數(shù)據(jù)線,用于CPU和8279芯片之間傳送數(shù)據(jù)、命令和狀態(tài)信息。CLK:系統(tǒng)時(shí)鐘,為8279芯片提供內(nèi)部定時(shí)。RESET:復(fù)位線,高電平時(shí)復(fù)位8279芯片到:16個(gè)字符顯示(左進(jìn)方式);編碼掃描鍵盤(雙鍵鎖定);時(shí)鐘設(shè)置為31.CS-:片選線,由I/O端口地址譯碼器產(chǎn)生低電平時(shí)8279芯片被選中。RD-:讀信號(hào),低電平有效。WR-:寫信號(hào),低電平有效。A0:地址線,為0時(shí)選中數(shù)據(jù)口;1時(shí)選中命令/狀態(tài)口。IRQ:中斷請(qǐng)求線,高電平有效,向CPU申請(qǐng)中斷。SL0~SL3:掃描線,用來(lái)掃描鍵盤或顯示器,可編程設(shè)定為編碼輸出或譯碼輸出。編碼掃描:SL3-SL0輸出掃描計(jì)數(shù),經(jīng)外部譯碼器的譯碼后最多可為鍵盤和顯示器提供16個(gè)掃描信號(hào)。譯碼掃描:SL3-SL0輸出可直接作為鍵盤和顯示器的掃描信號(hào),此時(shí)鍵盤矩陣為4*8,顯示字符為4位。RL0~RL7:返回線,用作鍵盤矩陣列線的返回信號(hào)輸入。SHIFT:移位信號(hào),是鍵盤數(shù)據(jù)的D6位,用于擴(kuò)充鍵的功能,如作為上、下檔功能鍵。CNTL:控制線。是鍵盤數(shù)據(jù)的D7位,用于擴(kuò)充鍵的控制功能--控制功能鍵。OUTA0~OUTA3,OUTB0~OUTB3:A/B組顯示信號(hào)輸出線,與掃描線SL0~3同步,實(shí)現(xiàn)分時(shí)數(shù)據(jù)顯示,即刷新各顯示字符。BD-:顯示消隱線,顯示數(shù)據(jù)切換時(shí)或收到消隱命令時(shí),將顯示消隱。3.命令字當(dāng)引腳A0=1時(shí),CPU向8279芯片寫入命令字。8279芯片可執(zhí)行的命令共有8條,它們決定了8279芯片的操作方式。命令字格式如下:特征位命令參數(shù)D7D6D5D4D3D2D1D0(1)設(shè)置鍵盤及顯示方式設(shè)置鍵盤及顯示方式命令字格式為:000D2D1K2K1K0D4D3(D2D1):用來(lái)設(shè)定顯示輸出方式,定義如表10.1所示。D4D3(K2K1):設(shè)定鍵盤輸入方式,定義如表10.2所示。D0(K0):鍵盤掃描方式。K0=0為編碼掃描;K0=1為譯碼掃描。D2D1

方式000110118個(gè)字符顯示,左進(jìn)方式16個(gè)字符顯示,左進(jìn)方式8個(gè)字符顯示,右進(jìn)方式16個(gè)字符顯示,右進(jìn)方式K2K1

方式00011011掃描鍵盤輸入,雙鍵鎖定掃描鍵盤輸入,N鍵輪回掃描傳感器輸入選通輸入表10.1顯示輸出方式表10.2鍵盤輸入方式D2:0-左進(jìn)方式1-右進(jìn)方式D1:0-8個(gè)字符1-16個(gè)字符左進(jìn):顯示位置從最左一位即最高位開始,逐個(gè)向右順序輸出右進(jìn):顯示位置從最右一位即最低位(個(gè)位)開始,高位從右邊進(jìn)入,逐次左移。==計(jì)算器顯示方式N鍵輪回:根據(jù)發(fā)現(xiàn)順序依次將相應(yīng)鍵盤數(shù)據(jù)送入FIFORAMD4~D0(PPPPP):用來(lái)設(shè)定對(duì)外輸入CLK的分頻系數(shù)N(N值可為2~31),以便獲得8279芯片內(nèi)部要求的100kHz的基本頻率D7D6D5D4D3D2D1D0001AI×A1A2A0D4(AI):自動(dòng)地址增量標(biāo)志位。當(dāng)AI=1時(shí),每次讀出后地址自動(dòng)加1指向下一存儲(chǔ)單元AI=0時(shí),讀出后地址不變。D2D1D0(A2A1A0):在鍵盤方式中無(wú)意義,都寫0.(2)設(shè)置時(shí)鐘頻率D7D6D5D4D3D2D1D0010PPPPP(3)讀FIFORAMD7D6D5D4D3D2D1D0CNTLSL2ShiftSL1SL0RL1RL2RL0鍵盤數(shù)據(jù)格式:(4)讀顯示RAMD7D6D5D4D3D2D1D0011AIA3A1A2A0D4(AI):自動(dòng)地址增量標(biāo)志。AI=1時(shí)讀后地址自動(dòng)增1;

AI=0時(shí),讀后地址不變。(5)寫顯示RAM100AIA3…A0(6)禁寫顯示RAM/消隱

101×IWAIWBBLABLBIW=1時(shí),顯示RAM禁止寫入該組,CPU寫數(shù)據(jù)不影響該組顯示

BL=1時(shí),該組顯示被消隱,=0時(shí)顯示恢復(fù)(7)清除

110CD2CD1CD0CFCACF:清空FIFORAM,使IRQ復(fù)位

CA總清位,顯示RAM清除方式CD1-0CD2

CD1CD0

方式10×1011100××

全部清除(為00)置成20H(為‘-’)置成全1(為FF)不清除,CA=1,則CD1-0仍有效表10.3顯示RAM清除方式(8)結(jié)束中斷/設(shè)置錯(cuò)誤方式111E××××N鍵輪回方式下,當(dāng)E=1時(shí),設(shè)置一種特殊錯(cuò)誤方式:在8279消抖周期內(nèi)發(fā)現(xiàn)多件同時(shí)按下時(shí),將狀態(tài)字中S/E位置1,并產(chǎn)生中斷請(qǐng)求信號(hào)和阻止寫入FIFORAM4.狀態(tài)字主要用來(lái)指示FIFORAM中的字符數(shù)和有無(wú)錯(cuò)誤發(fā)生。其格式為:Du:顯示無(wú)效,當(dāng)執(zhí)行RAM清除時(shí)置位S/E:多鍵同時(shí)按下O:FIFO滿時(shí),再寫入即置位U:FIFO空,即字符個(gè)數(shù)=0F:FIFO滿,即字符個(gè)數(shù)=8NNN:FIFO有幾個(gè)字符待取走0-7D7D6D5D4D3D2D1D0Du0S/EUFNNN5.8279芯片應(yīng)用舉例

TP86A單板微型計(jì)算機(jī)使用8279芯片作為鍵盤及LED顯示器接口,電路原理圖如圖10.4所示。8279RL0SHIFTCNTLOUTA0~3OUTB0~3D0~D7RDWRCSA0CLKRESETTP86SL0SL1SL2SL3RL0鍵盤矩陣A74LS45BCD74LS45段驅(qū)動(dòng)器(反相)ABCY0Y1Y20007+5V譯碼器74LS156圖10.4TP86單板機(jī)鍵盤/顯示器接口電路譯碼器

①鍵盤輸入程序段,執(zhí)行下面程序段后可在內(nèi)存400H單元中找到被按下鍵的代碼。

MOVDX,0FFEAHMOVAL,00H;設(shè)定鍵盤輸入,編碼掃描方式

OUTDX,AL MOVAL,39H;掃描頻率

OUTDX,ALMOVAL,0D3H;

OUTDX,AL;顯示RAM清0LOOP1:MOVDX,0FFEAHINAL,DX

TESTAL,10H ;檢查是否有鍵入代碼

JNZLOOP1;無(wú)再查

MOVAL,40H;有鍵入代碼,指定讀FIFOOUTDX,ALMOVDX,0FFE8HINAL,DX;讀出數(shù)據(jù)

MOVDI,400H;DI指向存放按鍵代碼的內(nèi)存單元

MOV[DI],AL;存入內(nèi)存400H單元

HLT;暫停②顯示輸出程序段,執(zhí)行下面程序段后從0位開始顯示八個(gè)字符,假定八個(gè)字符的字形碼存于內(nèi)存300H開始的8個(gè)單元中。

MOVSI,300H;設(shè)置顯示字符內(nèi)存區(qū)地址指針

MOVCX,08H;設(shè)置顯示字符數(shù)

MOVDX,0FFEAHMOVAL,00H;設(shè)置顯示輸出工作方式

OUTDX,ALMOVAL,39H;分頻系數(shù)為25,產(chǎn)生

100kHz掃描頻率

OUTDX,ALMOVAL,0D1H;D3HOUTDX,AL;顯示RAM清0MOVAL,90H;寫顯示RAM命令,從0號(hào)單元起,地址自動(dòng)加1OUTDX,ALL:MOVDX,0FFE8HMOVAL,[SI]OUTDX,AL;從內(nèi)存中取顯示代碼送顯示RAMINCSI;修改地址指針

DECCX;修改計(jì)數(shù)器值

JNZLHLT300HDB7FH,3FH,5BH,06H,67H,67H,67H,06H三、PC微機(jī)鍵盤及接口①鍵盤由單片機(jī)、譯碼器和16行×8列的鍵開關(guān)矩陣三大部分組成。②按鍵采用電容開關(guān),即按鍵時(shí)的上下動(dòng)作使電容量發(fā)生變化,從而實(shí)現(xiàn)開關(guān)接通或斷開的目的。③它是一種由單片機(jī)掃描、編碼的智能化鍵盤。④它是一個(gè)與主機(jī)箱分開的獨(dú)立部件,通過(guò)一根五芯電纜與主機(jī)相連接。

硬中斷程序:中斷號(hào)為09H,當(dāng)按鍵動(dòng)作引發(fā)IRQ1時(shí),該程序負(fù)責(zé)把鍵盤掃描碼轉(zhuǎn)換成ASCII碼,然后存入鍵盤緩沖區(qū)。

軟中斷程序INT16H:ROMBIOS中的鍵盤功能調(diào)用程序,該調(diào)的功能是從鍵盤緩沖區(qū)取出按鍵產(chǎn)生的ASCII碼。2.鍵盤接口電路(1)接口功能串行接收鍵盤送來(lái)的掃描碼,完成串行轉(zhuǎn)換后保存;收妥一個(gè)鍵盤掃描碼后,立即產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào);保存的掃描碼可供CPU讀取,并通過(guò)軟件進(jìn)行相應(yīng)轉(zhuǎn)換處理;接收CPU的命令,輸出到鍵盤,并接收鍵盤回送的響應(yīng)信號(hào)。(2)接口電路根據(jù)接口電路應(yīng)完成的功能,接口電路可由串行并轉(zhuǎn)換電路、時(shí)鐘同步電路、中斷請(qǐng)求觸發(fā)器及一些門電路組成。Keyboard(5PC)Pin Name Description TechnicalCLOCK Clock CLK/CTS,DATA Data RxD/TxD/RTS,n/c 4 GND Ground VCC +5VDC口朝上134526PIN(PS/2STYLE)Pin Name Description1 DATA KeyDatan/c - GND 4 VCC +5VDC5 CLK Clockn/c - 654321SEDSS/PD0OECLRCLKGOAOBOHOHD11DCLKCLRPR+5VQQDCLKRQDCLKRQ+5VLS3228255APB7PB6CLKDATARESETGND+5VPCLKRESET8255APA7PA6PA0IRQ1圖10.5微機(jī)鍵盤接口電路初始化程序中對(duì)8255A的設(shè)置:

MOVAL,99H;模式0,A口,C口輸入,B口輸出

OUT63H,AL;將方式控制字寫控制寄存器

MOVAL,40H;PB7=0,PB6=1,允許LS322工作方式輸出

OUT61H,ALIRQ1中斷服務(wù)程序中掃描碼的讀取與控制:

INAL,60H;讀8255AA口獲取掃描碼

PUSHAX;將AL中的掃描碼入棧保存

INAL,61H;讀B口原輸出狀態(tài)

MOVAH,AL;暫存于AHORAL,80H;置PB7=1,清除LS322T和中斷請(qǐng)求觸發(fā)器

OUT61H,ALPOPAX;彈出掃描碼至AL中

MOVAH,AL;AH中也為鍵掃描碼鍵處理

10.2CRT顯示器接口

顯示器是計(jì)算機(jī)系統(tǒng)的基本設(shè)備,主要用于程序輸入、程序調(diào)試、信息顯示、結(jié)果顯示等。(如:MDA單顯示器、低分辯率的CGA、EGA等)當(dāng)前流行的都分辨率可達(dá)1024×768、1280×1042等的高分辨率SuperVGA顯示器.一、顯示器文本方式I/O

顯示的文本方式(TEXTMODE)對(duì)于所有類型的顯示器(MDA、CGA、EGA、VGA、SuperVGA等)的操作方法和顯示原理都基本相同。在文本方式下,顯示器的屏幕一般被分成80×25(80列,25行)的網(wǎng)絡(luò),所有的字符就在這2000個(gè)(80×25)的網(wǎng)格上顯示,屏幕上顯示的每個(gè)字符都在顯示緩沖區(qū)(VRAM)中對(duì)應(yīng)一個(gè)存儲(chǔ)單元,即屏幕的存儲(chǔ)器映象。在彩色文本方式下,顯示文本的視頻緩沖區(qū)首地址為B800:000H,每個(gè)字符占用兩個(gè)存儲(chǔ)器單元,其中每一具單元為顯示字符的ASCII碼,第二個(gè)單元為該顯示字符的屬性。1.字符顯示原理

顯示器字符的方法以點(diǎn)陣為基礎(chǔ)。這種方式將字符分解成m×n個(gè)點(diǎn)陣組成陣列,將點(diǎn)陣存入由ROM構(gòu)成的字符發(fā)生器中,在CRT進(jìn)行光柵掃描的過(guò)程中,從字符發(fā)生器中依次讀出點(diǎn)陣,按照點(diǎn)陣的0和1控制掃描電了束開關(guān),在屏幕中形成字符。字符字符點(diǎn)陣的多少取決于字符顯示質(zhì)量和字符塊大小,在PC機(jī)中字符窗口為9×14點(diǎn)陣,字符為7×9點(diǎn)陣。在PC機(jī)中,整個(gè)屏幕的字符共占用4000字節(jié)的視頻存儲(chǔ)器空間(B800:0H-B800:F9FH),彩色文本顯示的視頻緩沖區(qū)首地址為B800:0H,單色文本為B000:000H。移位寄存器SL視頻信號(hào)字符發(fā)生器ROMVRAMRA3~RA0ASCII碼OSCI/9I/(80+18)I/(9+5)I/(25+1)點(diǎn)振蕩器(16.257MHz)點(diǎn)計(jì)數(shù)器水平地址計(jì)數(shù)器加載控制水平消隱行間消隱垂直消隱光柵地址計(jì)數(shù)器垂直地址計(jì)數(shù)器水平同步電路垂直同步電路水平同步信號(hào)垂直同步信號(hào)CPU控制字符時(shí)鐘定時(shí)控制電路VRAM與顯示屏的對(duì)應(yīng)關(guān)系2.字符屬性顯示器上的每個(gè)字符在視頻緩沖區(qū)(VRAM)由2個(gè)字節(jié)表示,第一個(gè)字節(jié)是顯示字符的ASCII碼,而第二具字節(jié)是該顯示字符的司性。字符的必性確定了該顯示字符的特性,如顯示字符的顏色、背景顏色、閃鑠等,在彩色文本方式下,字符的屬性定義如圖所示。其中:1)BI=1:表示該顯示的字符閃爍;2)D6~D4:表示該顯示字符的背景顏色RGB;3)D3~D0:表示該顯示字符的前景顏色RGB;BIRedGreenBlueIRedGreenBlue閃爍位背景顏色背景顏色D7D6D5D4D3D2D1D0彩色文本方式字符屬性

如把80×25模式的整個(gè)屏幕全部刷成字符A,屬性為紅色前景、藍(lán)色背景、顯示字條款閃爍的程序段為:MOVAX,0B800H;彩色文本方式VRAM首址MOVES,AXMOVDI,0MOVCX,2000MOVAH,10010100B;顯示屬性:閃爍,藍(lán)色背景,紅色前景REPSTOSW;AX→VRAM單元中,相當(dāng)于顯示到屏幕上

在上述程序中,如果把字符屬性改為08(黑色背景,灰白色前景,不閃爍),同時(shí)把顯示的字符‘A’改為20H(空格),上述程序則是一個(gè)清屏程序。在彩色文本方式下,視頻緩沖區(qū)(VRAM)的首地址為B800:0H,屏幕上顯示的字符依次與B800:0H后的存儲(chǔ)器單元相應(yīng),因此,直接寫屏就是把需顯示的字符及屬性直接寫入VRAM中,就達(dá)到了彩色文本顯示的目的。直接寫屏的子程序如下:WRITE_SCREENPROCNEARPUSHESPUSHDISHLDX,1SHLDX,1SHLDX,1SHLDX,1;行坐標(biāo)×16MOVDI,DXSHLDX,1SHLDX,1;行坐標(biāo)×64ADDDI,DX;行坐標(biāo)×(64+16)ADDDI,CX;視頻緩沖區(qū)偏移=行×80+列MOVDX,0B800H;VRAM首地址MOVES,AXSTOSW;字符和屬性VRAMPOPDIPOPESRETWRITE-SCREENENDPInearly2001,….andresearchCorporationcompletedAnotheryearof80x25CRTVRAM0行1行i行B800:00B800:A7Hf2行7列

在彩色文本直接寫屏中,顯示位置在視頻緩沖區(qū)VRAM的偏移地址可由公式:VRAM偏移地址=80×行坐標(biāo)+列坐標(biāo),來(lái)進(jìn)行計(jì)算。屏幕字符的顯示通常使用中斷(如INT10H、INT21H等)來(lái)進(jìn)行,中斷字符顯示方式速度較慢,但通用性和兼容性好。二、顯示器圖形接口顯示器的圖形方式就是利用顯示器的像點(diǎn)(Pixel)來(lái)構(gòu)成圖形、圖像、各種顯示適配器有不同的顯示模式和分辨率,在下表中主要列出了標(biāo)準(zhǔn)的顯示適配器的各種顯示模式的圖形分辨率、顏色數(shù)和視頻緩沖區(qū)地址。各種顯示適配器(顯示卡)都是向下包含的,如TVGA顯示適配器包含VGA以下的所有顯示適配器的各種顯示模式。顯示類型模式號(hào)

顯示分辨率VRAM首地址MDA07720×350(2C)B000:0HCGA0406320×200(4C)640×200(2C)B800:0HB800:0HEGA0D0E0F10320×200(16C)640×200(16C)640×350(4C)640×350(16C)A000:0HA000:0HA000:0HA000:0HVGA111213640×480(2C)640×480(16C)320×200(256C)A000:0HA000:0HA000:0HTVGA5B5C5D5E5F62800×600(16C)640×400(256C)640×480(256C)800×600(256C)1024×768(16C)1024×768(256C)A000:0HA000:0HA000:0HA000:0HA000:0HA000:0H顯示器各種圖形模式下的分辨率MDA、CGA、EGA都是數(shù)字式的顯示適配器,這類顯示器由于顏色數(shù)較少,VGA、SuperVGA均是采用RGB三基色分量的模擬顯示器,由于計(jì)算機(jī)送出顏色索引值,通過(guò)查找索引寄存器取得DAC表中的RGB分量亮度值,再由DAC(數(shù)/模轉(zhuǎn)換器)輸出RGB的模擬信號(hào)供顯示器顯示。采用RGB模擬信號(hào)的顯示器的顏色數(shù)多,顏色過(guò)渡平滑,色彩鮮艷,更接近自然顏色。

1.VGA圖形顯示原理

VGA(VideoGraphicsArray)顯示適配器是采用RGB模擬顯示的接口卡,VGA顯示適配器的視頻存儲(chǔ)器VRAM與顯示器屏幕上的像點(diǎn)有兩種映射方式:彩色位面法和壓縮像素法。(1)彩色位面法從EGA(EnhanceGraphicsAdapter----增強(qiáng)型圖形適配器)適配器開始首先采用了彩色位面顯示方式,所謂彩色位面

就是把視頻緩沖區(qū)VRAM按照一定的大?。ㄅc顯示模式有關(guān),不同的顯示模式一頁(yè)的大小也不同)劃分為幾個(gè)獨(dú)立的位面(頁(yè))每個(gè)頁(yè)面被用來(lái)控制一種顏色分量(RGB),每個(gè)顯示像至少在頁(yè)面中占一位。如圖10.7所示。

3210IRGBVGA16色顯示模式………..101000000100……………………圖10.7VGA顯示器VRAM與顯示屏映射關(guān)系

在VGA顯示適配器中,彩色位面法用于16色模式。圖形16色顯示時(shí)把VRAM劃分為4個(gè)彩色位面。屏幕上的像點(diǎn)特征由4個(gè)位面的值共同確定。在12H(640×480×16C)模式下,一頁(yè)的大小為640/8×480=38400B,因此一屏圖形或圖像共占VRAM空間為38400×4=153600字節(jié)。VRAM與物理顯示屏的對(duì)應(yīng)關(guān)系(省去了顏色索引和DAC處理)如圖10.7所示。一個(gè)彩色位面上的一個(gè)字節(jié)對(duì)應(yīng)屏幕上的8個(gè)像點(diǎn)Pixel),在缺省調(diào)色板一個(gè)位面實(shí)際上代表某一基色(RGB),因此4個(gè)位面共可以表示16種顏色。一般來(lái)說(shuō),由0~3位面合成的值是一個(gè)顏色索引值,而不是真正顯示器所顯示的顏色值,真正顯示的顏色必須通過(guò)索引寄存器查到,再通過(guò)DAC表產(chǎn)生,如圖10.8所示。0111

顏色索引寄存器

001001

模塊寄存器

顏色選擇寄存器D0D1D2D3D4D5D6D7Red000000Green000000Blue000000063D/AD/AD/A到模擬顯示器DAC轉(zhuǎn)換表VRAM01110715圖10.8VGA位面法VRAM內(nèi)存映像

下面是采用直接寫點(diǎn)的640×480(16色)子程序,在應(yīng)用程序中可以直接調(diào)用入口參數(shù):AX=行坐標(biāo);BX=列坐標(biāo);CH=顏色值VGA-COLOR16PROCNEARMOVDX,0A000H;視頻緩沖區(qū)首地址MOVES,DXMOVDX,80;一行字節(jié)數(shù)MULDX;行×80MOVDI,AXMOVAX,BXMOVCL,3SHRAX,3;列/8ADDDI,AX;VRAM偏移=行×80+列/8;分離字處理MOVCL,BLANDCL,7XORCL,7MOVBL,80HSHLBL,CL;BL=圖形點(diǎn)分離字;寄存器設(shè)置MOVDX,3C4H;定序器MOVAL,2OUTDX,AL;選映射模式寄存器INCDXMOVAL,OFH;開放4個(gè)彩色位面OUTDX,ALMOVDX,3CEH;圖形控制器端口MOVAL,5;5號(hào):寫模式寄存器OUTDX,ALINCDXMOVAL,2;設(shè)置寫模式2:鎖存寫點(diǎn)OUTDX,ALDECDXMOVAL,8;選擇8號(hào):分離字寄存器OUTDX,ALINCDXMOVAL,BLOUTDX,AL;寫入分離字MOVAL,ES:[DI];讀出數(shù)據(jù)MOVES:[DI],CH;寫入新的顏色數(shù)據(jù)RET;返回(2)壓縮像素法在壓縮像素法中,VRAM中的一個(gè)字節(jié)對(duì)應(yīng)屏幕上的一個(gè)像點(diǎn)(Pixel),由于一個(gè)字節(jié)取值0-255,所以屏幕上的點(diǎn)就有256種顏色的變化(256色)。VRAM與屏幕的映射關(guān)系如圖10.9所示。為了與彩色位面法和真彩色的彩色位面相對(duì)應(yīng),在習(xí)慣上把256色的顯示方式也稱為8位的彩色位面,相對(duì)應(yīng)256色下生成的圖像、圖形文件稱為8位面的圖像或圖形。A000:0000

…………00010002VGA256色顯示模式……..VRAM……..圖10.9VGA壓縮像素法VRAM內(nèi)存映象

在壓縮像素法中,VRAM的一個(gè)字節(jié)的內(nèi)容直接通過(guò)DAC表查出對(duì)應(yīng)的屏幕顯示顏色值,通過(guò)RGB三基色的D/A轉(zhuǎn)換器顯示到屏幕上。壓縮像素法與彩色位面法一樣,在不同的分辨率模式下,其一屏圖形或圖你所占的VRAM的大小也不相同,如模式為13H(320×200×256C)時(shí),一屏圖像大小為64000字節(jié),為5DH(640×480×256C)時(shí),一屏圖像的大小需256KB的VRAM空間。

VGA_COLOR256PROCNEARMOVDX,0A000H;視頻緩沖區(qū)首地址MOVES,DXMOVDX,320;一行字節(jié)數(shù)MULDX;行數(shù)×一行字節(jié)數(shù)ADDAX,BX;VRAM偏移=行數(shù)×一行字節(jié)數(shù)+列MOVDI,AXMOVES:[DI],CHRET;返回2.DAC數(shù)模轉(zhuǎn)換器數(shù)模轉(zhuǎn)換器(DAC)是VGA和VGA圖形適配器所特有寄存器組。DAC能將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),以驅(qū)動(dòng)VGA或SuperVGA的RGB模擬顯示器。由于模擬信號(hào)可以連續(xù)變化,因此顯示器顯示的色彩變化可以非常平滑,適合人的視覺(jué)感受。DAC數(shù)模轉(zhuǎn)換器由3個(gè)視頻數(shù)模轉(zhuǎn)換寄存器(RGB)和DAC電路組成,它們分別控制紅(R)、綠(G)、藍(lán)(B)原色亮度值(RGB)。每個(gè)寄存器為6位,其亮度值(色飽和度)范圍為0~63,3個(gè)寄存器一共可以產(chǎn)生64×64×64=266144種顏色。同時(shí)DAC還必須從查色表(顏色索引寄存器)中取得顏色編碼,以決定屏幕上應(yīng)顯示何種顏色。查色表為8位,所以DAC一次只能從醒色表中轉(zhuǎn)換28=256種顏色。對(duì)于假彩色顯示適配器(顯卡)如:VGA、SuperVGA等,雖然DAC能產(chǎn)生266144種顏色,但同一時(shí)刻同屏上只能顯示256種顏色。

DAC的操作一般可通過(guò)I/O端口或BIOS的INT10H相應(yīng)功能來(lái)進(jìn)行,常用I/O端口地址如下:

3C7H:查色表讀索引

溫馨提示

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