文档详情

PS2键盘接口程序设计总结

宝路
实名认证
店铺
DOC
353.50KB
约9页
文档ID:7360091
PS2键盘接口程序设计总结_第1页
1/9

第二章 PS2 键盘接口程序设计总结2.1 PS/2 键盘接口简介键盘上包含了一个大型的按键矩阵,它们是由安装在电路板上的处理器(叫做“键盘编码器”)来监视的具体的处理器在键盘与键盘之间是多样化的,但是它们基本上都做着同样的事情:监视哪些按键被按下或释放了,并传送适当的数据到主机如果有必要,处理器处理所有的去抖动并在它的16 字节缓冲区里缓冲数据你的主板包含了一个“键盘控制器”,负责解码所有来自键盘的数据,并告诉你的软件什么事件发生了在主机和键盘之间的通讯使用IBM 的协议2.1.1 扫描码键盘的处理器花费很多的时间来扫描或监视按键矩阵如果它发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机扫描码有两种不同的类型:“通码”和“断码”当一个键被按下或按住就发送通码;当一个键被释放就发送断码每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键每个键一整套的通断码组成了“扫描码集”有三套标准的扫描码集分别是第一套、第二套和第三套所有现代的键盘默认使用第二套扫描码2.1.2 通码、断码和机打重复率只要一个键被按下,这个键的通码就被发送到计算机记住通码只表示键盘上的一个按键,它不表示印刷在按键上的那个字符。

这就意味着在通码和ASCII 码之间没有已定义的关联直到主机把扫描码翻译成一个字符或命令虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为“E0h”正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送每个键都有它自己唯一的通码,它们也都有唯一的断码幸运的是你不用总是通过查表来找出按键的断码在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是“F0h”, 第二个字节是这个键的通码扩展按键的断码通常有三个字节,它们前两个字节是“E0h”,“F0h” ,最后一个字节是这个按键通码的最后一个字节例如:通码和断码是以什么样的序列发送到你的计算机,从而使得字符“G”出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件,次序按下“Shift”键,按下“G”键,释放“G”键,释放“Shift”键,与这些时间相关的扫描码如下:“Shift”键的通码12h,“G”键的通码“34h”,“G”键的断码“F0h,34h”,“Shift”键的断码“F0h,12h”因此发送到你的计算机的数据应该是“12h ,34h, F0h ,34h, F0h,12h”。

如果你按了一个键,这个键的通码被发送到计算机,当你按下并按住这个键,则这个键就变成了机打着,就意味着键盘将一直发送这个键的通码直到它被释放或者其他键被按下要想证实这点只要打开一个文本编辑器,并按下A 键当你首先按下这个键字符a 立刻出现在你的屏幕上在一个短暂的延迟后,接着出现一整串的a 直到你释放A 键这里有两个重要的参数:机打延时是第一个和第二个a 之间的延迟,机打速率是在机打延时后每秒有多少字符出现你的屏幕上机打延时的范围可以从0.25 秒到1.00 秒,机打速率的范围可以从2.0cps(字符每秒)到30.0cps你可以用Set Typematic Rate/Delay “0xF3”命令来改变机打速率和延时2.1.3、复位在上电或软件复位(见Reset 命令)后,键盘执行诊断自检,叫做BAT(基本保证测试)并载入如下的缺省值:● 机打延迟为500ms● 机打速率为10.9cps●* 第二套扫描码集●* 置所有按键为机打/通码/断码 所指的项在某些键盘上时可变的,而在其他键盘上时硬件编码的不可变当进入BAT,键盘点亮它的三个LED指示器,并在完成BAT 后关闭它们此时,BAT完成代码要么“0xAA” BAT成功或“0xFC”有错误被发送到主机。

多数键盘忽略它们的时钟和数据线直到BAT完成代码发送后所以“抑制”条件时钟线拉低可能不能防止键盘发送它们的BAT完成代码2.1.4、命令集每个发送到键盘的字节都从键盘获得一个0xFA(应答)的回应,唯一例外的是键盘对Resend和Echo命令的回应在发送下一个字节给键盘之前,主机要等待“应答”键盘应答任何命令后清除自己的输出缓冲区下面列出了所有可能被发给键盘的命令:● 0xFF (Reset)——引起键盘进入Reset 模式(见复位部分)● 0xFE (Resend) ——用于只是在接收中出现的错误键盘的响应就是重发送最后的扫描码或者命令回应给主机但是0xFE绝不会作为Resend命令的回应而被发送● *0xFD (Set Key Type Make)——允许主机指定一个按键只发送通码这个按键不发送断码或进行机打重复指定的按键采用它的第三套扫描码● *0xFC (Set Key Type Make/Break)——类似于Set Key Type Make,只有通码和断码是使能的(机打被禁止了)● *0xFB (Set Key Type Typematic)——类似于前两条命令通码和机打是使能的,而断码被禁止。

● *0xFA (Set All Keys Typematic/Make/Break)——缺省设置所有键的通码、断码和机打重复都使能(除了Print Screen 键,它在第一套和第二套中没有断码)● *0xF9 (Set All Keys Make)——所有键都只发送通码;断码和机打重复被禁止● *0xF8 (Set All Keys Make/Break)——类似于前两条命令,除了机打重复被禁止外● *0xF7 (Set All Keys Typematic) ——类似于前三条命令仅断码被禁止,通码和机打重复是使能的● 0xF6 (Set Default)——载入缺省的机打速率/ 延时(10.9cps/500ms),按键类型(所有按键都使能机打/通码/断码),以及第二套扫描码集● 0xF5 (Disable)——键盘停止扫描,载入缺省值键 Set Default 命令,等待进一步指令● 0xF4 (Enable)——在用上一条命令禁止键盘后,重新使能键盘● 0xF3 (Set Typematic Rate/Delay)——主机在这条命令后会发送一个字节的参数来定义机打速率和延时,具体含义如表2.1、2.2所示。

表2.1 Repeat RateBits0-4 Rate(cps) Bits0-4 Rate(cps) Bits0-4 Rate(cps) Bits0-4 Rate(cps)00h 2.0 08h 4.0 10h 8.0 18h 16.001h 2.1 09h 4.3 11h 8.6 19h 17.102h 2.3 0Ah 4.6 12h 9.2 1Ah 18.503h 2.5 0Bh 5.0 13h 10.0 1Bh 20.004h 2.7 0Ch 5.5 14h 10.9 1Ch 21.805h 3.0 0Dh 6.0 15h 12.0 1Dh 24.006h 3.3 0Eh 6.7 16h 13.3 1Eh 26.707h 3.7 0Fh 7.5 17h 15.0 1Fh 30.0表2.2 DelayBits5-6 Delay(seconds)00b 0.2501b 0.5010b 0.7511b 1.00● *0xF2 (Read ID)——键盘回应两个字节的设备ID ,0xAB、0x83● *0xF0 (Set Scan Code Set)——主机在这个命令后发送一个字节的参数,是定键盘使用哪套扫描码集。

参数字节可以是0x01、0x02或0x03分别选择扫描码集第一套、第二套或第三套如果要获得当前正在使用的扫描码集,只要发送带0x00参数的本命令即可● 0xEE (Echo)——键盘用“Echo”0xEE 回应● 0xED (Set/Reset LEDs)——主机在本命令后跟随一个参数字节,用于指示键盘上Num Lock, Caps Lock,and Scroll Lock LED的状态这个参数字节的定义如下:MSB LSBAlways0 Always0 Always0 Always0 Always0 Caps Lock Num Lock Scroll Lock○"Scroll Lock" - Scroll Lock LED off(0)/on(1)○"Num Lock" - Num Lock LED off(0)/on(1)○"Caps Lock" - Caps Lock LED off(0)/on(1)*只是最初可用于PS/2 键盘。

2.1.4、初使化如下的通讯过程发生在计算机和键盘之间,当计算机启动后,前三个命令是初始化键盘控制器,后一条命令(使能Numlock LED),是由BIOS发送的,剩下来的命令是由OS Win98SE发送的记住在计算机上这个结果是明确的,但是它只是一个一般性的概念,告诉我们启动时发生了什么Keyboard: AA 自检通过;键盘控制器初使化Host: ED 设置/复位状态指示器Keyboard: FA 键盘应答Host: 00 关闭所有指示灯Keyboard: FA 键盘应答Host: F2 读IDKeyboard: FA 键盘应答Keyboard: AB ID的第一个字节Host: ED 设置/复位状态指示器; BIOS初使化Keyboard: FA 键盘应答Host: 02 点亮 Num Lock指示灯Keyboard: FA 键盘应答Host: F3 设置机打速率和延时;Windows初使化Keyboard: FA 键盘应答Host: 20 500 ms / 30.0 reports/secKeyboard: FA 键盘应答Host: F4 使能键盘Keyboard: FA 键盘应答Host: F3 设置机打速率和延时Keyboard: FA 键盘应答Host: 00 250 ms / 30.0 reports/secKeyboard: FA 键盘应答2.2 PS/2 通讯协议PS2通讯协议是一种双向同步串行通讯协议。

通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据任何一方如果想抑制另外一方通讯时,只需要把clock(时钟脚)拉到低电平如果是PC机和PS2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS2键盘发送数据,而PS2键盘则不会抑制PC机发送数据, 也即主机总是在总线上有优先权一般两设备间传输数据的最大时钟频率是33KHz,大多数PS2设备工作在10~20KHz推荐值在15KHz左右,也就是说,clock(时钟脚)高、低电平的持续时间都为40μs每一数据帧包含11~12个位,具体含义如表2.3所列表2.3 PS/2通讯数据帧格式1 个起始位 总是逻辑 08 个数据位 (LSB)低位在前1 个奇偶校验位 奇校验1 个停止位 总是逻辑 11 个应答位 仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验2.2.1、PS/2 设备到主机的通讯时钟频率为10-16.7kHz 从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒数据变化到时钟脉冲的下降沿的时间至少要有5 微秒,并且不大于25 微秒。

这个定时非常重要你应。

下载提示
相似文档
正为您匹配相似的精品文档