《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 單片機系統與標準PC鍵盤的接口模塊設計
單片機系統與標準PC鍵盤的接口模塊設計
摘要: 點該模塊在PC鍵盤與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤進行數據和命令交互的復雜過程,大大簡化了上位單片機系統的輸入設計;它實現了類似DOS操作系統中鍵盤中斷服務程序的功能,使設計人員只需關心接收按鍵的結果,并可使用標準的鍵盤編碼進行編程;它要求上位單片機通過8位并行接口與其相接,對于不能提供并行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對于那些希望占用單片機的系統資源少而需要擴展的鍵數較多、儀器整體需要美觀大方的應用場合,其性能價格比更具優勢。
Abstract:
Key words :

       接口模塊的特

       點該模塊在PC鍵盤與上位單片機之間起轉換作用,它屏蔽了與PC鍵盤進行數據和命令交互的復雜過程,大大簡化了上位單片機系統的輸入設計;它實現了類似DOS操作系統中鍵盤中斷服務程序的功能,使設計人員只需關心接收按鍵的結果,并可使用標準的鍵盤編碼進行編程;它要求上位單片機通過8位并行接口與其相接,對于不能提供并行接口的系統,可使用SPI兼容的同步串行接口與其相接,特別是對于那些希望占用單片機的系統資源少而需要擴展的鍵數較多、儀器整體需要美觀大方的應用場合,其性能價格比更具優勢。該模塊與單片機系統的連接關系如圖1所示,在圖中也給出與上位單片機相接的20腳接插件的信號定義。

模塊與上位單片機系統的連接關系及信號定義

                     

 

              圖1 該模塊與上位單片機系統的連接關系及信號定義 

       計算機中標準PC機鍵盤的工作原理

       鍵盤與主機通過鍵盤插頭相接,鍵盤插頭有5芯大插頭和6芯小插頭(PS/2接口)兩種。接口信號有:電源、地、鍵盤時鐘KB_CLK、鍵盤數據KB_DAT。正常工作時,鍵盤電路不斷地掃描鍵盤矩陣。若有鍵按下,則以串行方式發送按鍵的位置掃描碼給主板鍵盤接口電路。按下鍵時,發送接通掃描碼,松開鍵時,發送該鍵的斷開掃描碼。斷開掃描碼一般是在接通掃描碼前加一個斷開標志字節F0H。若某鍵一直按下,則以按鍵重復率連續發送該鍵的接通掃描碼。掃描碼與按鍵的位置有關,與該鍵的ASCII碼并無對應關系。表1第二列給出經實際測試得到的若干按鍵的位置掃描碼。由表1可見,根據鍵的按下或釋放及所按鍵的不同,這個序列可以是1、2、3、4、6、或8字節,可稱之為位置掃描碼序列。

       標準鍵盤與主機的通信是雙向的,并采用11位的串行異步通信格式,這11位數據包括:起始位0、8位數據位(LSB在先)、奇校驗位P、停止位1。圖2(a)給出了鍵盤發送時序。數據(KB_DAT)在時鐘(KB_CLK)的上升沿改變,下降沿時有效,可被主機讀取。圖2(b)給出鍵盤接收時序。主機發送前,先將KB_CLK拉低,以抑制鍵盤發送,再將KB_DAT拉低發送起始位,然后釋放KB_CLK線,鍵盤接管KB_CLK并產生時鐘信號,主機在KB_CLK信號同步下發送其他位。

 

鍵盤接口時序(a) 鍵盤發送時序;(b) 鍵盤接收時序

                                    圖2 鍵盤接口時序(a) 鍵盤發送時序;(b) 鍵盤接收時序

       標準PC鍵盤接口模塊的工作原理

       基本工作原理概述

       該模塊的原理框圖如圖3所示。PC鍵盤與該模塊通過專用插座相連,數據KB_DAT接到AT89C2051的P3.0引腳,時鐘KB_CLK接到引腳。在PC鍵盤有鍵按下時,KB_CLK信號會引起AT89C2051的連續中斷,通過定時器T0與外中斷的協同工作,可將PC鍵盤發出的位置掃描碼序列接收至緩沖區中。然后,在主程序中將位置掃描碼解碼、查表換算,再編碼成一字節的WINDOWS虛擬鍵代碼或兩字節的OEM掃描碼與ASCII碼,并存入系統中FIFO棧。在上位單片機可以接收新鍵值時,將FIFO棧中編碼數據以并行或串行方式傳送給上位單片機。

單片機系統與標準PC鍵盤接口模塊原理框圖

                                      圖3 單片機系統與標準PC鍵盤接口模塊原理框圖

       為了能更清楚地指示系統當前的工作狀態,在硬件上加裝了電源、正在解碼、FIFO棧溢出、碼值準備好等指示燈。

       中斷解碼的工作原理

       由于鍵盤的按鍵輸入是隨機的,為了能實時地響應,在程序中使用定時器T0中斷和中斷協同工作,將位置掃描碼序列恢復至鍵盤接收緩沖區中。中斷服務程序用來將碼值的一位移入緩沖區中,T0溢出的中斷服務程序主要用來判斷一次按鍵所發出的碼是否已全部接收。系統設置T0的定時間隔為5ms,并在系統啟

 

動后就開始定時。由于在正常接收每個按鍵的碼值序列過程中,鍵盤發送的每位數據間隔不會大于5ms,因此在每次中斷服務中,首先要判斷T0是否溢出過,若曾經溢出,則認為該次中斷是一次新碼值接收的開始,需將位計數器清零,否則只需移入一位數據即可,然后重新啟動定時器,退出中斷服務程序。在新按鍵碼值序列接收完成后,設置blnDataValid標志,以通知主程序。

       主程序的工作原理

       主程序主要有四個任務:

       ①將鍵盤接收緩沖區的位置掃描碼通過查表等算法換成統一編碼的一個字節Windows虛擬鍵代碼或兩個字節的OEM掃描碼與ASCII碼;

       ②根據系統中CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態信息控制鍵盤上三個指示燈的亮滅;

       ③系統中設立的FIFO棧的維護;

       ④與上位單片機碼值傳送的握手交互過程。

       主程序的流程圖如圖4所示。在主程序中檢測到blnDataValid標志后,即說明在鍵盤接收緩沖區中已接收到一個新的位置掃描碼序列,程序根據這個序列的不同特點做不同的處理,最后再根據硬件跳線的設置得到相應按鍵的Windows虛擬鍵代碼或ASCII碼與OEM掃描碼,圖4中的跳線接至“W”位時,編碼為Windows虛擬鍵代碼。虛擬鍵代碼是Windows系統中引入的一組按鍵編碼常量,每一個按鍵都有惟一的碼值與之對應。ASCII碼與OEM掃描碼則是在DOS系統定義的,但在Windows系統中沿用的按鍵碼值定義,每一個按鍵都有兩個碼值與之對應,對于功能鍵,例如F1、HOME、UP等,只存在OEM掃描碼,其ASCII碼為0。

 

主程序流程圖

                                                                 圖4 主程序流程圖

       FIFO棧是程序中設置的發送緩沖區,它是按“先進先出”原則建立的32字節循環隊列,有一個隊列頭指針和一個隊列尾指針。進隊列時,編碼數據進入由隊列尾指針所指單元,同時隊列尾指針增量,指向下一個單元,當數據不斷進入隊列,使尾指針指向隊列末端時,尾指針循環重新繞回隊列始端;出隊列時,編碼數據從隊列頭指針所指的單元取出,同時隊列頭指針增量,指向下一個單元,在頭指針指向隊列末端時,也要重新繞回隊列始端,但頭指針始終不能“超過”尾指針。如果按鍵速度快于上位單片機接收碼值的速度,有可能尾指針繞回后與頭指針再次相等,這時表明隊列已滿,不能再存入數據,如果此時再有鍵按下,那么棧溢出指示燈將點亮。
       在系統中設立了三個標志分別對應于CAPS LOCK鍵、NUM LOCK鍵及SCROLL LOCK鍵的狀態,每次有這三個鍵按下時,程序都要翻轉相應標志,然后向鍵盤發送EDH命令,命令鍵盤對其上的三個LED指示燈做相應激勵。

       在向上位單片機發送FIFO棧首的碼值之前要先檢測ACK信號狀態以確定上位單片機是否已取走上次碼值。若ACK信號有效,則將碼值鎖存在P1口上,然后由P3.7產生模擬的時鐘脈沖信號,一方面將8位并行碼值置入串-并轉換芯片(74LS165)中,另一方面將觸發器(74LS74)置為1,使端變為0,為上位單片機提供碼值準備好(PS_READY#)的狀態信號,并點亮指示燈。在上位單片機中,可查詢此狀態信號也可利用此狀態信號申請中斷。上位單片機若采用并行接口方法,則發出讀緩沖器信號(P_RD#)和片選信號(P_CS#),便可通過三態緩沖器(74LS244)取得鍵值;若采用串行接口方法,則需發出串行時鐘(S_CLK),從74LS165的串行數據端(S_DAT)讀回8位碼值。在上位單片機讀取完當前的鍵值后,ACK信號將由握手邏輯自動置為有效,系統可通過檢測ACK信號的狀態以發送下一個碼值。


       結語

       實踐證明應用該模塊不但可大大地簡化鍵盤輸入電路及程序設計,而且在使用高級語言書寫程序時更加方便。該模塊可識別標準PC鍵盤上的所有按鍵,并能自動考慮SHIFT、NUMLOCK及CAPLOCK鍵對編碼的影響。對于DOS系統中CRTL+按鍵、ALT+按鍵等組合鍵,該模塊并未考慮,但相對上位的單片機系統而言,目前所提供的按鍵數量已足夠用了。

參考文獻
1 榮振,梁華,王春生.單片機擴展標準微機鍵盤的技術.微型機與應用,2000(7)
2 于印泉,佴曉東,王兆娟.單片機與PC鍵盤接口.內燃機車,2000(5)

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美成在线视频| 亚洲一区精品在线| 国产精品一区二区久久| 亚洲欧美欧美一区二区三区| 亚洲午夜精品久久久久久浪潮 | 正在播放日韩| 国产精品婷婷| 久久只精品国产| 99视频精品在线| 亚洲综合日韩在线| 国产伊人精品| 欧美好吊妞视频| 亚洲欧美日韩国产一区| 欧美综合国产| 日韩视频不卡中文| 国产日韩欧美高清免费| 欧美14一18处毛片| 亚洲淫片在线视频| 久久精品二区亚洲w码| 亚洲欧洲精品一区二区三区不卡 | 国产精品综合久久久| 欧美在线视频一区二区| 亚洲激情视频网站| 亚洲视频专区在线| 精品动漫3d一区二区三区免费版| 欧美国产日本在线| 校园激情久久| 亚洲精品一级| 亚洲一区日本| 亚洲国产女人aaa毛片在线| 欧美视频中文一区二区三区在线观看| 欧美亚洲日本国产| 亚洲国产欧美在线| 亚洲免费观看高清完整版在线观看| 国产乱人伦精品一区二区| 免费高清在线一区| 亚洲免费视频一区二区| 亚洲韩国一区二区三区| 亚洲免费中文字幕| 亚洲精品国产精品久久清纯直播| 国产美女精品| 欧美日韩国产电影| 久久五月婷婷丁香社区| 亚洲在线中文字幕| 亚洲精选视频在线| 久久精品成人一区二区三区| 这里只有精品视频在线| 亚洲激情在线观看| 国产综合欧美在线看| 国产精品国产三级国产专播精品人 | 亚洲免费福利视频| 欧美一区二区精品在线| 一区二区欧美激情| 亚洲黄色视屏| 韩国av一区| 国产欧美一区二区三区久久人妖 | 极品av少妇一区二区| 国产精品自在线| 欧美三区免费完整视频在线观看| 美国成人直播| 久久国产精品网站| 亚洲欧美网站| 亚洲专区在线| 一本一本久久| 亚洲人永久免费| 亚洲夫妻自拍| 久久精品99国产精品日本| 亚洲欧美文学| 亚洲一区二区精品| 亚洲视频一区在线| 一本到高清视频免费精品| 亚洲欧洲日产国码二区| 狠狠色综合网| 韩国在线一区| 国语自产精品视频在线看一大j8| 国产婷婷色一区二区三区在线| 国产精品网站在线播放| 国产精品久久久久久久第一福利| 欧美日韩精品免费观看| 免费国产自线拍一欧美视频| 久久嫩草精品久久久久| 久久躁日日躁aaaaxxxx| 久久人人看视频| 噜噜噜躁狠狠躁狠狠精品视频| 欧美在线视频二区| 久久成人在线| 久久久www成人免费无遮挡大片| 久久成人一区| 久久精品在线观看| 久久久久成人精品| 久久综合精品国产一区二区三区| 久久伊人一区二区| 嫩草影视亚洲| 欧美成人在线免费视频| 欧美精品三级| 欧美视频一区二区三区| 国产精品九九久久久久久久| 国产精品九九| 国产日韩三区| 伊人成综合网伊人222| 在线观看中文字幕亚洲| 91久久精品国产91久久性色| 亚洲国产精品高清久久久| 亚洲日本在线视频观看| 一区二区三区高清不卡| 午夜久久一区| 亚洲高清不卡| 日韩一级在线观看| 亚洲视频成人| 性18欧美另类| 久久午夜电影| 欧美精品九九| 国产精品亚洲综合天堂夜夜| 国内精品久久久久久久果冻传媒| 精品二区视频| 亚洲精品国产无天堂网2021| 一区二区免费看| 欧美亚洲免费电影| 91久久精品国产91久久性色tv| 91久久精品国产91久久性色tv| 一本久道久久久| 欧美一区二区高清| 猫咪成人在线观看| 欧美三级午夜理伦三级中文幕| 国产精品第一区| 国内精品国语自产拍在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 久久久久久久999| 欧美夫妇交换俱乐部在线观看| 欧美精选午夜久久久乱码6080| 国产精品久久久久久超碰 | 亚洲一区二区三区四区五区午夜| 欧美在线视频观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美极品影院| 国产午夜精品视频免费不卡69堂| 亚洲国产成人精品久久久国产成人一区| avtt综合网| 久久精品123| 亚洲欧美激情四射在线日 | 亚洲欧美日本在线| 亚洲视频一区二区在线观看 | 久久久久久久久久看片| 欧美精品色一区二区三区| 国产精品一区二区久久国产| 极品av少妇一区二区| 中文精品在线| 亚洲国产日日夜夜| 新狼窝色av性久久久久久| 欧美精品麻豆| 国内成人在线| 亚洲视频1区| 亚洲精品一级| 久久裸体视频| 国产精品久久久久久户外露出| 亚洲国产日韩欧美在线动漫| 亚洲欧美综合国产精品一区| 夜夜嗨av一区二区三区网页| 老司机久久99久久精品播放免费| 国产精品美女一区二区| 亚洲激情影视| 亚洲国产精品第一区二区| 亚洲综合电影一区二区三区| 欧美激情综合色综合啪啪| 加勒比av一区二区| 亚洲欧美中日韩| 亚洲免费中文字幕| 欧美日韩国产高清| 亚洲激情不卡| 亚洲欧洲一区二区三区在线观看 | 亚洲国产婷婷综合在线精品| 欧美一区二区三区播放老司机| 亚洲一二区在线| 欧美精品在线一区二区三区| 又紧又大又爽精品一区二区| 欧美一级专区免费大片| 午夜日本精品| 国产精品久久久久久久久婷婷| 亚洲国产三级在线| 亚洲国产精品高清久久久| 久久精精品视频| 国产精品入口麻豆原神| 一区二区三区三区在线| 一本色道久久精品| 欧美激情一区二区三区 | 宅男精品视频| 欧美欧美天天天天操| 国产色视频一区| 亚洲已满18点击进入久久| 亚洲午夜免费视频| 欧美精品电影| 国产欧美 在线欧美| 亚洲色诱最新| 国产精品美女在线| 久久久精品2019中文字幕神马| 久久成人在线| 久久久久久午夜| 国产啪精品视频| 香港成人在线视频| 久久精品中文字幕免费mv|