第11章 鍵盤和鼠標(biāo)_第1頁
第11章 鍵盤和鼠標(biāo)_第2頁
第11章 鍵盤和鼠標(biāo)_第3頁
第11章 鍵盤和鼠標(biāo)_第4頁
第11章 鍵盤和鼠標(biāo)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第11章章 鍵盤和鼠標(biāo)鍵盤和鼠標(biāo)普通鍵盤人體鍵盤第第11章章 鍵盤和鼠標(biāo)鍵盤和鼠標(biāo)教學(xué)建議,本章重點為教學(xué)建議,本章重點為:行掃描法的原理;行反轉(zhuǎn)法的原理;連鎖法和巡回法解決重鍵問題的原理;鍵盤掃描碼和系統(tǒng)掃描碼的含義;擴展鍵盤的工作原理;主機鍵盤接口的功能和構(gòu)成;09H和16H鍵盤中斷處理程序的功能;鼠標(biāo)驅(qū)動程序的調(diào)用方法。課后作業(yè)參考利用行掃描法來識別閉合鍵的工作原理是什么?為什么在識別一個利用行掃描法來識別閉合鍵的工作原理是什么?為什么在識別一個鍵前,先快速檢查鍵盤中是否有鍵按下?快速識別有無閉合鍵的方鍵前,先快速檢查鍵盤中是否有鍵按下?快速識別有無閉合鍵的方法是什么?法是什么?設(shè)計一

2、個用行掃描法識別閉合鍵的掃描程序,設(shè)鍵盤上有設(shè)計一個用行掃描法識別閉合鍵的掃描程序,設(shè)鍵盤上有45個個鍵,并行口鍵,并行口A接四根行線,并行口接四根行線,并行口B接五根列線,兩個端口的地址接五根列線,兩個端口的地址分別為分別為PORTA、PORTB。敘述行反轉(zhuǎn)法的基本工作原理,畫出行反轉(zhuǎn)法的程序流程。敘述行反轉(zhuǎn)法的基本工作原理,畫出行反轉(zhuǎn)法的程序流程。連鎖法和巡回發(fā)識別重建的基本思想是什么連鎖法和巡回發(fā)識別重建的基本思想是什么?用連鎖法識別重鍵時,對用連鎖法識別重鍵時,對微型計算機技術(shù)及應(yīng)用微型計算機技術(shù)及應(yīng)用一書的圖一書的圖9.8中的三種重鍵情況分別如何處理?看懂圖中的三種重鍵情況分別如何處

3、理?看懂圖8.9的流程,并說明按標(biāo)的流程,并說明按標(biāo)準(zhǔn)的連鎖法,此流程應(yīng)如何修改?準(zhǔn)的連鎖法,此流程應(yīng)如何修改?巡回法是如何識別三種重鍵情況的?分析圖巡回法是如何識別三種重鍵情況的?分析圖9.10的流程圖,并編寫的流程圖,并編寫一個一個8行行8列的巡回法識別重鍵程序,端口地址用標(biāo)號表示。列的巡回法識別重鍵程序,端口地址用標(biāo)號表示。一、一、 鍵盤的基本原理結(jié)構(gòu)鍵盤的基本原理結(jié)構(gòu)圖圖11.2 鍵盤的矩陣式結(jié)構(gòu)鍵盤的矩陣式結(jié)構(gòu)mn個鍵個鍵需要需要m+n根引線根引線 識別按鍵:識別按鍵:行掃描法行掃描法行反轉(zhuǎn)法行反轉(zhuǎn)法二、二、 鍵的識別鍵的識別行掃描法行掃描法 1.行掃描識別按鍵的原理: 指定某行接低

4、電平,看是否有列線為低電平,如有則移位確定列。指定某行接低電平,看是否有列線為低電平,如有則移位確定列。 2. 實際上,先快速檢查是否有鍵按下;再具體判斷哪一個鍵被按下 3. 硬件上行線與列線的接法鍵的識別鍵的識別行掃描法行掃描法 4.判斷是否有鍵按下程序如下:WAIT:MOVAL,00HMOV DX,OUTPORT;往所有行線上輸出低電平,;往所有行線上輸出低電平, OUTPORT為行線所連的輸出端口為行線所連的輸出端口OUTDX,ALMOVDX,INPORTINAL,DX; 讀取列值讀取列值A(chǔ)NDAL,0FFH CMPAL,0FFH;看是否有列線處于低電平;看是否有列線處于低電平JZWAI

5、T;否則沒有閉合鍵,循環(huán)等待;否則沒有閉合鍵,循環(huán)等待DONE:CALL DELAY ;是,則延遲;是,則延遲20ms去抖動去抖動鍵的識別鍵的識別行掃描法行掃描法 掃描法判斷閉合鍵的流程鍵的識別鍵的識別行掃描法行掃描法 掃描法判斷閉合鍵的程序:PROG:MOVBL,0;鍵號初值為;鍵號初值為0MOVCL,0FEH;送掃描初值;送掃描初值MOVDL,8;計數(shù)值為行數(shù);計數(shù)值為行數(shù)FROW:MOVAL,CLOUTROWPORT,AL;掃描一行;掃描一行ROLAL,1MOVCL,AL;修改掃描值;修改掃描值INAL,COLPORTCMPAL,0FFH;讀進列值,并判別是否有哪條列線接地;讀進列值,并

6、判別是否有哪條列線接地JNZFCOL;有列線接地,則轉(zhuǎn);有列線接地,則轉(zhuǎn)FCOLMOVAL,BLADDAL,8;如沒有列線接地,則使鍵號;如沒有列線接地,則使鍵號=鍵號鍵號+列數(shù)列數(shù)/行行MOVBL,ALDECDL ;是否各行都掃完;是否各行都掃完JNZFROW;未掃完,則掃下一行;未掃完,則掃下一行JMPDONE;已掃完,則轉(zhuǎn);已掃完,則轉(zhuǎn)DONEFCOL:RCR AL,1JNCPROCE;如此列接地,則轉(zhuǎn);如此列接地,則轉(zhuǎn)PROCEINCBLJMPFCOL;如未找到接地的列線,則轉(zhuǎn);如未找到接地的列線,則轉(zhuǎn)FCOL繼續(xù)尋找繼續(xù)尋找PROCE:;鍵命令處理程序;鍵命令處理程序DONE:;后續(xù)

7、處理程序;后續(xù)處理程序鍵的識別鍵的識別行掃描法行掃描法三、三、 鍵的識別鍵的識別行反轉(zhuǎn)法行反轉(zhuǎn)法圖圖11.5 行反轉(zhuǎn)法的工作示意圖行反轉(zhuǎn)法的工作示意圖(a)行線輸出,列線輸入;行線輸出,列線輸入; (b) 列線輸出,行線輸入列線輸出,行線輸入 1、行反轉(zhuǎn)法的鍵盤連接、行反轉(zhuǎn)法的鍵盤連接鍵的識別鍵的識別行反轉(zhuǎn)法行反轉(zhuǎn)法 2、行反轉(zhuǎn)法判別閉合鍵的程序流程、行反轉(zhuǎn)法判別閉合鍵的程序流程鍵的識別鍵的識別行反轉(zhuǎn)法行反轉(zhuǎn)法ST:MOV AL,82HOUTPORT1,AL ; PORT1是是8255A的控制口地的控制口地址,設(shè)控制字,址,設(shè)控制字,A口為輸出,口為輸出,B為輸入為輸入WAIT1: MOV A

8、L,0OUTPORTA,AL;往端口;往端口A輸出全輸出全0IN AL, PORTB;輸入列值;輸入列值A(chǔ)NDAL, 0FFHCMP AL, 0FFH ;看是否有鍵閉合;看是否有鍵閉合JZ WAIT1;如無閉合鍵,則等待;如無閉合鍵,則等待PUSHAXPUSHAX;保留列值;保留列值CALLDELAY;延遲;延遲20msMOVAL, 90HOUT PORT1,AL;將;將8255A的的A口設(shè)置為輸入,口設(shè)置為輸入,B口設(shè)置為輸出口設(shè)置為輸出POPAXOUT PORTB,AL;將讀得的列值輸出到端口;將讀得的列值輸出到端口B 鍵的識別鍵的識別行反轉(zhuǎn)法行反轉(zhuǎn)法識識別別閉閉合合鍵鍵程程序序清清單單1

9、)OUT PORTB,AL;將讀得的列值輸出到端口;將讀得的列值輸出到端口BINAL,PORTA ;讀進行值;讀進行值POPBXMOV AH,BL;使;使AH中為列值,而中為列值,而AL中為行值中為行值MOVSI,TABLE+3FH;取鍵碼表末地址;取鍵碼表末地址MOVCX,40H;CX作為鍵計數(shù)器作為鍵計數(shù)器LOOP1:CMPAX,SI+0;行值列值與鍵碼表比較;行值列值與鍵碼表比較JZKEYPRO;如相等,則轉(zhuǎn)鍵命令處理;如相等,則轉(zhuǎn)鍵命令處理DEC SIDECSI;修改表指針和鍵計數(shù)器;修改表指針和鍵計數(shù)器DECCXJNZLOOP1;未比較完,則再比;未比較完,則再比JMPST;如已比較

10、完,但沒有在鍵碼表中找到相同碼,則重;如已比較完,但沒有在鍵碼表中找到相同碼,則重新開始找新開始找KEYPRO: ;鍵命令處理;鍵命令處理TABLE:DW0FEFEH;鍵碼表開始,;鍵碼表開始,K0鍵鍵DW0FEFDH;K1鍵鍵DW0FEFBH;K2鍵鍵DW0FEF7H ;K3鍵鍵鍵的識別鍵的識別行反轉(zhuǎn)法行反轉(zhuǎn)法識識別別閉閉合合鍵鍵程程序序清清單單2)下課四、四、 抖動和重鍵問題的解決抖動和重鍵問題的解決 A鍵先按后放,B鍵后按先放,圖(a) A鍵先按先放,B鍵后按后放,圖(b) A、B鍵同時按下,但A鍵先放,圖(c) 重鍵問題的處理一般采用兩種方法:重鍵問題的處理一般采用兩種方法:連鎖法:連

11、鎖法:原則是在所有鍵釋放后,只原則是在所有鍵釋放后,只承認(rèn)此后閉合的第一個鍵,對此鍵閉承認(rèn)此后閉合的第一個鍵,對此鍵閉合時按下的其它鍵均不作識別,直到合時按下的其它鍵均不作識別,直到所有鍵釋放后,才讀入下一個鍵。所有鍵釋放后,才讀入下一個鍵。巡回法:巡回法:等前面所識別的鍵被釋放后,等前面所識別的鍵被釋放后,就可對其他閉合鍵作識別。就可對其他閉合鍵作識別。11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決圖圖11.9 連鎖法程序流程圖連鎖法程序流程圖11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決 1、連鎖法連鎖法程序清單連鎖法程序清單KEYNOW:CALL KEY;進行鍵盤掃描,;進行鍵盤

12、掃描,AL中為鍵值,中為鍵值, 如鍵值為如鍵值為FFH,表示無閉合鍵,表示無閉合鍵 INC AL JZNOKEY;如鍵值為;如鍵值為FFH,則轉(zhuǎn),則轉(zhuǎn)NOKEYL1:CALLDELAY ;進行延遲;進行延遲 CALLKEY;進行鍵盤掃描;進行鍵盤掃描 MOVBL,AL;保存鍵行列值;保存鍵行列值INCALJZNOKEY;判是否有鍵閉合,如無,則轉(zhuǎn);判是否有鍵閉合,如無,則轉(zhuǎn)NOKEYMOV AL,F(xiàn)LAGAND AL,0FFH;測鍵閉合標(biāo)志是否為;測鍵閉合標(biāo)志是否為0JNZL1;如不為;如不為0,則循環(huán)等待釋放,則循環(huán)等待釋放DEC ALJMP QUIT;如為;如為0,則標(biāo)志改為,則標(biāo)志改為F

13、F,并轉(zhuǎn),并轉(zhuǎn)QUITNOKEY:MOVBL,0FFH;鍵值為;鍵值為FF,表示無閉合鍵,表示無閉合鍵QUIT: MOVFLAG,A;設(shè)鍵標(biāo)志;設(shè)鍵標(biāo)志CMP AL,00H;測試鍵標(biāo)志;測試鍵標(biāo)志JZKEYNOW;如鍵標(biāo)志為;如鍵標(biāo)志為0,則等待輸入,則等待輸入MOV AL,BL;AL中為鍵值中為鍵值RET;退出程序;退出程序11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決圖圖11.10 巡回法的流程圖巡回法的流程圖11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決 2、巡回法 巡回法程序清單(巡回法程序清單(1)START:MOVAL,3FHMOV DX,RPORT;使所有行為低電平,因反

14、相接鍵盤,故;使所有行為低電平,因反相接鍵盤,故CPU輸出高電平輸出高電平OUT DX,ALMOV DX,LPORTINAL,DX;讀取列值;讀取列值A(chǔ)ND AL,1FHCMP AL,1FH;判別是否有鍵閉合;判別是否有鍵閉合JZQUIT;無閉合鍵,則退出;無閉合鍵,則退出CALLDELAY;有閉合鍵,則延遲一段時間;有閉合鍵,則延遲一段時間MOV AL,01H;使第一行為低電平;使第一行為低電平KEY:MOVDX,RPORTOUT DX,AL;使所選的一行為低電平;使所選的一行為低電平PUSHAX;保存行值;保存行值MOV DX,LPORTINAL,DX;讀取列值;讀取列值A(chǔ)ND AL,1F

15、HCMP AL,1FH;所選行上有鍵閉合嗎;所選行上有鍵閉合嗎?JNZ YE;有閉合鍵,則轉(zhuǎn)譯碼程序;有閉合鍵,則轉(zhuǎn)譯碼程序11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決巡回法程序清單(巡回法程序清單(2) POP AX;恢復(fù)行值SHL AL,1;選擇下一行MOV BL,40HCMP AL,BL;是最后一行嗎?JNZ KEY;不是最后一行,則繼續(xù)JMP QUIT;是最后一行,則退出YE:;鍵譯碼程序,如鍵值不符合表中代碼,則轉(zhuǎn)出錯處理PUSH AX;AX中為鍵值KEY1:MOV DX,LPORTINAL,DX;讀進列值A(chǔ)ND AL,1FHCMP AL,1FH;測試是否鍵已釋放JNZ KEY

16、1;如未釋放,則等待CALL DELAY;如測得鍵已釋放,則再去抖動POPAX;AX中為鍵值;鍵命令處理QUIT:RET;返回11.4 抖動和重鍵問題的解決抖動和重鍵問題的解決11.5 微型機的鍵盤子系統(tǒng)微型機的鍵盤子系統(tǒng)圖圖11.11 鍵盤子系統(tǒng)的示意圖鍵盤子系統(tǒng)的示意圖11.5.1 擴展鍵盤和鍵盤控制器擴展鍵盤和鍵盤控制器 擴展鍵盤 鍵盤掃描碼 系統(tǒng)掃描碼11.5.1 擴展鍵盤和鍵盤控制器擴展鍵盤和鍵盤控制器 擴展鍵盤的工作原理和連接信號 圖圖11.12 16行行8列的鍵盤掃描電路列的鍵盤掃描電路11.5.2 主機的鍵盤接口電路主機的鍵盤接口電路 主機鍵盤接口的功能 接收鍵盤送來的串行掃描

17、碼。接收鍵盤送來的串行掃描碼。 將串行掃描碼轉(zhuǎn)換為并行掃描碼,再轉(zhuǎn)換為系將串行掃描碼轉(zhuǎn)換為并行掃描碼,再轉(zhuǎn)換為系統(tǒng)掃描碼。統(tǒng)掃描碼。 向向CPU發(fā)中斷請求,以便主機讀取系統(tǒng)掃描碼發(fā)中斷請求,以便主機讀取系統(tǒng)掃描碼并作相應(yīng)處理。并作相應(yīng)處理。 將將CPU發(fā)出的鍵盤自檢命令或復(fù)位命令傳輸?shù)桨l(fā)出的鍵盤自檢命令或復(fù)位命令傳輸?shù)芥I盤,以判斷鍵盤工作的正確性或使鍵盤復(fù)位鍵盤,以判斷鍵盤工作的正確性或使鍵盤復(fù)位。11.5.2主機的鍵盤接口電路主機的鍵盤接口電路 主機鍵盤接口的構(gòu)成圖圖11.13 主機的鍵盤接口主機的鍵盤接口(點劃線框內(nèi)為點劃線框內(nèi)為Intel 8042)11.6 鍵盤中斷處理程序鍵盤中斷處理

18、程序 兩個中斷處理程序 09H中斷:硬件中斷,鍵盤發(fā)出中斷:硬件中斷,鍵盤發(fā)出 16H中斷:軟件中斷,應(yīng)用程序中中斷:軟件中斷,應(yīng)用程序中軟件指令軟件指令11.6.1 09H鍵盤中斷處理程序鍵盤中斷處理程序 對特殊鍵設(shè)置標(biāo)志位 對第一類ASCII碼鍵,先將系統(tǒng)掃描碼轉(zhuǎn)換為ASCII碼,在存入鍵盤緩沖區(qū)時,低位字節(jié)為ASCII碼,高位字節(jié)為系統(tǒng)掃描碼 對第二類ASCII碼鍵,直接將數(shù)字作為ASCII碼,在存入鍵盤緩沖區(qū)時,低位字節(jié)為ASCII碼,高位字節(jié)為0 對于不能用ASCII碼表示的組合鍵和功能鍵,用0作為低位字節(jié),擴展碼作為高位字節(jié)存入鍵盤緩沖區(qū) 對于特殊命令鍵不形成代碼,而直接完成相應(yīng)操

19、作11.6.2 16H鍵盤中斷處理程序鍵盤中斷處理程序11.7 鍵盤緩沖區(qū)鍵盤緩沖區(qū)圖圖11.14 32字節(jié)的鍵盤緩沖區(qū)及指針字節(jié)的鍵盤緩沖區(qū)及指針11.8.1 鼠標(biāo)的工作原理鼠標(biāo)的工作原理按鼠標(biāo)鍵分類雙鍵式雙鍵式三鍵式三鍵式按照工作原理機械式機械式光電式光電式光機式光機式11.8.1 鼠標(biāo)的工作原理鼠標(biāo)的工作原理鼠標(biāo)與主機的連接方式有三種:用用RS232C串行接口串行接口用用USB接口接口用用PS/2接口接口11.8.1 鼠標(biāo)的工作原理鼠標(biāo)的工作原理 鼠標(biāo)的性能指標(biāo)和數(shù)據(jù)格式 圖圖11.15 鼠標(biāo)鼠標(biāo)3字節(jié)數(shù)據(jù)組的格式字節(jié)數(shù)據(jù)組的格式11.8.2 鼠標(biāo)的驅(qū)動程序及其功能調(diào)用鼠標(biāo)的驅(qū)動程序及其功能調(diào)用 例1 AX00,鼠標(biāo)檢測和初始化如下指令MOVAX,00INT33H11.8.2 鼠標(biāo)的驅(qū)動程序及其功能調(diào)用鼠標(biāo)的驅(qū)動程序及其功能調(diào)用 例2 AX04,設(shè)置鼠標(biāo)光標(biāo)位置入口參數(shù):CX水平位置,DX垂直位置MOV AX,04 ;設(shè)置光標(biāo)位置;設(shè)置光標(biāo)位置MOV CX,208;水平位置,由文本方式的字符換算;水平位置,由文本方式的字符換算為圖形方式的像素為圖形方式的像素MOV DX,108;垂直位置,由字符換算為像素;垂直位置,由字符換算為像素INT 33H11.8.2 鼠標(biāo)的驅(qū)動程序及其功能調(diào)用鼠標(biāo)的驅(qū)動程序及其功能調(diào)用 例2 AX0FH 設(shè)置鼠標(biāo)的

溫馨提示

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

評論

0/150

提交評論