午夜激情影院

你好,游客 登錄 注冊 搜索

背景:
閱讀內容

用單片機設計制作的PS/2標準鍵盤接口

[日期:2012-07-03] 來源:  作者:李冉琦 白麗媛 [字體: ]

  標準PS/2鍵盤在微機中廣泛使用,其性能優異、使用方便、價格低廉。由于此鍵盤接口通信協議簡潔、在系統中占用軟硬件資源少、可靠性高、表達信息量大,因而同樣適合于要求按鍵較多的嵌入式系統。

  1.PS/2協議分析
  
  PS/2通信協議是一種雙向同步串行通信協議。通信的雙方通過CLOCk時鐘腳同步,通過Data數據腳交換數據。PS/2的數據是按幀進行傳輸的,每幀數據有11位(鍵盤對主機)或12位(主機對鍵盤),包括一個起始位、8個數據位(低位在前)、一個校驗位(奇校驗)、一個停止位及一個應答位(僅用于主機對鍵盤的通信)。常用的PS/2連接器如下圖所示。

 

PS/2連接器

  任何一方想抑制另外一方通訊時,只需要把Clock時鐘腳拉到低電平。如果是PC機和PS/2鍵盤間的通訊,則PC機必須做主機。也就是說,PC機可以抑制PS/2鍵盤發送數據,而PS/2鍵盤則不會抑制PC機發送數據。兩設備間傳輸數據的最大時鐘頻率是33kHz,推薦值為l5kHz左右,即Clock時鐘腳高、低電平的持續時間都約為40μs。
  
  (1)PS/2鍵盤到主機的通信
  
  當鍵盤向主機發送數據時,檢查時鐘腳Clock,如果是低電平,則認為是PC機抑制了通訊,此時它必須緩沖需要發送的數據直到重新獲得總線的控制權(一般PS/2鍵盤有16個字節的緩沖區):如果為高電平,PS/2設各使開始按照數據幀格式順序將數據發送到PC機,數據位在時鐘線為高電平時準備好,在時鐘線的下降沿時被主機讀取。
  
  (2)主機到PS/2鍵盤的通信
  
  主機與鍵盤進行通信肘,首先要下拉時鐘線至少1OOμs來抑制通信,然后下拉數據線“請求發送”,最后釋放時鐘線。當鍵盤檢測到上述狀態時,開始產生時鐘信號,并檢測數據線是否為低,為高則認為是錯誤并退出,為低則繼續執行。此時,每一幀數據由12位構成,比鍵盤到主機的數據多一個ACK位。ACK是從設備發出的應答位,ACK位總是為0。主機到鍵盤通信過程中,主機總是在時鐘為低電平時改變數據線的狀態鍵盤則在時鐘的上升沿時讀取數據。
  
  (3)鍵盤命令
  
  主機通過向PS/2鍵盤發送命令來對鍵盤進行設置或獲得鍵盤的狀態。每發送一個字節,主機都會從鍵盤獲得一個應答OxFA(除“重發resend”和“回應echo”命令外)。鍵盤命令包括19個主機到鍵盤的命令和8個鍵盤到主機的回應命令。常用的主機到鍵盤的命令包括:
  
  鍵盤復位命令(reset-HexValue:FF):鍵盤接收到該命令后發送一個ACK位通知主機已收到命令,并等待主機確認收到ACK位,確認過程是主機收到ACK后將時鐘線和數據線置高至少500μs,鍵盤檢測到該狀態后將執行復位操作并進行自檢。
  
  掃描碼集選擇命令(selectaLTErnatesCANcodes-HexValue:FO):主機發送該命令并通過隨后發送的參數字節指示鍵盤選用現有三套掃描碼集中的哪一套,通常使用的是第二套掃描碼集。參數字節為Hex01時使用第一套,為Hex02時使用第二套,為Hex03時使用第三套,為Hex00時為查當前使用的掃描碼集。鍵盤接收到該命令并據其選擇對應的掃描碼集后,會再發送一個字節給主機,告知其當前使用的掃描碼集。設置指示燈狀態命令(set/resetstatusinDICators-HexValue:ED):主機在該命令后接著發送一個參數字節,用于指示鍵盤上numlock、capslock、scrolllockLED的狀態。參數字節的高5位必須為0,低三位由低到高分別為scrolllock、numlock、capslock指示位,置1時對應LED燈亮,置0對應時LED燈滅。
  
  設置機打速率和延時命令(settyPematICrate/delay-HexValue:F3):主機在這條命令后接著發送一個字節參數來定義鍵盤機打的速率和延時。
  
  鍵盤使能命令(enable--HexValue:F4):用于在當主機發送禁止鍵盤命令(HexValue:F5)后,重新使能鍵盤。
  
  回音命令(echo--HexValue:EE):主機發送該命令后,鍵盤應回應一個“EE”宇節。該命令屬于診斷輔助命令,常用于檢測通信是否正常。
  
  (4)鍵碼分析
  
  PS/2鍵盤中的微處理器負責掃描或監視按鍵信息,并發送掃描碼信息包。掃描碼包括通碼和斷碼,當一個鍵被按下或持續按住時,鍵盤會將該鍵的通碼發送給主機,而當一個鍵被釋放時,鍵盤會將該鍵的斷碼發送給主機。例如,對于大寫字母“F”,當接下時通碼是“2B”,彈起時斷碼是“FO,2B”。每個鍵的被分配了唯一的通碼和斷碼,若干個鍵構成的一套通碼和斷碼組合成掃描碼集。標準PC鍵盤普遍采用第二套掃描碼集。
  
  根據掃描碼查找ASCII碼對照表,即可完成掃描碼與ASCII碼的關聯。應當注意的是,鍵盤斷開標志碼FOH和接通碼之間應該有一定的延時間隔(幾十毫秒即可)。

  2.實現原理
  
  用一片AT89C2O5l單片機作PS/2接口控制部件,擴展PS/2接口并配以一些外圍電路來實現PS/2接口協議。擴展l602LCD接口及LCD以顯示PS/2鍵盤所輸入字符。電路如下圖所示,AT89S52單片機可用任何其他嵌入式處理器替換。AT89C2O5l單片機負責實現PS/2接口協議,正確可靠地接收鍵盤發來的數據并與通過中斷方式并行傳送給嵌入式系統。其優點是:獨立的PS/2接口無需過多占用主CPU89522的資源,且通用性強,可以與以任何處理器為核心的嵌入式系統連接。

  當使用鍵盤輸入數據時,PS/2接口首先將串行數據信號和時鐘信號發送給AT89C2O51,如果檢測到起始位,則開始記錄隨后的串行數據,經校驗、串并轉換、緩沖等處理后,向應用系統模塊發送中斷請求和并行數據,該并行數據為除去起始位、停止位以及奇偶校驗位后的8位幀數據。應用系統模塊隨后進行奇偶校驗和數據處理,并提交給上層軟件使用,本設計為提交給LCD顯示程序做屏幕顯示。
  
  當主機向鍵盤發送命令時,應用系統模塊首先通過AT89S52的p3.4引腳向AT89C2O5l單片機發送中斷請求信號和并行命令數據,AT89C2O5l單片機收到中斷請求后進入中斷處理程序,先按時序要求下拉clk和data信號線向PS/2鍵盤請求發送,隨后讀入并行數據,計算出校驗位數值,組合成包含停止位的幀數據,以串行方式發送到data信號線。鍵盤接收到數據后,反饋一個ACK信號給AT89C2O5l單片機。
  
  在以往的工程實例中,往往用MCU口線模擬時序進行接收,即將鍵盤時鐘線接至MCU的中斷線,將數據線接至MCU的任一I/0口,通過查詢DATA的位狀態,來進行通信。該方式實現簡單,不用添加任何硬件,但至少要中斷33次才能完成一次接收,如果系統任務較多,容易導致系統反應遲緩或容易丟失鍵盤數據。用本設計中的設計方法,則很好地解決了這個問題,且通用性強,具有很高的實用價值。

PS/2標準鍵盤接口電路


     往下看有更多相關資料

推薦文章 收藏 推薦 打印 | 整理:lishunyu22 | 閱讀:
查看相關資料       單片機  鍵盤  單片機設計  PS/2 
本文評論   查看全部評論 (0)
表情: 姓名: 字數
點評:
       
評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
專題文章
熱門評論

午夜激情影院