第08章 人機(jī)交互設(shè)備接口1.ppt_第1頁
第08章 人機(jī)交互設(shè)備接口1.ppt_第2頁
第08章 人機(jī)交互設(shè)備接口1.ppt_第3頁
第08章 人機(jī)交互設(shè)備接口1.ppt_第4頁
第08章 人機(jī)交互設(shè)備接口1.ppt_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1 第8章人機(jī)交互設(shè)備接口 主要內(nèi)容 1 鍵盤接口2 CRT顯示器接口重點(diǎn)內(nèi)容 各種設(shè)備接口 鍵盤是微機(jī)系統(tǒng)最常使用的輸入設(shè)備小鍵盤 適用于單板機(jī)或以微處理器為基礎(chǔ)的儀器 實(shí)現(xiàn)數(shù)據(jù) 地址 命令及指令等的輸入獨(dú)立鍵盤 通過5芯電纜與PC微機(jī)主機(jī)連接 第8章人機(jī)交互設(shè)備接口 最簡(jiǎn)單的線性結(jié)構(gòu)鍵盤每一個(gè)引腳連接一個(gè)鍵輸入0 1反映健是否高低 第8章人機(jī)交互設(shè)備接口 常用的矩陣結(jié)構(gòu)鍵盤每行連接一個(gè)引腳每列連接一個(gè)引腳利用控制線為低 讀取檢測(cè)線來識(shí)別閉合鍵 第8章人機(jī)交互設(shè)備接口 1 掃描法 先使第0行接低電平 其余行為高電平 然后看第0行是否有鍵閉合 通過檢查列線電位實(shí)現(xiàn) 此后 再將第1行接地 然后檢測(cè)列線是否有變?yōu)榈碗娢坏木€ 如此往下一行一行地掃描 直到最后一行在掃描過程中 當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí) 便在掃描中途退出通過組合行線和列線可識(shí)別此刻按下的是哪一鍵 第8章人機(jī)交互設(shè)備接口 第1段 是否有鍵按下 key1 moval 00movdx rowportoutdx al 使所有行線為低電平movdx colportinal dx 讀取列值cmpal 0ffh 判定是否有列線為低電平j(luò)zkey1 無閉合鍵 循環(huán)等待calldelay 有 延遲20ms清除抖動(dòng) 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 第2段 識(shí)別按鍵 掃描 movcx 8 行數(shù)送CXmovah 0feh 掃描初值送AHkey2 moval ahmovdx rowportoutdx al 輸出行值 掃描值 movdx colportinal dx 讀進(jìn)列值 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 第2段 識(shí)別按鍵 判斷 cmpal 0ffh 判斷有無低電平的列線jnzkey3 有 則轉(zhuǎn)下一步處理rolah 1 無 則移位掃描值loopkey2 準(zhǔn)備下一行掃描jmpkey1 所有行都沒有鍵按下 則返回繼續(xù)檢測(cè)key3 此時(shí) al 列值 ah 行值 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 2 反轉(zhuǎn)法 首先 將行線作為控制線接一個(gè)輸出端口 將列線作為檢測(cè)線接一個(gè)輸入端口CPU通過輸出端口將行線 控制線 全部設(shè)置為低電平 然后從輸入端口讀取列線 檢測(cè)線 然后 將行線和列線的作用互換 即將列線作為控制線接輸出端口 行線作為檢測(cè)線接輸入端口將剛才讀得的列值從列線所接端口輸出 再讀取行線的輸入值這樣 當(dāng)一個(gè)鍵被按下時(shí) 必定可以讀得一對(duì)唯一的行值和列值 條件 連接行線和列線的接口電路必須支持動(dòng)態(tài)改變輸入 輸出方式 第1段 是否有鍵按下 設(shè)置行線接輸出端口 列線接輸入端口key2 moval 00movdx rowportoutdx al 設(shè)置行線全為低movdx colportinal dx 讀取列值cmpal 0ffhjzkey2 無閉合鍵 循環(huán)等待pushax 有閉合鍵 保存列值pushax 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 第2段 識(shí)別按鍵 反轉(zhuǎn)法 設(shè)置行線接輸入端口 列線接輸出端movdx colportpopaxoutdx al 輸出列值movdx rowportinal dx 讀取行值popbx 組合行列值movah bl 此時(shí) al 行值 ah 列值 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 行列值表和鍵代碼表 鍵盤的行列值表tabledw0fefeh 鍵0的行列值 鍵值 dw0fdfeh 鍵1的行列值dw0fbfeh 鍵2的行列值 其他鍵的行列值 鍵盤的鍵代碼表chardb 鍵0的代碼值db 鍵1的代碼值 其他鍵的代碼值 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 第3段 查找鍵代碼 movsi offsettablemovdi offsetcharmovcx 64 CX 鍵的個(gè)數(shù)key3 cmpax si 與鍵值比較jzkey4 相同 說明查到incsi 不相同 繼續(xù)比較incsiincdiloopkey3jmpkey1 全部比較完 仍無相同 說明是重鍵 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 第4段 等待按鍵釋放 key4 moval di 獲取鍵代碼送AL 判斷按鍵是否釋放 沒有則等待calldelay 按鍵釋放 延時(shí)消除抖動(dòng) 后續(xù)處理 鍵盤掃描程序 第8章人機(jī)交互設(shè)備接口 3 抖動(dòng)和重健問題 機(jī)械按鍵存在抖動(dòng)現(xiàn)象當(dāng)按下或釋放一個(gè)鍵時(shí) 往往會(huì)出現(xiàn)按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)抖動(dòng)的持續(xù)時(shí)間通常不大于10ms采用硬件消抖電路或軟件延時(shí)方法解決重鍵指兩個(gè)或多個(gè)鍵同時(shí)閉合出現(xiàn)重鍵時(shí) 讀取的鍵值必然出現(xiàn)有一個(gè)以上的0是否給予識(shí)別和識(shí)別哪一個(gè)鍵 第8章人機(jī)交互設(shè)備接口 重健問題的處理 簡(jiǎn)單情況 不予識(shí)別 認(rèn)為是錯(cuò)誤的按鍵通常情況 只承認(rèn)先識(shí)別出來的鍵連鎖法 直到所有鍵都釋放后 讀入下一個(gè)鍵巡回法 等被識(shí)別的鍵釋放以后 就可以對(duì)其他閉合鍵作識(shí)別 而不必等待全部鍵釋放正常的組合鍵 都識(shí)別出來 第8章人機(jī)交互設(shè)備接口 PC機(jī)鍵盤的工作原理 1 PC機(jī)鍵盤的工作過程 鍵盤電路正常工作時(shí)不斷地掃描鍵盤矩陣有按鍵 則確定按鍵位置之后以串行數(shù)據(jù)形式發(fā)送給系統(tǒng)板鍵盤接口電路鍵按下時(shí) 發(fā)送該鍵的接通掃描碼鍵松開時(shí) 發(fā)送該鍵的斷開掃描碼若一直按住某鍵 則以拍發(fā)速率 每秒2 30次 連續(xù)發(fā)送該鍵的接通掃描碼 接通掃描碼反映該鍵在鍵盤上的位置斷開掃描碼 接通掃描碼最高位置1 接通掃描碼 80H 第8章人機(jī)交互設(shè)備接口 2 鍵盤接口電路的工作過程 接收一個(gè)串行形式字符以后 進(jìn)行串并轉(zhuǎn)換然后產(chǎn)生鍵盤中斷IRQ1請(qǐng)求 等待讀取鍵盤數(shù)據(jù)CPU響應(yīng)中斷 則進(jìn)入09H鍵盤中斷服務(wù)程序 讀取鍵盤掃描碼 用INAL 60H即可 響應(yīng)鍵盤 系統(tǒng)使PB7 1 允許鍵盤工作 系統(tǒng)使PB7 0 處理鍵盤數(shù)據(jù) 給8259A中斷結(jié)束EOI命令 中斷返回 3 PC機(jī)鍵盤中斷服務(wù)程序 09H號(hào)中斷服務(wù)程序 kbint過程 完成常規(guī)的操作處理鍵盤數(shù)據(jù) 將獲取的掃描碼通過查表轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼送緩沖區(qū) 對(duì)于不能顯示的按鍵 則轉(zhuǎn)換為0 且不再送至緩沖區(qū)鍵盤I O功能程序 kbget子程序 從緩沖區(qū)中讀取轉(zhuǎn)換后的ASCII碼功能調(diào)用 主程序 循環(huán)顯示鍵入的字符 鍵盤緩沖區(qū) 中斷服務(wù)程序與子程序之間傳遞參數(shù)先進(jìn)先出循環(huán)隊(duì)列隊(duì)列空進(jìn)隊(duì)列出隊(duì)列隊(duì)列滿 鍵盤緩沖區(qū) bufferdb10dup 0 bufptr1dw0 隊(duì)列頭指針bufptr2dw0 隊(duì)列尾指針 鍵盤代碼表 scantbdb0 1 1234567890 08h 鍵盤第1排的按鍵 從ESC到退格db0 qwertyuiop 0dh 鍵盤第2排的按鍵 從Tab到回車 db0 0 789 456 1230 右邊小鍵盤 從NumLock到Del鍵位置 設(shè)置中斷向量1 movax 3509hint21hpushespushbx 保存09H號(hào)原中斷向量cli 關(guān)中斷pushds 設(shè)置09H號(hào)新中斷向量movax segkbintmovds axmovdx offsetkbint 設(shè)置中斷向量2 movax 2509hint21hpopdsinal 21h 允許IRQ1中斷 其他不變pushaxandal 0fdhout21h alsti 開中斷 調(diào)用并顯示 start1 callkbget 獲取按鍵的ASCII碼cmpal 1jzstart2 是ESC鍵 則退出pushax 保護(hù)字符movdl al 顯示字符movah 2int21hpopax 恢復(fù)字符 處理回車符 cmpal 0dh 該字符是回車符嗎 jnzstart1 不是 取下一個(gè)按鍵字符movdl 0ah 是回車符 則再進(jìn)行換行movah 2int21hjmpstart1 繼續(xù)取字符 恢復(fù)中斷向量 start2 clipopaxout21h alpopdxpopdsmovax 2509hint21hstimovax 4c00h 返回DOSint21h 子程序 判斷緩沖區(qū)空否 kbgetprockbget1 pushbx 保護(hù)BXclimovbx bufptr1 取頭指針cmpbx bufptr2 與尾指針相等否 jnzkbget2 不相等 說明緩沖區(qū)有字符 轉(zhuǎn)移sti 相等 說明緩沖區(qū)空popbxjmpkbget1 等待緩沖區(qū)有字符 子程序 獲取按鍵字符 kbget2 moval buffer bx 取字符送ALincbx 隊(duì)列頭指針增量cmpbx 10 是否指向隊(duì)列末端jckbget3 沒有 轉(zhuǎn)移movbx 0 指針指向隊(duì)列末端 則循環(huán) 指向始端kbget3 movbufptr1 bx 設(shè)定新隊(duì)列頭指針stipopbxretkbgetendp 中斷服務(wù)程序 響應(yīng)鍵盤 kbintprocsti 開中斷pushax 保護(hù)寄存器pushbxinal 60h 讀取鍵盤掃描碼pushaxinal 61h 使PB7 1 響應(yīng)鍵盤oral 80hout61h alandal 7fh 使PB7 0 允許鍵盤out61h al 中斷服務(wù)程序 數(shù)據(jù)處理 popaxtestal 80h 是斷開掃描碼 jnzkbint2 是 則退出movbx offsetscantb 是接通掃描碼 取表首地址xlat 將掃描碼轉(zhuǎn)換成ASCII碼cmpal 0 是否為合法的ASCII碼 jzkbint2 不是 則退出 中斷服務(wù)程序 指針增量 movbx bufptr2movbuffer bx al 將ASCII碼存入緩沖區(qū)隊(duì)列尾incbx 隊(duì)列尾指針增量cmpbx 10 是否指向隊(duì)列末端 jckbint1 沒有 轉(zhuǎn)移movbx 0 指針指向隊(duì)列末端 則循環(huán) 指向始端 中斷服務(wù)程序 判斷緩沖區(qū)滿否 kbint1 cmpbx bufptr1jzkbint2 若隊(duì)列滿 則退出movbufptr2 bx 隊(duì)列不滿 設(shè)置新的隊(duì)列尾指針 中斷服務(wù)程序 中斷返回 kbint2 moval 20h 向8259A發(fā)送普通中斷結(jié)束命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論