《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 微機鍵盤接口的研究及其在儀器儀表中的應用

微機鍵盤接口的研究及其在儀器儀表中的應用

2008-12-08
作者:仲崇權 徐世昌 楊素英

  摘? 要: 介紹了標準微機鍵盤與計算機接口的規范,分析了鍵盤的串行通信協議和接口工作時序,并給出了鍵盤與單片機接口硬件電路和應用程序實例。

  關鍵詞: 鍵盤? 接口? 時序? 串行通信? 掃描碼

?

  微機鍵盤以其穩定性好、使用方便、價格便宜等優點,可有效地應用在輸入量大、要求復雜的儀器儀表中?,F存的計算機鍵盤種類很多,但基本原理和接口規范是一樣的。IBM-PC鍵盤的核心器件是Intel公司的單片機8049。單片機采用行列掃描方法來監測是否有鍵按下。若有鍵按下,則轉換為相應的掃描碼,通過串行通訊線將其傳給計算機,由主機接收并處理成擴展鍵盤碼。

1 標準鍵盤工作原理

1.1 通信接口

  鍵盤與計算機通過一個五芯接口插座(PS/2接口為六芯)相接,各引腳定義分別是電源(VCC)、地(GND)、串行時鐘線" title="時鐘線">時鐘線SCK和串行數據線SIO,還有一根線未用。兩種鍵盤接口" title="鍵盤接口">鍵盤接口的插座外形圖及各線定義如圖1所示。

?

?

1.2 通信協議

  標準鍵盤與計算機采用雙向通信方式,鍵盤可以發送數據給計算機,計算機也可以發送命令給鍵盤。計算機有最高優先權,可以在任何時候發命令給鍵盤。通信協議是標準的串行異步通信格式,1位起始位,8位數據位(LSB在先),1位奇校驗位P,最后是1位停止位。數據格式如圖2所示。

?

?

  當SIO和SCK同時為高電平" title="高電平">高電平時,鍵盤可以發數據給計算機。SCK可以用作清除發送線。如果計算機將SCK拉為低電平,鍵盤將不發送數據,而是將要發送的數據放到發送緩沖區中,直到SCK變為高電平才開始發送數據。如果計算機將SIO拉低,則鍵盤在檢測到這一變化時,將接收來自計算機的命令。

  圖3(a)給出了鍵盤發送一個字節的時序。鍵盤先將SIO拉低,通知計算機準備接收數據。鍵盤在SCK的上升沿后改變數據,在下降沿時數據有效,可以被計算機讀取。發送數據的時鐘信號" title="時鐘信號">時鐘信號由鍵盤產生。有的文獻介紹鍵盤時鐘頻率的典型值為20~30kHz,但實際上鍵盤的傳送速率不全在這個范圍內。筆者曾做過測試,其中一只鍵盤的時鐘頻率是12.4kHz。

  圖3(b)給出了鍵盤接收一個字節的時序。為了避免在同一時刻發送數據,建議計算機先將SCK拉低大約60μs以上,以此通知鍵盤不要發數據。然后計算機將SIO拉低,表明發送數據開始,并釋放SCK,由鍵盤接管SCK并產生時鐘信號。計算機在此時鐘信號的同步下發送數據。鍵盤接收數據是從檢測到SIO變低開始的,然后在SCK下降沿讀起始位,并在SCK的每個下降沿讀取后續數據。鍵盤在接收完校驗位后,如果在下一個時鐘周期檢測到SIO處于空閑態(高電平),便會接受新數據并進行處理。在此期間,鍵盤將把SIO置成低電平,直到接受數據完成。如果收到校驗位后,鍵盤檢測到SIO沒有處于空閑態,它將繼續發送時鐘信號直到SIO空閑。

?

?

1.3 鍵盤掃描碼

  一個基本按鍵的掃描碼由3個字節組成,1個字節的接通掃描碼和2個字節的斷開掃描碼。其中第一與第三個字節相同,中間字節是斷開標志F0H。例如B鍵的接通掃描碼是32H,斷開掃描碼是F0H 32H。B鍵被按下時,32H被發送出去,如果一直按住不放,則鍵盤將以按鍵重復率不停地發送32H,直到該鍵釋放,才發出斷開掃描碼F0H 32H。掃描碼與按鍵的位置有關,與該鍵的ASCII碼并無對應關系。鍵盤上還有部分擴展鍵(功能鍵和控制鍵等),這些鍵的掃描碼由5個字節組成。與基本鍵的掃描碼相比,接通掃描碼與斷開掃描碼前各多了一個固定值字節E0H。例如Home鍵的接通掃描碼是E0H 70H,斷開掃描碼是E0H F0H 70H。還有兩個特殊鍵,PrintScreen鍵的接通掃描碼是E0H 12H E0H 7CH;斷開掃描碼是E0H F0H 7CH E0H F0H 12H,PauseBreak鍵的接通掃描碼是E1H 14H 77H E1H F0H 14H F0H 77H,無斷開掃描碼。

1.4 通信命令字

  除了鍵盤可以向計算機發送按鍵的掃描碼外,計算機還可以向鍵盤發送預定的命令字來對鍵盤功能進行設定。

1.4.1 計算機發往鍵盤的命令

  EDH:設置狀態指示燈。該命令用來控制鍵盤上3個指示燈NumLock、ScrollLock、CapLock的亮滅。EDH發出后,鍵盤將回應計算機一個收到應答信號FAH,然后等待計算機發送下一個字節,該字節決定各指示燈的狀態。

  Bit0控制ScrollLock;

  Bit1控制NumLock;

  Bit2控制CapLock;

  Bit3~Bit7必須為0,否則鍵盤認為該字節是無效命令,將返回FEH,要求重發。

  EEH:回送響應。該命令用于輔助診斷,要求鍵盤收到EEH后也回送EEH予以響應。

  F0H:設置掃描碼。鍵盤收到該命令后,將回送收到信號FAH,并等待下一命令字節,該字節的值01~03將決定鍵盤使用三種掃描碼中的哪一種。上電復位時,鍵盤默認掃描碼類型是02,本文所舉的例子皆為此類型掃描碼。不同類型的掃描碼與不同類型的微機相匹配。01類型掃描碼由兩字節組成,分別為接通掃描碼和斷開掃描碼;03類型掃描碼只有一個字節,為接通掃描碼。

  F3H:設置鍵盤重復速率。計算機發送該命令后,鍵盤將回送收到信號FAH,然后等待計算機的第二個字節,該字節決定按鍵的重復速率。

  F4H:鍵盤使能。計算機發該命令給鍵盤后,將清除鍵盤發送緩沖區,重新使鍵盤工作,并返回收到信號FAH。

  F5H:禁止鍵盤。計算機發該命令給鍵盤后,將使鍵盤復位,并禁止鍵盤掃描。鍵盤將返回收到信號FAH。

  FEH:重發命令。鍵盤收到此命令后,將會把上次發送的最后一個字節重新發送。

  FFH:復位鍵盤。此命令將鍵盤復位。若復位成功,鍵盤回送收到信號FAH和復位完成信號AAH。

1.4.2 鍵盤發往計算機的命令

??? 00H:出錯或緩沖區已滿。

  AAH:電源自檢通過。BAT(基本保證測試)完成。

  EEH:回送響應。

  FAH: 響應信號。鍵盤每當收到計算機的命令后,都會發此響應信號。

  FEH:重發命令。計算機收到此命令后,將會把上次發送的最后一個命令字節重新發送。

  FFH:出錯或緩沖區已滿。

2 鍵盤與單片機的接口電路及程序

  采用Atmel89C51單片機與標準鍵盤接口電路如圖4所示。口線P1.0和P1.1分別連接SCK和SIO,單片機的口線是上拉輸出形式,可以和鍵盤的通信線直接相連,由軟件控制口線產生收發時序。

?

?

  應用程序使用Franklin C51編寫。在程序中,單片機采用查詢方式檢測數據線狀態。如果數據線變為低電平,說明鍵盤即將有數據發出,則調用讀鍵盤子程序" title="子程序">子程序receive_data讀取一個字節數據;若要發命令字給鍵盤,單片機則調用子程序send_data來完成。

  單片機讀取來自鍵盤數據的子程序如下,該程序接收一個字節數據存放在變量from_kb中,并將該值返回到主程序,校驗位放在全局位變量p_bit中。

#include

sbit?? ??? sio=P1^1; ????  ???????????? /*數據線*/

sbit?????? sck=P1^0;?????????  ???????? /*時鐘線*/

sbit?????? ACC_7=ACC^7;

sbit?????? ACC_0=ACC^0;

bit???????? p_bit;???????????????  ???? /*檢驗位*/

char receive_data(void)

  {???char??????? i;

    char??from_kb;???? ??????????   /*放接收到的數據*/

????  while(sck);

????  while(!sck);?????????? ??     /*放棄起始位*/

????  for(i=0;i<8;i++) ????????????   /*讀取數據字節*/

????  { while(sck);?????????????????????/*下降沿讀取數據*/

????  from_kb>>=1;

????  ACC=from_kb;

????  ACC_7=sio;

????  from_kb=ACC;??????????

???   while(!sck);

}

  while(sck);

  p_bit=sio;???? ? ????????????????? /*讀取校驗位*/

  while(!sck);???????????

  while(sck);????????????? ???????? /*略去讀停止位*/

  while(!(sck&sio));??????????????? /*等待時鐘線與數據線都釋放*/

????return(from_kb);

}

  下列程序是89C51單片機發送一個命令字節給鍵盤的子程序。要發送的命令字由主程序傳送,并存于變量to_kb中,該程序按照接口時序通過口線將命令字節傳送給鍵盤。

void send_to_kb(char??? to_kb)???? using 1

{???? char??????? i;

?????? ACC=to_kb;

?????? p_bit=!P;???????     ??? /*對發送字節進行奇校驗,

????????????????????????????????????????? ?校驗結果放在p_bit中*/

?????? sck=0;??????????????????????? /*將時鐘線拉低*/

?????? for(i=0;i<60;i++);?     /*時鐘線低電平保持60μs

??????????????????????????? ????    以上,以禁止鍵盤往外發數據*/

?????? sio=0;????????? ???????????   /*通知鍵盤接受命令字節,

?????????????????????????????????????? 同時也作為起始位*/

?????? sck=1;???????? ???????????   /*釋放時鐘線,以在鍵盤發

???????????????????? ???        出的時鐘信號同步下,發送命令字*/

?????? for(i=0;i<8;i++)???????????  /*發送命令字節*/

????????????? {???? while(sck);

???????????????????? while(!sck);???? /*上升沿發數據*/

???????????????????? ACC=to_kb;

????????????? sio=ACC_0;

????????????? to_kb>>=1;

}

  while(sck);

  while(!sck);

  sio=p_bit;???????????????????????? /*發送奇校驗位*/

  while(sck);

  while(!sck);???????????

  sio=1;???????????????????????????? /*釋放數據線*/

}

  單片機的嵌入式應用中有些需要進行大量的文字輸入、參數修改和數值設定等操作。通常的方法是在電路中設計鍵盤電路、鍵盤接口和按鍵程序,這不僅占用許多硬件資源,而且由于鍵掃描處理程序一般都很龐大,軟件開銷也很大。如果在儀器上預留一個標準鍵盤接口,改用微機鍵盤對儀器儀表進行操作,則不僅占用系統資源少,成本低廉,而且微機鍵盤的鍵資源特別豐富,也給操作帶來極大方便。本方法在學校打鈴微電腦定時控制器中被采用,使得時間調整和上百組打鈴設置操作變得非常容易。

?

參考文獻

1 熊 寧,王景波.微機鍵盤通信方式及其編程.寧夏大學學報(自然科學版 ),1997;(12)

2 榮 振,梁 華,王春生.單片機擴展標準微機鍵盤技術.微型機與應用,2000;19(7)

3 于印泉,佴曉東,王兆娟.單片機與PC鍵盤接口,內燃機車,2000;(5)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美怡红院视频一区二区三区| 欧美不卡福利| 亚洲一区二区免费视频| 欧美亚洲综合网| 亚洲欧美一区二区原创| 免费观看在线综合| 欧美激情视频在线免费观看 欧美视频免费一| 夜夜嗨av一区二区三区四季av| 亚洲区一区二区三区| 国产日韩视频| 欧美精品在线观看一区二区| 国产精品亚洲人在线观看| 夜夜躁日日躁狠狠久久88av| 国产精品乱码人人做人人爱| 欧美激情一区二区| 国产亚洲va综合人人澡精品| 久久精品99国产精品日本| 亚洲一区二区三区四区在线观看| 亚洲国产一区二区在线| 欧美伊人久久久久久久久影院| 999亚洲国产精| 欧美三级日韩三级国产三级| 国产精品视频99| 国产一在线精品一区在线观看| 国产在线视频欧美| 亚洲国产另类 国产精品国产免费| 亚洲日本激情| 欧美成人精品h版在线观看| 欧美日韩人人澡狠狠躁视频| 久久精品国产69国产精品亚洲| 久久激情综合| 久久久精品国产免费观看同学| 亚洲精品国产精品久久清纯直播| 欧美在线视频观看| 黑人巨大精品欧美一区二区小视频| 欧美日韩激情小视频| 国产九九精品视频| 奶水喷射视频一区| 亚洲精品久久久久| 欧美女人交a| 久久综合电影一区| 欧美乱大交xxxxx| 欧美福利在线| 伊人色综合久久天天| 亚洲自拍偷拍福利| 欧美日韩精品国产| 免费成人av在线看| 亚洲黄色毛片| 麻豆国产va免费精品高清在线| 久久高清国产| 怡红院精品视频| 欧美在线日韩在线| 国产精品综合久久久| 狠狠色狠狠色综合日日五| 一区二区三区欧美亚洲| 亚洲影院色无极综合| 国产三级精品三级| 曰本成人黄色| 欧美精品国产精品日韩精品| 国外成人在线| 99re6这里只有精品视频在线观看| 欧美电影免费观看大全| 一本色道久久88综合亚洲精品ⅰ| 国产欧美综合一区二区三区| 国产香蕉97碰碰久久人人| 一区免费在线| 国模吧视频一区| 亚洲视频在线观看视频| 国产精品最新自拍| 国产精品久久久久久影院8一贰佰| 欧美日韩国产在线看| 久久美女性网| 亚洲高清视频中文字幕| 在线亚洲+欧美+日本专区| 国产乱码精品1区2区3区| 黑人一区二区三区四区五区| 久久久精品日韩| 中文无字幕一区二区三区| 亚洲第一色中文字幕| 国产精品videosex极品| 亚洲理伦在线| 亚洲欧美一区二区三区久久| 日韩视频精品| 蜜臀a∨国产成人精品| 国产欧美1区2区3区| 欧美一区二区日韩一区二区| 国产精品美女主播在线观看纯欲| 欧美激情一区| 国产精品久久久久影院色老大| 日韩午夜剧场| 欧美国产精品v| 久久se精品一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲国产高清视频| 欧美成人免费va影院高清| 亚洲激情午夜| 欧美精品九九99久久| 久久久www成人免费无遮挡大片| 欧美日韩国产影片| 欧美一区二区三区喷汁尤物| 欧美午夜大胆人体| 在线亚洲欧美专区二区| 欧美大片在线看| 免费成人在线观看视频| 久久黄色影院| 国产一级一区二区| 99视频在线精品国自产拍免费观看| 欧美视频一区二区三区四区| 亚洲欧美激情一区二区| 欧美日韩国产电影| 亚洲国产婷婷综合在线精品| 亚洲高清不卡在线| 国产亚洲一区精品| 六月婷婷一区| 久久亚洲图片| 国产精品日本欧美一区二区三区| 亚洲视频免费在线观看| 欧美激情按摩| 亚洲风情亚aⅴ在线发布| 欧美日韩国产综合视频在线观看| 久久精品免费播放| 久久久噜噜噜久久中文字免| 亚洲第一天堂无码专区| 欧美日韩三级| 亚洲福利视频一区| 欧美精品97| 亚洲视频中文字幕| 亚洲美女视频在线免费观看| 国产欧美一区二区色老头| 免费成人美女女| 欧美一区二区在线视频| 亚洲精品乱码久久久久久按摩观| 久久综合色8888| 伊人夜夜躁av伊人久久| 国语自产在线不卡| 久久精品2019中文字幕| 亚洲久久在线| 亚洲一区二区三区777| 欧美自拍偷拍午夜视频| 久久手机免费观看| 亚洲一区在线观看免费观看电影高清| 亚洲综合好骚| 欧美国产一区二区| 一二三四社区欧美黄| 亚洲一区二区av电影| 欧美精品一区二区在线观看| 在线观看视频免费一区二区三区| 欧美777四色影视在线| 欧美日韩直播| 美女主播视频一区| 亚洲福利小视频| 国产主播在线一区| 蜜臀av性久久久久蜜臀aⅴ| 国产一区二区三区在线观看网站| 韩日精品中文字幕| 一区二区久久久久| 玖玖视频精品| 亚洲高清不卡在线| 国产精品成人免费精品自在线观看| 国产精品试看| 韩国成人福利片在线播放| 欧美国产精品久久| 欧美国产精品v| 欧美在线视频播放| 亚洲视频精品| 亚洲精品乱码久久久久久日本蜜臀| 亚洲视频自拍偷拍| 欧美福利电影在线观看| 91久久久久久久久| 亚洲欧洲综合| 99视频一区二区三区| 亚洲欧美日韩精品| 一区二区久久久久久| 亚洲三级网站| 国产精品免费一区豆花| 亚洲电影第三页| 亚洲国产高清视频| 国产精品嫩草影院一区二区| 午夜免费电影一区在线观看| 国外成人性视频| 蜜臀av在线播放一区二区三区| 国产日韩精品在线观看| 久久久爽爽爽美女图片| 亚洲一区二区伦理| 国产精品你懂的在线| 欧美一区二区国产| 性色av一区二区三区| 欧美激情第4页| 亚洲网站在线观看| 国产真实乱子伦精品视频| 亚洲三级免费电影| 午夜亚洲福利在线老司机| 国产色产综合色产在线视频| 欧美精品一二三| 国产精品白丝jk黑袜喷水| 在线成人性视频| 欧美日韩综合一区| 欧美日韩免费高清一区色橹橹| 一区二区三区 在线观看视频| 国产拍揄自揄精品视频麻豆| 亚洲国产你懂的| 影音先锋久久精品| 欧美精品在线视频| 久久久91精品国产一区二区三区| 亚洲欧美日韩第一区| 午夜精品亚洲一区二区三区嫩草| 99视频国产精品免费观看| 免费一级欧美片在线播放| 亚洲欧洲中文日韩久久av乱码| 韩国成人精品a∨在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲午夜一级| 亚洲午夜久久久久久久久电影网| 久久九九久精品国产免费直播| 欧美日韩亚洲系列| 伊人精品视频| 久久精品综合网| 狠狠色丁香婷婷综合久久片| 激情久久久久久| 国内精品免费午夜毛片| 亚洲乱码国产乱码精品精98午夜| 羞羞漫画18久久大片| 欧美在线观看视频| 欧美中文字幕久久| 欧美chengren| 一本色道久久99精品综合| 国产精品美女久久久免费| 欧美亚洲在线视频| 日韩一区二区高清| 欧美日本不卡视频| 国产精品福利av| 香蕉成人啪国产精品视频综合网| 国产精品视频久久一区| 国产精品99久久久久久有的能看| 国产精品久久二区| 久久久综合激的五月天| 久久精品视频在线| 玖玖国产精品视频| 国产精品99久久99久久久二8| 看欧美日韩国产| 国产在线麻豆精品观看| 欧美日韩另类字幕中文| 欧美紧缚bdsm在线视频| 国产精品高潮久久| 国产精品推荐精品| 亚洲高清视频的网址| 国产精品99久久不卡二区| 久久综合亚州| 国内精品久久久久久| 国产亚洲精品aa午夜观看| 亚洲第一区在线观看| 免费成人网www| 亚洲精品一区二区三区在线观看| 亚洲国产日韩在线一区模特| 麻豆成人91精品二区三区| 亚洲一区二区三区在线播放| 亚洲视频在线观看网站| 亚洲动漫精品| 亚洲午夜女主播在线直播| 国产一区二区视频在线观看| 欧美精品尤物在线| 久久久久久黄| 亚洲一区二区欧美日韩| 亚洲一区三区在线观看| 99亚洲一区二区| 狠狠狠色丁香婷婷综合激情| 亚洲欧美在线高清| 国产精品久久精品日日| 正在播放亚洲| 日韩视频精品| 国产日韩精品在线播放| 久久精品国产清高在天天线| 国内自拍一区| 羞羞视频在线观看欧美| 国产美女精品视频免费观看| 午夜精品在线观看| 国产午夜精品久久久| 亚洲手机成人高清视频| 欧美婷婷在线| 欧美jizzhd精品欧美喷水| 久久久久九九视频| 欧美福利视频一区| 午夜一区二区三区不卡视频| 国内免费精品永久在线视频| 国产精品免费视频xxxx| 欧美精品情趣视频| 久久精品亚洲精品国产欧美kt∨| 久久久在线视频| 久久久www成人免费无遮挡大片| 久久综合亚洲社区| av成人手机在线| 欧美日韩亚洲一区二区| 欧美精品福利在线| 亚洲美女av在线播放| 国产精品系列在线| 91久久综合亚洲鲁鲁五月天| 免费不卡在线观看| 在线一区视频| 亚洲精品一二区| 久久久久久亚洲综合影院红桃| 欧美精品在线网站| 国产伦一区二区三区色一情| 欧美一区视频| 欧美 日韩 国产一区二区在线视频| 国产欧美日韩精品丝袜高跟鞋| 国产精品亚洲产品| 欧美日韩麻豆| 91久久精品一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 亚洲第一黄色| 欧美一区二区三区免费看| 麻豆91精品91久久久的内涵| 在线亚洲+欧美+日本专区| 久久亚裔精品欧美| 精品成人在线| 日韩视频―中文字幕| 中文国产成人精品久久一| 亚洲乱码国产乱码精品精天堂| 黄网站免费久久| 狠狠久久五月精品中文字幕| 狠狠久久亚洲欧美专区| 欧美日韩在线视频首页| 欧美日韩在线精品一区二区三区| 亚洲久久一区二区| 女仆av观看一区| 国产日本精品| 国产欧美日韩免费看aⅴ视频| 欧美私人网站|