一.電氣特性
1 |
DATA |
Key Data |
2 |
n/c |
Not connected |
3 |
GND |
Gnd |
4 |
VCC |
Power , +5 VDC |
5 |
CLK |
Clock |
6 |
n/c |
Not connected |
二.數據格式
1個起始位 | 總是邏輯0 |
8個數據位 | (LSB)低位在前 |
1個奇偶校驗位 | 奇校驗 |
1個停止位 | 總是邏輯1 |
1個應答位 | 僅用在主機對設備的通訊中 |
表中,如果數據位中1的個數為偶數,校驗位就為1;如果數據位中1的個數為奇數,校驗位就為0;總之,數據位中1的個數加上校驗位中1的個數總為奇數,因此總進行奇校驗。
三.PS/2 發送數據到PC的時序
鍵盤接口時序(a) 鍵盤發送時序;(b) 鍵盤接收時序
注:在時鐘的下降沿讀取數據.以下可做具體寫程序參考
從PS/2向PC機發送一個字節可按照下面的步驟進行:
(1)檢測時鐘線電平,如果時鐘線為低,則延時50μs;
(2)檢測判斷時鐘信號是否為高,為高,則向下執行,為低,則轉到(1);
(3)檢測數據線是否為高,如果為高則繼續執行,如果為低,則放棄發送(此時PC機在向 PS/2設備發送數據,所以PS/2設備要轉移到接收程序處接收數據);
(4)延時20μs(如果此時正在發送起始位,則應延時40μs);
(5)輸出起始位(0)到數據線上。這里要注意的是:在送出每一位后都要檢測時鐘線,以確保PC機沒有抑制PS/2設備,如果有則中止發送;
(6)輸出8個數據位到數據線上;
(7)輸出校驗位;
(8)輸出停止位(1);
(9)延時30μs(如果在發送停止位時釋放時鐘信號則應延時50μs);
通過以下步驟可發送單個位:
(1)準備數據位(將需要發送的數據位放到數據線上);
(2)延時20μs;
(3)把時鐘線拉低;
(4)延時40μs;
(5)釋放時鐘線;
(6)延時20μs。
PS/2設備從PC機接收一個字節
由于PS/2設備能提供串行同步時鐘,因此,如果PC機發送數據,則PC機要先把時鐘線和數據線置為請求發送的狀態。PC機通過下拉時鐘線大于100μs來抑制通訊,并且通過下拉數據線發出請求發送數據的信號,然后釋放時鐘。當PS/2設備檢測到需要接收的數據時,它會產生時鐘信號并記錄下面8個數據位和一個停止位。主機此時在時鐘線變為低時準備數據到數據線,并在時鐘上升沿鎖存數據。而PS/2設備則要配合PC機才能讀到準確的數據。具體連接步驟如下:
(1)等待時鐘線為高電平。
(2)判斷數據線是否為低,為高則錯誤退出,否則繼續執行。
(3)讀地址線上的數據內容,共8個bit,每讀完一個位,都應檢測時鐘線是否被PC機拉低,如果被拉低則要中止接收。
(4)讀地址線上的校驗位內容,1個bit。
(5)讀停止位。
(6)如果數據線上為0(即還是低電平),PS/2設備繼續產生時鐘,直到接收到1且產生出錯信號為止(因為停止位是1,如果PS/2設備沒有讀到停止位,則表明此次傳輸出錯)。
(7 輸出應答位。
(8) 檢測奇偶校驗位,如果校驗失敗,則產生錯誤信號以表明此次傳輸出現錯誤。
(9)延時45 μs,以便PC機進行下一次傳輸。
讀數據線的步驟如下:
(1)延時20μs;
(2)把時鐘線拉低?
(3)延時40μs?
(4)釋放時鐘線?
(5)延時20μs?
(6)讀數據線。
下面的步驟可用于發出應答位;
(1)延時15μs;
(2)把數據線拉低;
(3)延時5μs;
(4)把時鐘線拉低;
(5)延時40μs;
(6)釋放時鐘線;
(7)延時5μs;
(8)釋放數據線。
四.鍵盤返回值介紹:
注意:鍵盤的返回值并不是和一般ASCII碼相對應!
鍵盤的處理器如果發現有鍵被按下釋放或按住鍵盤將發送掃描碼的信息包到計算機掃描碼有兩種不同的類型通碼和斷碼當一個鍵被按下或按住就發送通碼當一個鍵被釋放就發送斷碼每個按鍵被分配了唯一的通碼和斷碼這樣主機通過查找唯一的掃描碼就可以測定是哪個按鍵每個鍵一整套的通斷碼組成了掃描碼集有三套標準的掃描碼集分別是第一套第二套和第三套所有現代的鍵盤默認使用第二套掃描碼
雖然多數第二套通碼都只有一個字節寬但也有少數擴展按鍵的通碼是兩字節或四字節寬這類的通碼第一個字節總是為E0h
正如鍵按下通碼就被發往計算機一樣只要鍵一釋放斷碼就會被發送每個鍵都有它自己唯一的通碼它們也都有唯一的斷碼幸運的是你不用總是通過查表來找出按鍵的斷碼在通碼和斷碼之間存在著必然的聯系多數第二套斷碼有兩字節長它們的第一個字節是F0h 第二個字節是這個鍵的通碼擴展按鍵的斷碼通常有三個字節它們前兩個字節是E0h,F0h 最后一個字節是這個按鍵通碼的最后一個字節作為一個例子我在下面列出了幾個按鍵的第二套通碼和斷碼
No. |
KEY |
通碼(第二套) |
斷碼(第二套) |
---|---|---|---|
1 |
"A" |
1C |
F0 1C |
2 |
"5" |
2E |
F0 2E |
3 |
"F10" |
09 |
F0 09 |
4 |
Right Arrow |
E0 74 |
E0 F0 74 |
5 |
Right "Ctrl" |
E0 14 |
E0 F0 14 |
一個鍵盤發送值的例子:
通碼和斷碼是以什么樣的序列發送到你的計算機從而使得字符G 出現在你的字處理軟件里的呢因為這是一個大寫字母需要發生這樣的事件次序按下Shift 鍵按下G鍵釋放G 鍵釋放Shift 鍵與這些時間相關的掃描碼如下Shift 鍵的通碼12hG 鍵的通碼34h G 鍵的斷碼F0h 34h Shift 鍵的斷碼F0h 12h 因此發送到你的計算機的數據應該是
12h 34h F0h 34h F0h 12h
五:第二套掃描碼:
101 102 和104 鍵的鍵盤:
KEY |
通碼 |
斷碼 |
KEY | 通碼 | 斷碼 | KEY | 通碼 | 斷碼 | ||
---|---|---|---|---|---|---|---|---|---|---|
A |
1C |
F0 1C |
9 | 46 | F0 46 | [ | 54 | F0 54 | ||
B |
32 |
F0 32 |
` | 0E | F0 0E | INSERT | E0 70 | E0 F0 70 | ||
C |
21 |
F0 21 |
- | 4E | F0 4E | HOME | E0 6C | E0 F0 6C | ||
D |
23 |
F0 23 |
= | 55 | F0 55 | PG UP | E0 7D | E0 F0 7D | ||
E |
24 |
F0 24 |
\ | 5D | F0 5D | DELETE | E0 71 | E0 F0 71 | ||
F | 2B | F0 2B | BKSP | 66 | F0 66 | END | E0 69 | E0 F0 69 | ||
G | 34 | F0 34 | SPACE | 29 | F0 29 | PG DN | E0 7A | E0 F0 7A | ||
H | 33 | F0 33 | TAB | 0D | F0 0D | U ARROW | E0 75 | E0 F0 75 | ||
I | 43 | F0 43 | CAPS | 58 | F0 58 | L ARROW | E0 6B | E0 F0 6B | ||
J | 3B | F0 3B | L SHFT | 12 | F0 12 | D ARROW | E0 72 | E0 F0 72 | ||
K | 42 | F0 42 | L CTRL | 14 | F0 14 | R ARROW | E0 74 | E0 F0 74 | ||
L | 4B | F0 4B | L GUI | E0 1F | E0 F0 1F | NUM | 77 | F0 77 | ||
M | 3A | F0 3A | L ALT | 11 | F0 11 | KP / | E0 4A | E0 F0 4A | ||
N | 31 | F0 31 | R SHFT | 59 | F0 59 | KP * | 7C | F0 7C | ||
O | 44 | F0 44 | R CTRL | E0 14 | E0 F0 14 | KP - | 7B | F0 7B | ||
P | 4D | F0 4D | R GUI | E0 27 | E0 F0 27 | KP + | 79 | F0 79 | ||
Q | 15 | F0 15 | R ALT | E0 11 | E0 F0 11 | KP EN | E0 5A | E0 F0 5A | ||
R | 2D | F0 2D | APPS | E0 2F | E0 F0 2F | KP | 71 | F0 71 | ||
S | 1B | F0 1B | ENTER | 5A | F0 5A | KP 0 | 70 | F0 70 | ||
T | 2C | F0 2C | ESC | 76 | F0 76 | KP 1 | 69 | F0 69 | ||
U | 3C | F0 3C | F1 | 05 | F0 05 | KP 2 | 72 | F0 72 | ||
V | 2A | F0 2A | F2 | 06 | F0 06 | KP 3 | 7A | F0 7A | ||
W | 1D | F0 1D | F3 | 04 | F0 04 | KP 4 | 6B | F0 6B | ||
X | 22 | F0 22 | F4 | 0C | F0 0C | KP 5 | 73 | F0 73 | ||
Y | 35 | F0 35 | F5 | 03 | F0 03 | KP 6 | 74 | F0 74 | ||
Z | 1A | F0 1A | F6 | 0B | F0 0B | KP 7 | 6C | F0 6C | ||
0 | 45 | F0 45 | F7 | 83 | F0 83 | KP 8 | 75 | F0 75 | ||
1 | 16 | F0 16 | F8 | 0A | F0 0A | KP 9 | 7D | F0 7D | ||
2 | 1E | F0 1E | F9 | 01 | F0 01 | ] | 58 | F0 58 | ||
3 | 26 | F0 26 | F10 | 09 | F0 09 | ; | 4C | F0 4C | ||
4 | 25 | F0 25 | F11 | 78 | F0 78 | ' | 52 | F0 52 | ||
5 | 2E | F0 2E | F12 | 07 | F0 07 | , | 41 | F0 41 | ||
6 | 36 | F0 36 | PRNT SCRN |
E0 12 E0 7C |
E0 F0 7C E0 F0 12 |
. | 49 | F0 49 | ||
7 | 3D | F0 3D | SCROLL | 7E | F0,7E | / | 4A | F0 4A | ||
8 | 3E | F0 3E | PAUSE | E1 14 77 E1 F0 14 F0 77 |
-NONE- |
ACPI 掃描碼:
KEY |
通碼 |
斷碼 |
---|---|---|
Power |
E0, 37 |
E0, F0, 37 |
Sleep |
E0, 3F |
E0, F0, 3F |
Wake |
E0, 5E |
E0, F0, 5E |
Windows 多媒體掃描碼:
KEY |
通碼 |
斷碼 |
---|---|---|
Next Track |
E0, 4D |
E0, F0, 4D |
Previous Track |
E0, 15 |
E0, F0, 15 |
Stop |
E0, 3B |
E0, F0, 3B |
Play/Pause | E0, 34 | E0, F0, 34 |
Mute | E0, 23 | E0, F0, 23 |
Volume Up | E0, 32 | E0, F0, 32 |
Volume Down | E0, 21 | E0, F0, 21 |
Media Select | E0, 50 | E0, F0, 50 |
E0, 48 | E0, F0, 48 | |
Calculator | E0, 2B | E0, F0, 2b |
My Computer | E0, 40 | E0, F0, 40 |
WWW Search | E0, 10 | E0, F0, 10 |
WWW Home | E0, 3A | E0, F0, 3a |
WWW Back | E0, 38 | E0, F0, 38 |
WWW Forward | E0, 30 | E0, F0, 20 |
WWW Stop | E0, 28 | E0, F0, 28 |
WWW Refresh | E0, 20 | E0, F0, 20 |
WWW Favorites | E0, 18 | E0, F0, 18 |
評論
查看更多