1、BIOS Team / Carol 2012/05/08,PS/2 Keyboard introduction,内容索引,1 键盘概述 2 键盘的工作原理 3 KBC8042介绍 4 BDA与键盘中断,1 键盘概述,1.1 键盘的发展 1.2 键盘的分类,返回主页,1.1 键盘的发展,图1.1 IBM PC/XT Keyboard,返回本节,1.1.1 第一代键盘,1.1 键盘的发展,返回本节,图1.2 IBM AT Keyboard,1.1.2 第二代键盘,图1.3 IBM PS/2 Keyboard,返回本节,1.1 键盘的发展,1.1.3 第三代键盘,返回本节,Modern AT-PS/
2、2 compatible keyboards现代AT-PS/2 兼容键盘,任意数目的按键通常是101 或104 5 脚或6 脚连接器通常包括了适配器 双向串行协议 保证兼容第二套扫描码集 应答所有的命令,但可能某些命令不作用,注: XT键盘使用的协议与AT和PS/2系统完全不同,即与现代PC不 兼容。但可以通过开关或者自适应的方法使之兼容。,1.1 键盘的发展,1.1.4 现代键盘,机械键盘(Mechanical) :采用类似金属接触式开关,工作原理是使触点导通或断开。特点:工艺简单、噪音大、易维护。 导电橡胶式键盘(Conductive Rubber):触点的结构是通过导电橡胶相连。内部有一
3、层凸起带电的导电橡胶,每个按键都对应一个凸起,按下时把下面的触点接通。特点:它是机械键盘向薄膜键盘的过渡产品。 塑料薄膜式键盘(Membrane):内部共分四层,实现了无机械磨损。特点: 低价格、低噪音和低成本,已占领市场绝大部分份额。 无接点静电电容键盘(Capacitives):利用电容开关的原理,通过按键时改变电极间的距离引起电容容量改变(电流和电压变化)产生输入信号从而驱动编码器。特点: 无磨损且密封性较好。,1.2.1 键盘的结构:,1.2 键盘的分类,返回本节,1.2 键盘的分类,早期出现 AT 接口,即为5PIN,也称“大口”。目前AT接口已很少见,但如果想用 AT 接口的键盘,
4、还需用一个“PS/2转AT”转接头就可以了。,1.2.2 键盘的接口:,图1.4 AT接口信号,返回本节,1.2 键盘的分类,1.2.2 键盘的接口:,现在主流的是 PS/2 接口,即为6PIN,也称“小口”。键盘和鼠标都可以使用PS/2接口,按照PC99颜色规范,鼠标通常是浅绿色接口,键盘是紫色接口。,图1.6 PS/2接口,返回本节,1.2 键盘的分类,1.2.2 键盘的接口:,Win98以后的操作系统均支持USB接口,故目前USB接口的键盘也逐渐流行起来。USB的全称是Universal Serial Bus,USB支持热插拔,即插即用。,图1.7 PS/2 to USB转接头,图1.8
5、 USB to PS/2转接头,返回本节,1.2 键盘的分类,1.2.3 键盘的编码方式,编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由编码电路产生一个唯一对应的编码信息(如ASCII码),并以并行或串行信号输给CPU。编码键盘响应快, 但它以复杂的硬件结构为代价, 而且其复杂性随着按键功能的增加而增加,现在已经很少使用。 ! 非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由cpu将位置码通过查表程序转换成相应的编码信息。非编码键盘的速度较低,但结构简单的,并且通过软件能为某些键的重定义和扩充键盘功能提供很大的
6、方便。微机所采用的便是非编码键盘。,返回本节,2 键盘的工作原理,2.1 键盘的结构 2.2 8048介绍 2.3 扫描码 2.4 PS/2协议,返回主页,2.1 键盘的结构,图2.1 键盘内部结构图,2.1.1 键盘的内部组成,薄膜键盘的结构非常简单,除下我们可以直接接触的 键盘上下盖、键帽以外,可以看到按键下方的硅胶帽,导电薄膜和电路板。,返回本节,2.1 键盘的结构,2.1.2 导电薄膜,导电薄膜由上、中、下三层组成,上、下层分别印有电路连线及按键触点,中间隔层上有上、下触点层对应的圆孔(隔层的做用是防止上下层电路短路)。,返回本节,2.1 键盘的结构,导电膜与字键之间有一颗硅胶,硅胶上
7、的凸出部位与字键相对应,按下按键后硅胶上的小凸点向下凹,使导电膜上、下触点层的圆形触点相接触(形似开关接通),送出按键信号给电路板处理。,2.1.2 导电薄膜,返回本节,2.1 键盘的结构,2.1.3 电路板,电路板是整个键盘的核心,由逻辑电路和控制电路所组成。逻辑电路排列成矩阵形状, 每一个按键都安装在矩阵的一个交叉点上; 控制电路由按键识别扫描电路、编码电路和接口电路组成。,图2.2 键盘的控制电路,返回本节,2.1 键盘的结构,图2.3 AT键盘控制电路,2.1.4 电路图,返回本节,2.2 8048介绍,键盘微控制器有很多,但它们基本功能类似。如下是现代键盘编码器的短清单:Holtek
8、: HT82K28A, HT82K628A, HT82K68A, HT82K68EEMC: EM83050, EM83050H, EM83052H, EM83053H,Intel: 8048, 8049Motorola: 6868, 68HC11, 6805Zilog: Z8602, Z8614, Z8615, Z86C15, Z86E23,2.2.1 键盘微控制器种类,返回本节,2.2 8048介绍,2.2.2 8048框图,最初IBM 使用Intel8048 微控制器作为它的键盘编码器。8048是一个40引脚的芯片,内部集成了8位CPU、1KB的ROM、64字节的RAM以及8位的定时器计数
9、器等。,图2.4 8048内部框图,返回本节,2.2 8048介绍,2.2.3 按键输入的原理,返回本节,(1)按键扫描码获取8048调用查询程序,逐行扫描键位矩阵,同时检测行 列输出,如果有按键动作发生,通过译码器确定按键对应的行列信号。 (2)编码8048调用编码程序,将行列信号编码成扫描码。 (3)扫描码传送8048调用传送程序,将扫描码按照PS/2协议的传输格式包装好后,通过PS/2连线传给主机。,2.2 8048介绍,2.2.4 8048功能,功能: 1、监视哪些按键被按下或释放了,为按键编码,并在适当的时候传送到主机。 2、处理所有的去抖动,并在缓冲区里缓存数据。 3、接受主机的命
10、令并作出响应。,图2.5 8048的逻辑信号,返回本节,2.3 扫描码,2.3.1 扫描码的概念,概念: 每个键的通、断码组成了“扫描码集”scan code set。共有三套标准的扫描码集:set 1、set 2和set 3。 最初,AT 键盘只支持第二套,PS/2 键盘默认使用第二套且支持所有这三套。现代的键盘默认使用第二套扫描码。,Note: 键盘控制器默认输出第一套扫描码,因为键盘控制器把所有进来的扫描码转换为了第一套。但在键盘串行线上传输的仍然是第二套。 扫描码只对应键盘上的某一按键,它并不是印刷在按键上的那个字符,这就意味着在通码和ASCII 码之间没有关联。直到主机把扫描码翻译成
11、一个字符或命令后,才会建立对应关系。,返回本节,2.3 扫描码,2.3.2 扫描码的特征,Set 1: 多数按键的通断码是1个字节,且断码比通码大80h; 少数通断码是2个字节的,其通断码都以E0h开头,断码的第二个字节仍比通码的第二个字节大80h; 有的通断码是4个字节的,如Print键; 唯一没有断码的按键是pause/break。,返回本节,2.3 扫描码,2.3.2 扫描码的特征,Set 2: 多数按键的通码是1个字节,其断码是通码字节前加F0h组成2个字节; 少数通码是2个字节,且都以E0h开头,其断码是在通码的2个字节中间加F0h组成3个字节; 有的通码是4个字节的,如print键
12、; 唯一没有断码的按键是pause/break。,返回本节,2.3 扫描码,2.3.2 扫描码的特征,Set 3: 所有按键的通码是1个字节,其断码是通码字节前加F0h组成2个字节。 ACPI和Windows多媒体键没有扫描码。ACPI键是power、sleep、wake。 Windows多媒体键如play/pause、stop等,在多功能键盘上才有。,返回本节,2.3 扫描码,2.3.3 按键举例,例1 如何把大写字符“G”输入到计算机?,因这是一个大写字母,需要发生这样的时间次序: 按下“shift”键 按下“G”键 释放“G”键 释放“shift”键。 相关的set2扫描码是:左“shi
13、ft”通码12h,“G”通码34h,“G”断码(F0h,34h),左“shift”断码(F0h,12h)。因此按键事件发生的数据次序应该是:12h,34h,F0h,34h,F0h,12h,返回本节,2.3 扫描码,2.3.4 机打重复率typematic repeat,概念: 机打,指按住某个键不放,键盘一直发送键的通码,直到键被释放或有其他键被按下。 例如:在文本文档编辑器里按住“A”键不放,首先显示出字符“a”,短暂延时后会出现一整串“a”,直到释放“A”键。,机打延时typematic delay:第一个“a”和第二个“a”之间的延迟。设置范围:0.251.00s(秒)。 机打速率typ
14、ematic rate:机打延时后,屏幕上出现“a”的速率。设置范围:2.030.0cps(字符每秒)。,Note:当多个键被按下时,只有最后按下的键变成机打。,返回本节,2.4 PS/2协议,2.4.1 数据特征,PS/2键盘按照PS/2协议执行双向同步串行传输。每个数据都以帧的格式按位传给主机,一帧包含11-12个位。帧格式如下:,host to device only,奇校验,当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。,返回本节,2.4 PS/2协议,2.4.2 device-to-host,不管通讯的方向怎样,时钟信号总是由键盘/鼠标产生。 在时钟信号的下
15、降沿,数据被锁存读取;在时钟信号的高电平,数据线改变状态。,图2.6 设备到主机的通讯,返回本节,2.4 PS/2协议,CLOCK,DATA,PS/2键盘向主机发送的数据为 0 1 0 1 1 1 0 1 0 0 1 b , 由此可得 8个数据位=0101 1101b=5Dh 而“”对应的三套扫描通码是:2B,5D,5C。 说明 键盘输出的是第二套扫描码。,反斜杠,返回本节,Note: 时钟下降沿,数据被读取; 时钟高电平,数据发送翻转。,2.4 PS/2协议,2.4.3 host-to-device,如果主机要发送数据,它必须先下拉时钟线(至少100us)抑制通信,表示“请求发送”,然后释放时钟。在时钟信号的上升沿,数据被锁存读取;在时钟信号的低电平,数据线改变状态。,图2.7 主机到设备的通讯,返回本节,2.4 PS/2协议,2.4.4 主机的控制作用,返回本节,