电子开发 | 基础入门 | 电路原理图 | 姊舰鍥惧疄渚� | PLC鍩虹   銆婂鏋滃枩娆㈡湰绔欙紝璇锋寜 Ctrl+D 鎵嬪姩鏀惰棌锛佹劅璋㈡偍鐨勬敮鎸併€�涓€璧峰涔犱竴璧疯繘姝ワ紝鐢靛瓙寮€鍙戠帇娆㈣繋鎮紒.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

鈽呯數璺叕寮忔墜鍐岋紝鏈€鏂扮増銆婄數瀛愮數璺叕寮忚绠楀櫒銆嬶紝鐢佃矾鍏紡鏌ヨ鎵嬪唽 鐢佃矾鍏紡璁$畻鍣ㄣ€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
鈽嗗崄澶╁浼氬崟鐗囨満瀹炰緥100 c璇█ chm鏍煎紡銆傝祫鏂欏唴瀹硅缁嗭紝瑕嗙洊渚嬪瓙澶氾紝鍐呭骞裤€愮數瀛愪粠涓氫汉鍛樺繀澶囨墜鍐屻€�
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> 其他技术 >> 正文

PS/2 PC键盘编程参考资料

作者:佚名    文章来源:本站原创    点击数:1777    更新时间:2008-10-31

   PS/2 PC键盘编程的参考资料

一.电气特性

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 
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 
42  F0 42    L CTRL 14  F0 14    R ARROW E0 74 E0 F0 74 
4B F0 4B    L GUI E0 1F  E0 F0 1F   NUM 77  F0  77
3A  F0 3A    L ALT 11  F0 11    KP / E0 4A  E0 F0 4A 
31  F0 31    R SHFT  59  F0 59    KP * 7C F0  7C
44  F0 44    R CTRL  E0 14  E0 F0 14    KP - 7B F0 7B 
4D  F0 4D   R GUI E0 27  E0 F0 27    KP + 79 F0 79 
15  F0 15    R ALT E0 11  E0 F0 11    KP EN E0 5A E0 F0 5A 
2D F0 2D    APPS E0 2F  E0 F0 2F    KP  71 F0 71 
1B  F0 1B    ENTER 5A F0 5A    KP 0 70 F0 70 
2C  F0 2C    ESC 76  F0 76    KP 1 69 F0 69 
3C F0 3C    F1 05  F0 05    KP 2  72 F0 72 
2A F0 2A    F2  06 F0 06    KP 3  7A F0 7A 
1D F0 1D    F3  04  F0 04    KP 4  6B F0 6B 
22 F0 22    F4  0C  F0 0C    KP 5  73 F0 73 
35  F0 35    F5  03  F0 03    KP 6  74 F0 74 
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 
16  F0 16    F8  0A  F0 0A    KP 9  7D F0 7D 
1E  F0 1E    F9  01  F0 01    ] 58 F0 58 
26  F0 26    F10  09  F0 09    ; 4C F0 4C 
25  F0 25    F11  78  F0 78    ' 52 F0 52 
2E  F0 2E    F12  07  F0 07    , 41 F0 41 
36 F0 36    PRNT
SCRN
E0 12
E0 7C
E0 F0
7C E0
F0 12 
  . 49 F0 49 
3D  F0 3D    SCROLL 7E F0,7E    / 4A F0 4A 
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 
E-Mail 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 


Tags:PS2,PC键盘,编程,资料  
责任编辑:admin
  • 上一个文章: 没有了
  • 下一个文章:
  • 相关文章列表
    没有相关文章
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
        没有任何评论
    推荐文章
    • 此栏目下没有推荐文章
    最新推荐
    鐢靛瓙寮€鍙戠綉锛氭眹闆嗙患鍚堝悇绫荤數瀛愬埗浣滀笌鐢佃矾鍥剧殑缃戠珯锛宲lc宸ユ帶鎶€鏈�,妯$數鏁扮數鐭ヨ瘑,鍗曠墖鏈篍DA绛夌瓑锛佽崯钀冪數璺浘缃戠珯绮惧崕锛屼负宸ョ▼甯堝垱閫犱环鍊笺€傛杩庡叧娉ㄥ井淇″叕浼楀彿锛氱數瀛愬紑鍙戠綉锛�
    璧勬枡鍖呬笅杞�
     [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]闁告ぞ绀侀妵澶屸偓娑崇細缁变即宕¢弴鐘差暬闁哄牆鎼悿鍕瑹閿燂拷100 c閻犲浄鎷�
     [閺夌儐鍨▎銏㈢尵閿燂拷]濞戞挸顦宠ぐ绀烲C閻庢冻缂氱弧鍕鐠恒劍鍩傞弶鐑嗗灟濞嗩敩X-TR
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM324閺夆晜鍔栭弬锟�4~20mA閺夌儑鎷�1~5V闁汇垹鐏氱粊锟�
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM386濡炲湱绮悗顒佹媴閹捐顔婇柛蹇擃儔椤ユ捇寮ㄩ幆褋浜i柛锝冨妼鐢拷
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]936闁绘帒锕よぐ鎾偨娴e啰鐔呴柛妯煎枔閹﹪宕堕敓锟�
     [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]閻℃帒鎳庨敍鎰枖閵忥紕銈撮悹鐚存嫹+婵炴挴鏅涚€癸拷+闁硅翰鍎撮鐔兼儍閸曨偄绀�
     [闂侇偅姘ㄩ弫銈夋偨闂堟稓鎽嶉悹浣瑰礃椤撳憡娼娆愵偨]S7-200PLC闁汇劌瀚挒銏ゆ儑閻旀槒鎷ù鐙呮嫹 S7_2
     [閺夌儐鍨▎銏㈢尵閿燂拷]S7-200閹煎瓨鎸婚弸鍐╃鐠佸湱绀勯柛蹇g厜缁憋拷,STEP7
     [閺夌儐鍨▎銏㈢尵閿燂拷]ModbusPoll闁告粌顒爋dbusSalve闁稿骏鎷�
     [閺夌儐鍨▎銏㈢尵閿燂拷]STEP7婵☆垪鍓濈€氭瑩鏌岃箛鏂跨樄濞寸姰鍊曠花锟� Smart_
     [閺夌儐鍨▎銏㈢尵閿燂拷]Modbus閻犲鍟抽惁顖滃垝閸撗傜触 v1.024 缂備緤鎷�
     [閺夌儐鍨▎銏㈢尵閿燂拷]Modscan32闁告粌顒爋dsim32,modb
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]89c51闁稿繐顦遍悵娑㈠棘闁稖闆归柣顏嗗櫐缁辨獤rotues
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]濞戞挸娲ら崟楣冨储閸炴姰otues濞寸姾娉曞﹢锛勭矙鐎n亞纰嶆繝褎鍔楅悥锟�
     [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]51闁告娲滄晶鏍嫉閸濆嫬鍧婄紒瀣舵嫹 protues濞寸姾娉曞﹢锟�
    鏈€鏂版枃绔�
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询