微機鍵盤接口的研究及其在儀器儀表中的應用
發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):678
     徐世昌 楊素英
     來源:《電子技術(shù)應用》
     摘要:介紹了標準微機鍵盤與計算機接口的規(guī)范,分析了鍵盤的串行通信協(xié)議和接口工作時序,并給出了鍵盤與單片機接口硬件電路和應用程序?qū)嵗?
    
    
     關鍵詞:鍵盤
     接口 時序 串行通信 掃描碼
     微機鍵盤以其穩(wěn)定性好、使用方便、價格便宜等優(yōu)點,可有效地應用在輸入量大、要求復雜的儀器儀表中,F(xiàn)存的計算機鍵盤種類很多,但基本原理和接口規(guī)范是一樣的。ibm-pc鍵盤的核心器件是intel公司的單片機8049。單片機采用行列掃描方法來監(jiān)測是否有鍵按下。若有鍵按下,則轉(zhuǎn)換為相應的掃描碼,通過串行通訊線將其傳給計算機,由主機接收并處理成擴展鍵盤碼。
     1 標準鍵盤工作原理
     1.1 通信接口
     鍵盤與計算機通過一個五芯接口插座座(pc/2接口為六芯)相接,各引腳定義分別是電源(vcc)、地(gnd)、串行時鐘線sck和串行數(shù)據(jù)線sio,還有一根線未用。兩種鍵盤接口的插座外形圖及各線定義如圖1所示。
     1.2 通信協(xié)議
     標準鍵盤與計算機采用雙向通信方式,鍵盤可以發(fā)送數(shù)據(jù)給計算機,計算機也可以發(fā)送命令給鍵盤。計算機有最高優(yōu)先權(quán),可以在任何時候發(fā)命令給鍵盤。通信協(xié)議是標準的串行異步通信格式,1位起始位,8位數(shù)據(jù)位(lsb在先),1位奇校驗位p,最后是1位停止位。數(shù)據(jù)格式如圖2所示。
     當sio和sck同時為高電平時,鍵盤可以發(fā)數(shù)據(jù)給計算機。sck可以用作清除發(fā)送線。如果計算機將sck拉為低電平,鍵盤將不發(fā)送數(shù)據(jù),而是將要發(fā)送的數(shù)據(jù)放到發(fā)送緩沖區(qū)中,直到sck變?yōu)楦唠娖讲砰_始發(fā)送數(shù)據(jù)。如果計算機將sio拉低,則鍵盤在檢測到這一變化時,將接收來自計算機的命令。
     圖3(a)給出了鍵盤發(fā)送一個字節(jié)的時序。鍵盤先將sio拉低,通知計算機準備接收數(shù)據(jù)。鍵盤在sck的上升沿后改變數(shù)據(jù),在下降沿時數(shù)據(jù)有效,可以被計算機讀取。發(fā)送數(shù)據(jù)的時鐘信號由鍵盤產(chǎn)生。有的文獻介紹鍵盤時鐘頻率的典型值為20~30khz,但實際上鍵盤的傳送速原則不全在這個范圍內(nèi)。筆者曾做過測試,其中一只鍵盤的野外頻率是12.4khz。
     圖3(b)給出了鍵盤接收一個字節(jié)的時序。為了避免在同一時刻發(fā)送數(shù)據(jù),建議計算機先將sck拉低大約60μs
     以上,以此通知鍵盤不要發(fā)數(shù)據(jù)。然后計算機將sio拉低,表明發(fā)送數(shù)據(jù)開始,并釋放sck,由鍵盤接管sck并產(chǎn)生時鐘信號。計算機在此時鐘信號的同步下發(fā)送數(shù)據(jù)。鍵盤接收數(shù)據(jù)是從檢測到sio變低開始的,然后在sck下降沿讀起始位,并在sck的每個下降沿讀取后緩數(shù)據(jù)。鍵盤在接收完校驗位后,如果在下一個時鐘周期檢測到sio處于空閑態(tài)(高電平),便會接受新數(shù)據(jù)并進行處理。在此期間,鍵盤將把sio置成低電平,直到接受數(shù)據(jù)完成。如果收到校驗位后,鍵盤檢測到sio沒有處于空閑態(tài),它將繼續(xù)發(fā)送時鐘信號直到sio空閑。
     1.3 鍵盤掃描碼
     一個基本按鍵的掃描碼由3個字節(jié)組成,1個字節(jié)的接通掃描碼和2個字節(jié)的斷開掃描碼。其中第一與第三個字節(jié)相同,中間字節(jié)是斷開標志f0h。例如b鍵的接通掃描碼是32h,斷開掃描碼是f0h32h。b鍵被按下時,32h被發(fā)送出去,如果一直按住不放,則鍵盤將以按鍵重復率不停地發(fā)送32h,直到該釋放放,才發(fā)出斷開掃描碼f0h
     32h.掃描碼與按鍵折位置有關,與該鍵的ascii碼并無對應關系。鍵盤上還有部分擴展鍵(功能鍵和控制鍵等),這些鍵的掃描碼由5個字節(jié)組成。與基本鍵的掃描碼相比,接通掃描碼與斷開掃描碼前各多了一個固定值字節(jié)e0h。例如home鍵的接通掃描碼是e0h
     70h,熠工掃描碼是e0h f0h 70h。還有兩個特殊鍵,printscreen鍵的接通掃描碼是e0h
     12h e0h 7ch;斷開掃描碼是e0h f0h 7ch e0h f0h12h,pausebreak鍵的接通掃描碼是e1h
    
     徐世昌 楊素英
     來源:《電子技術(shù)應用》
     摘要:介紹了標準微機鍵盤與計算機接口的規(guī)范,分析了鍵盤的串行通信協(xié)議和接口工作時序,并給出了鍵盤與單片機接口硬件電路和應用程序?qū)嵗?
    
    
     關鍵詞:鍵盤
     接口 時序 串行通信 掃描碼
     微機鍵盤以其穩(wěn)定性好、使用方便、價格便宜等優(yōu)點,可有效地應用在輸入量大、要求復雜的儀器儀表中。現(xiàn)存的計算機鍵盤種類很多,但基本原理和接口規(guī)范是一樣的。ibm-pc鍵盤的核心器件是intel公司的單片機8049。單片機采用行列掃描方法來監(jiān)測是否有鍵按下。若有鍵按下,則轉(zhuǎn)換為相應的掃描碼,通過串行通訊線將其傳給計算機,由主機接收并處理成擴展鍵盤碼。
     1 標準鍵盤工作原理
     1.1 通信接口
     鍵盤與計算機通過一個五芯接口插座座(pc/2接口為六芯)相接,各引腳定義分別是電源(vcc)、地(gnd)、串行時鐘線sck和串行數(shù)據(jù)線sio,還有一根線未用。兩種鍵盤接口的插座外形圖及各線定義如圖1所示。
     1.2 通信協(xié)議
     標準鍵盤與計算機采用雙向通信方式,鍵盤可以發(fā)送數(shù)據(jù)給計算機,計算機也可以發(fā)送命令給鍵盤。計算機有最高優(yōu)先權(quán),可以在任何時候發(fā)命令給鍵盤。通信協(xié)議是標準的串行異步通信格式,1位起始位,8位數(shù)據(jù)位(lsb在先),1位奇校驗位p,最后是1位停止位。數(shù)據(jù)格式如圖2所示。
     當sio和sck同時為高電平時,鍵盤可以發(fā)數(shù)據(jù)給計算機。sck可以用作清除發(fā)送線。如果計算機將sck拉為低電平,鍵盤將不發(fā)送數(shù)據(jù),而是將要發(fā)送的數(shù)據(jù)放到發(fā)送緩沖區(qū)中,直到sck變?yōu)楦唠娖讲砰_始發(fā)送數(shù)據(jù)。如果計算機將sio拉低,則鍵盤在檢測到這一變化時,將接收來自計算機的命令。
     圖3(a)給出了鍵盤發(fā)送一個字節(jié)的時序。鍵盤先將sio拉低,通知計算機準備接收數(shù)據(jù)。鍵盤在sck的上升沿后改變數(shù)據(jù),在下降沿時數(shù)據(jù)有效,可以被計算機讀取。發(fā)送數(shù)據(jù)的時鐘信號由鍵盤產(chǎn)生。有的文獻介紹鍵盤時鐘頻率的典型值為20~30khz,但實際上鍵盤的傳送速原則不全在這個范圍內(nèi)。筆者曾做過測試,其中一只鍵盤的野外頻率是12.4khz。
     圖3(b)給出了鍵盤接收一個字節(jié)的時序。為了避免在同一時刻發(fā)送數(shù)據(jù),建議計算機先將sck拉低大約60μs
     以上,以此通知鍵盤不要發(fā)數(shù)據(jù)。然后計算機將sio拉低,表明發(fā)送數(shù)據(jù)開始,并釋放sck,由鍵盤接管sck并產(chǎn)生時鐘信號。計算機在此時鐘信號的同步下發(fā)送數(shù)據(jù)。鍵盤接收數(shù)據(jù)是從檢測到sio變低開始的,然后在sck下降沿讀起始位,并在sck的每個下降沿讀取后緩數(shù)據(jù)。鍵盤在接收完校驗位后,如果在下一個時鐘周期檢測到sio處于空閑態(tài)(高電平),便會接受新數(shù)據(jù)并進行處理。在此期間,鍵盤將把sio置成低電平,直到接受數(shù)據(jù)完成。如果收到校驗位后,鍵盤檢測到sio沒有處于空閑態(tài),它將繼續(xù)發(fā)送時鐘信號直到sio空閑。
     1.3 鍵盤掃描碼
     一個基本按鍵的掃描碼由3個字節(jié)組成,1個字節(jié)的接通掃描碼和2個字節(jié)的斷開掃描碼。其中第一與第三個字節(jié)相同,中間字節(jié)是斷開標志f0h。例如b鍵的接通掃描碼是32h,斷開掃描碼是f0h32h。b鍵被按下時,32h被發(fā)送出去,如果一直按住不放,則鍵盤將以按鍵重復率不停地發(fā)送32h,直到該釋放放,才發(fā)出斷開掃描碼f0h
     32h.掃描碼與按鍵折位置有關,與該鍵的ascii碼并無對應關系。鍵盤上還有部分擴展鍵(功能鍵和控制鍵等),這些鍵的掃描碼由5個字節(jié)組成。與基本鍵的掃描碼相比,接通掃描碼與斷開掃描碼前各多了一個固定值字節(jié)e0h。例如home鍵的接通掃描碼是e0h
     70h,熠工掃描碼是e0h f0h 70h。還有兩個特殊鍵,printscreen鍵的接通掃描碼是e0h
     12h e0h 7ch;斷開掃描碼是e0h f0h 7ch e0h f0h12h,pausebreak鍵的接通掃描碼是e1h