PS/2协议,键盘基本工作原理,键盘模拟器
upsdn首页 > 嵌入式开发 > 电路与通信系统
摘要:先简要介绍普通PC机的键盘,然后分析PS/2协议,最后实现
了一个键盘仿真器,可利用其开发真正的键盘.
PC机键盘简介
随着IBM PC机的发展,键盘也分为XT, AT, PS/2键盘以至于后来的USB键盘. PC系列机使用的键盘有83键、84键、101键、102键和104键等多种。XT和AT机的标准键盘分别为83键和84键,而286机以上微机的键盘则 普遍使用101键、102键或104键。83键键盘是最早使用的一种PC机键盘,其键号与扫描码是一致的。这个扫描码被直接发送到主机箱并转换为 ASCII码;随着高档PC机的出现,键盘功能和按键数目得到了扩充,键盘排列也发生了变化,产生的扫描码与83键键盘的扫描码不同。为了保持PC系列微 机的向上兼容性,需将84/101/102/104键键盘的扫描码转换为83键键盘的扫描码,一般将前者叫作行列位置扫描码,而将后者称为系统扫描码。显 然,对于83键键盘,这两种扫描码是相同的。
键盘是由一组排列成矩阵方式的按键开关组成,通常有编码键盘和非编码键盘两种类型,IBM系列个人微型计算机的键盘属于非编码类型。微机键盘主要由单片 机、译码器和键开关矩阵三大部分组成。其中单片机采用了INTEL8048单片微处理器控制,这是一个40引脚的芯片,内部集成了8位 CPU、1024×8位的ROM、64×8位的RAM、8位的定时器/计数器等器件。由于键盘排列成矩阵格式,被按键的识别和行列位置扫描码的产生,是由 键盘内部的单片机通过译码器来实现的。单片机在周期性扫描行、列的同时,读回扫描信号线结果,判断是否有键按下,并计算按键的位置以获得扫描码。当有键按 下时,键盘分两次将位置扫描码发送到键盘接口;按下一次,叫接通扫描码;释放时再发一次,叫断开扫描码。因此可以用硬件或软件的方法对键盘的行、列分别进 行扫视,去查找按下的键,输出扫描位置码,通过查表转换为ASCII码返回。
键盘是与主机箱分开的一个独立装置,通过一根5芯电缆与主机箱连接,系统主板上的键盘接口按照键盘代码串行传送的应答约定,接受键盘发送来的扫描码;键盘 在扫描过程中,7位计数器循环计数。当高5位(D6一D2)状态为全“0”时,经译码器在O列线上输出一个“0”,其余均为“1”;而计数器的低二位 (D1D0)通过4选1多路选择器控制0—3行的扫描。计数器计一个数则扫描一行,计4个数全部行线扫描一遍,同时由计数器内部向D2进位,使另一列线1 变低,行线再扫描一遍。只要没有键按下,多路选择器就一直输出高电平,则时钟一直使计数器循环计数,对键盘轮番扫描。当有一个键被按下时,若扫描到该键所 在的行和列时,多路选择器就会输出一个低电平,去封锁时钟门,使计数器停止计数。这时计数器输出的数据就是被按键的位置码(即扫描码)。8048利用程序 读取这个键码后,在最高位添上一个“O”,组成一个字节的数据,然后从P22引脚以串行方式输出。在8048检测到键按下后,还要继续对键盘扫描检测,以 发现该键是否释放。当检测到释放时,8048在刚才读出的7位位置码的前面(最高位)加上一个“1”,作为“释放扫描码”,也从 P22引脚串行送出去,以便和“按下扫描码”相
区别。送出“释放扫描码”的目的是为识别组合键和上、下档键提供条件。
同时,主机还向键盘发送控制信号,主机CPU响应键盘中断请求时,通过外围接口芯片8255A一5的PA口读取键盘扫描码并进行相应转换处理和暂存;通过PB口的PB6和PB7来控制键盘接口工作。
从用途上看,键盘可分为台式机键盘、笔记本电脑键盘和工控机键盘三大类;其中台式机键盘从按键结构上又可分为两类,即机械键盘和电容键盘(又称有触点键盘 和无触点键盘)。机械键盘存在着开关容易损坏、易污染、易老化的缺点,现已基本淘汰。电容键盘在可靠性上比前者有质的飞跃,使用寿命较长,目前大多为电容 键盘。
早期的键盘是由美国IBM公司推出的,当时采用的计算机键盘为83键键盘。不久IBM又推出了84键的键盘设计标准,将键盘分为三个区,即功能区、打字键 区及负责光标控制和编辑的副键盘区,这种键盘主要区域的划分标准一直沿用至今。随着微软
Windows视窗操作系统的广泛应用,IBM公司于1986年首 次推出了101键的标准键盘,除添加了F11、F12两个功能键之外,还在键盘的中部多加了一组专用的光标控制和编辑的键,使键盘功能得到了进一步扩充, 成为当时业界的标准键盘。后来,为与微软的Win95操作系统相配合,IBM又推出了104键键盘,新增了3个功能键(亦称Windows快捷键或热键
但是,无论是机械键盘或者电容键盘,还是从早期的83键键盘发展到目前通称的标准键盘104键键盘,其应用都是主要依赖于硬件CPU和软件操作系统。以下就键盘的构造及工作原理等问题进行介绍。
(一)键盘构造及工作原理
PS/2设备履行一种双向同步串行协议。换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。设备可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自设备的通信,只需把
时钟线电平拉低即可。
键盘的内部结构主要包括控制电路板、按键、底板和面板等。电路板是整个键盘的控制核心,位于键盘的内部,主要担任按键扫描识别、编码和传输接口工作;它将各个键所表示的数字或字母转换成计算机可以识别的信号,是用户和计算机之间主要的沟通者之一。
键盘主要由键开关矩阵、单片机和译码器三大部分组成。键开关矩阵即键盘按键由一组排列成矩阵方式的按键开关组成,所输入的信号由按键所在的位置决定。单片 机即键盘内部采用的Intel 8048单片机微处理器,这是一个40引脚的芯片,内部集成了8位CPU、1024×8位的ROM、64×8位的RAM以 及8位的定时器/计数器等。译码器即信号编码转译装置,把键盘的字符信号通过编码翻译转换成相应的二进制码。由于键盘排列成矩阵格式,被按键的识别和行列 位置扫描码的产生,是由键盘内部的单片机通过译码器来实现的。根据键盘向主机送入的二进制代码类型,可把键盘分为编码键盘和非编码键盘两种。IBM PC机的键盘属于非编码键盘,其特点是不直接提供所按键的编码信息,而是用较为简单的硬件和一套专用程序来识别所按键的位置,并提供与所按键相对应的中间 代码,然后再把中间代码转换成要对应的编码。这样,非编码键盘就为系统软件在定义键盘的某些操作功能上提供了更大的灵活性。
计算机键盘通常采用行列扫描法来确定按下键所在的行列位置。所谓行列扫描法是指,把键盘按键排列成n行×m列的n*m行列点阵,把行、列线分别连接到两个 并行接口双向传送的连接线上,点阵上的键一旦被按动,该键所在的行列点阵信号就被认为已接通。按键所排列成的矩阵,需要用硬件或软件的方法轮转顺序地对其 行、列分别进行扫描,以查询和确认是否有键按动。如有键按动,键盘就会向主机发送被按键所在的行列点阵的位置编码,称为键扫描码。单片机通过周期性扫描 行、列线,读回扫描信号结果,判断是否有键按下,并计算按键的位置以获得扫描码。键被按下时,单片机分两次将位置扫描码发送到键盘接口:按下一次,叫接通 扫描码;按完释放一次,叫断开扫描码。这样,通过硬件或软件的方法对键盘分别进行行、列扫视,就可以确定按下键所在位置,获得并输出扫描位置码,然后转换 为ASCII码,经过键盘I/O电路送入主机,并由显示器显示出来。
键盘要增加键数是很容易的,任何矩阵键盘通过增加键盘的行或列便可实现增加按键数。如64 键的键盘排列成8行×8列的行列点阵,128键的键盘排列成8行×16列的行列点阵,256键的键盘排列成16行×16列的行列点阵,这在1992年7月 出版的《微处理机为基础之设计》出版物上已作介绍(此对比文献在2001年12月13日已递交)。因此,键盘结构采用矩阵式早已是公有技术。
(二)键盘的按键增加及功能改进
随着计算机CPU(硬件)和Windows操作系统(软件)的不断升级换代,计算机的发展进入到了包括多媒体在内的高速多功能时代。与此相适应,计算机键 盘也出现了一些新的变化,主要表现在键盘键数的增加及功能的整合。美国苹果(Apple)公司早在1992年就曾推出过设有调整音量按键的键盘。时下流行 的多媒体键盘,也叫多功能键盘,
其特征是增加了一些快捷键(或功能键),通过设定主板BIOS或软件设定,使这些新增的键可以实现开关电脑、休眠启动、 CD播放、音量调整、一键上网等特殊功能。此外还出现了一些多功能集成的键盘,如将扫描仪、录音设备或手写板、鼠标等整合为一体的键盘,以及带有文字编辑 或指纹识别功能的智能键盘等。
如前所述,IBM定义的101键键盘与微软(Microsoft)所定义的三键共同形成的104 键Win95键盘一般被称作标准键盘,那么标准键盘的104键之外如何增加按键扩充功能呢?从目前键盘发展情况看,可以有多种方法。单就增加键盘按键的设 定技术看,一般来讲,按键的增加取决于三个方面的因素:一是CPU能识别,二是操作系统能响应,三是键盘内部电路结构能安排。从前面的介绍可知,CPU和 操作系统这两个因素是计算机必备的现成技术,不成问题。这样,增加键盘按键的关键就在于键盘的内部结构。以下两种方法可以直接简便地增加键盘按键。
目前PC机键盘按键一直沿用IBM的行列矩阵方式布局排列,称为扫描矩阵,其内部电路结构的核心是8048(包括其后续升级系列)单片机微处理器。根据单 片机微处理器特定的I/O(即Input/Output输入/输出)电路,IBM将键盘按键的行列矩阵定义为8行×16列=128键,而现行的标准键盘只 使用了其中的104键,故尚有128-104=24键的阵点闲余,尚未定义。因此,增加按键的方法之一是,直接在这尚未定义的24个闲余按键阵点中继续定 义新键以扩增新的功能键。方法之二是,通过改变单片机微处理器I/O电路的配线方式,可以把IBM的原8行×16列扫描矩阵变为(8+n)行×16列,如 (8+1)行×16列=144键等,这样就会在128键之外获得新增加的一行16个键位,再根据需要为其定义功能。以上两种方法都可以达到增加104键的 标准键盘的按键数的目的。简而言之,第一种方法是在原扫描矩阵8行×16列的行列点阵中尚未利用的24个点上,根据需要可任意增加1至24个新键;第二种 方法是在单片机微处理器原扫描矩阵8行×16列基础上再增加一行,变为9行×16列扫描矩阵,再根据需要任意增加新键,并不会带来单片机微处理器本身原有 功能的更新。如IBM 的83键盘发展到原来的标准键盘101键,其要增加的键数只要通过增加键盘的行或列,并在增加的行列阵点上进行定义便可实现;而原来的101键的标准键盘 后发展到目前的104键的标准键盘,其增加的3个键数可以不增加键盘的行和列,只要在原扫描矩阵中尚未定义的点上直接定义就可以。无论是第一种方法还是第 二种方法,都已经属于公有技术领域的技术。
什么是键盘的键位冲突?
简单的说,也就是当你同时按下键盘上的几个键的时候,这几个键不能同时反映出来,这就叫做键盘的键位冲突。例如说,你能想象当你按下Ctrl-Alt-Del时,系统只能接收到前两个键,而死活不承认你按了Del键吗?
当然,现实中是不会有这样的键盘的,按不下Ctrl-Alt-Del的键盘根本就没法出厂,但其他一些常见的键位冲突就不稀奇了。例如,经常有一些键盘不能同时对例如A-S-空格这样的按键组合作出反应,这样在FPS游戏中,使用者就会大为吃亏。