摘要:文中詳細介紹了PS/2接口協(xié)議的內容、電氣特性和標準鍵盤的第二套鍵盤掃描碼集。給出了基于嵌入式系統(tǒng)的PS/2接口的軟、硬件實現(xiàn)方法,并介紹了工控PC外接雙鍵盤的解決方案。通過使用模擬開關CD4052巧妙地解決了工控PC外接雙鍵盤的沖突問題。
關鍵詞:PS/2接口;串行通訊;單片機;鍵盤;CD4052
1 PS/2接口標準的發(fā)展過程
隨著計算機工業(yè)的發(fā)展,作為計算機最常用輸入設備的鍵盤也日新月異。1981年IBM推出了IBM PC/XT鍵盤及其接口標準。該標準定義了83鍵,采用5腳DIN連接器和簡單的串行協(xié)議。實際上,第一套鍵盤掃描碼集并沒有主機到鍵盤的命令。為此,1984年IBM推出了IBM AT鍵盤接口標準。該標準定義了84~101鍵,采用5腳DIN連接器和雙向串行通訊協(xié)議,此協(xié)議依照第二套鍵盤掃描碼集設有8個主機到鍵盤的命令。到了1987年,IBM又推出了PS/2鍵盤接口標準。該標準仍舊定義了84~101鍵,但是采用6腳mini-DIN連接器,該連接器在封裝上更小巧,仍然用雙向串行通訊協(xié)議并且提供有可選擇的第三套鍵盤掃描碼集,同時支持17個主機到鍵盤的命令,F(xiàn)在,市面上的鍵盤都和PS/2及AT鍵盤兼容,只是功能不同而已。

2 PS/2接口硬件
2.1 物理連接器
一般,具有五腳連接器的鍵盤稱之為AT鍵盤,而具有六腳mini-DIN連接器的鍵盤則稱之為PS/2鍵盤。其實這兩種連接器都只有四個腳有意義。它們分別是Clock(時鐘腳)、Data數據腳、+5V(電源腳)和Ground(電源地)。在PS/2鍵盤與PC機的物理連接上只要保證這四根線一一對應就可以了。PS/2鍵盤靠PC的PS/2端口提供+5V電源,另外兩個腳Clock(時鐘腳)和Data數據腳都是集電極開路的,所以必須接大阻值的上拉電阻。它們平時保持高電平,有輸出時才被拉到低電平,之后自動上浮到高電平,F(xiàn)在比較常用的連接器如圖1所示。
2.2 電氣特性
PS/2通訊協(xié)議是一種雙向同步串行通訊協(xié)議。通訊的兩端通過Clock(時鐘腳)同步,并通過Data(數據腳)交換數據。任何一方如果想抑制另外一方通訊時,只需要把Clock(時鐘腳)拉到低電平。如果是PC機和PS/2鍵盤間的通訊,則PC機必須做主機,也就是說,PC機可以抑制PS/2鍵盤發(fā)送數據,而PS/2鍵盤則不會抑制PC機發(fā)送數據。一般兩設備間傳輸數據的最大時鐘頻率是33kHz,大多數PS/2設備工作在10~20kHz。推薦值在15kHz左右,也就是說,Clock(時鐘腳)高、低電平的持續(xù)時間都為40μs。每一數據幀包含11~12個位,具體含義如表1所列。
表1 數據幀格式說明
| 1個起始位 | 總是邏輯0 |
| 8個數據位 | (LSB)低位在前 |
| 1個奇偶校驗位 | 奇校驗 |
| 1個停止位 | 總是邏輯1 |
| 1個應答位 | 僅用在主機對設備的通訊中 |
表中,如果數據位中1的個數為偶數,校驗位就為1;如果數據位中1的個數為奇數,校驗位就為0;總之,數據位中1的個數加上校驗位中1的個數總為奇數,因此總進行奇校驗。
2.3 PS/2設備和PC機的通訊
PS/2設備的Clock(時鐘腳)和Data數據腳都是集電極開路的,平時都是高電平。當PS/2設備等待發(fā)送數據時,它首先檢查Clock(時鐘腳)以確認其是否為高電平。如果是低電平,則認為是PC機抑制了通訊,此時它必須緩沖需要發(fā)送的數據直到重新獲得總線的控制權(一般PS/2鍵盤有16個字節(jié)的緩沖區(qū),而PS/2鼠標只有一個緩沖區(qū)僅存儲最后一個要發(fā)送的數據)。如果Clock(時鐘腳)為高電平,PS/2設備便開始將數據發(fā)送到PC機。一般都是由PS/2設備產生時鐘信號。發(fā)送時一般都是按照數據幀格式順序發(fā)送。其中數據位在Clock(時鐘腳)為高電平時準備好,在Clock(時鐘腳)的下降沿被PC機讀入。PS/2設備到PC機的通訊時序如圖2所示。
當時鐘頻率為15kHz時,從Clock(時鐘腳)的上升沿到數據位轉變時間至少要5μs。數據變化到Clock(時鐘腳)下降沿的時間至少也有5 μs,但不能大于25 μs,這是由PS/2通訊協(xié)議的時序規(guī)定的。如果時鐘頻率是其它值,參數的內容應稍作調整。
上述討論中傳輸的數據是指對特定鍵盤的編碼或者對特定命令的編碼。一般采用第二套掃描碼集所規(guī)定的碼值來編碼。其中鍵盤碼分為通碼(Make)和斷碼(Break)。通碼是按鍵接通時所發(fā)送的編碼,用兩位十六進制數來表示,斷碼通常是按鍵斷開時所發(fā)送的編碼,用四位十六進制數來表示。
3 PS/2接口的嵌入式軟件編程方法
PS/2設備主要用于產生同步時鐘信號和讀寫數據。
3.1 PS/2向PC機發(fā)送一個字節(jié)





