访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
PC机键盘接口深入分析与应用设计
内容导读:
PC机键盘接口深入分析与应用设计 北京军区空军航空中心修理厂安学军梁祥张永军 摘要进一步分析PC机键盘工作原理和工程应用中需注意的几个问题;介绍用89C2051和矩阵式键盘产生标准PC机键盘信号的方法,以及如何将标准PC机键盘应用于单片机系统。 关键字键盘原理扫描码时序单片机 前言 嵌入式计算机在工程上越来越普遍得到应用,而标准的PC机键盘则因不适应工业环境受到了限制,我们希望有定义灵活、工作可靠的键盘,产生了设计自己专用的键盘和键盘接口的想法。在本刊2001年第3期《101/102键盘信号分析与键盘接口的设计实现》一文中,石京民先生已经介绍了PC机键盘的基本工作原理(以下简称《石文》),在此我们仅进一步介绍PC机键盘通信中的几个具体问题和自己在工程上的实际应用,供大家参考。 表1 键名[]1[]2[]3[]4[]5[]6[]7[]8[]9[]0[]A[]B[]C[]D[]E[]F[]G[]H键盘扫描码[]16[]1E[]26[]25[]2E[]36[]3D[]3E[]46[]45[]1C[]32[]21[]23[]24[]2B[]34[]33系统扫描码[]02[]03[]04[]05[]06[]07[]08[]09[]0A[]0B[]1E[]30[]2E[]20[]12[]21[]22[]23ASCII码[]31[]32[]33[]34[]35[]36[]37[]38[]39[]30[]41[]42[]43[]44[]45[]46[]47[]48一、 键盘扫描码和系统扫描码 PC机键盘大致有XT、AT和PS2三类,计算机通过两类中断程序与键盘联系:一类是硬件中断INT09H,由按键产生,把键盘代码(扫描码)转换成相应的ASCII码存入键盘缓冲区;另一类是软件中断INT16H,从键盘缓冲区获得ASCII码或扩展码。早期PC、XT机采用83键标准键盘,每个键分配的键号和扫描码是唯一的,由INT09H把扫描码转换成ASCII码。AT及PS2等84/101/102/104键扩展键盘,键号的分配及发送的键盘扫描码与标准键盘有较大差别。为了保持软件级的兼容性,机器通过键盘接口把不同的键盘扫描码转换成与PC兼容的扫描码,再交给中断程序处理。这样,前者键盘直接产生的扫描码称为键盘扫描码,出现在硬件最底层,程序人员一般不接触;后者称为系统扫描码,广泛应用于程序中,也包括在Windows系统下。在AT机中,用单片机Intel 8042作为键盘控制器,而在586及奔腾机中则集成到南北桥芯片。在PC及XT机中,键盘扫描码与系统扫描码是一致的;在AT以上机型,键盘扫描码不同于系统扫描码,但也有一定规则可循。表1是部分扩展键盘扫描码对照表。 实际应用中的扫描码格式(包括按键和释放扫描码)与《石文》所述基本一致,只是在扩展键盘中有些键的扫描码是2字节甚至更多,例如: 右WINDOWS键:E0H;27H;E0H;F0H;27H 右ALT 键:E0H;11H;E0H;F0H;11H 右CTL键:E0H;14H;E0H;F0H;14H PAUSE BREAK:E1H;14H;77H;E1H;F0H;14H;F0H;77H 根据笔者对多种键盘的实践,非PC机键盘扫描码也类似,但数值可能有所不同;有些原装机器的扫描码也可能会所不同。读者可以根据图2的电路去验证每个键盘对应按键的扫描码。 二、 PC机与键盘的串行通信 时序是设计电路和编程的基本依据,但很少有资料介绍键盘工作的具体时序,我们对AT、PS2扩展键盘进行了分析。确切地说,键盘与PC机的通信是串行异步与同步相结合的方式。键盘发送到PC机的数据采用标准的串行异步通信方式(对应于8051的串行通信方式2、3)\[2\],即1位起始位,8位数据位(低位在前),1位奇校验位,1位停止位。由于按键速度的不一致,并为了提高设备的兼容性,又在异步通信的基础上增加了同步时钟,在时钟的上升沿对数据进行采样。也就是说数据的时钟同步和恢复由发送端控制,不需要接收端再建立同步。这样增加了一根时钟线,却简化了控制和编程。反之,PC机发往键盘的命令和数据也如此。 键盘控制器可实现下列功能:接收、校验和转换来自键盘的按键扫描码数据;控制和检测传送数据的时间;向键盘发送命令并接收键盘的响应;向系统发键盘中断,请求主机进行键盘代码处理;控制系统复位。 PC机产生键盘硬中断后,在没有处理完数据之前,会把时钟线置低,禁止键盘输出。具体的键盘命令和响应,如设定拍发速率、自检等,可参考有关资料\[1\]。 三、 设计自己的键盘和键盘接口 有了上面的基础,就可以设计自己用的键盘。我们研制的一套便携式综合测试系统中采用了PC104总线嵌入式Intel 486(以下简称PC104),以只有20脚的89C2051单片机仿真PC机键盘,收到了很好的效果,如图189C2051仿真PC机键盘图1所示。其中键盘电路所需的+5V电源由PC机的键盘接口提供,89C2051的14根I/O线分别负责串行通信和6×6矩阵键盘扫描。由于PC机上电后要对键盘和键盘控制器进行自检,所以在程序中要充分考虑到这一问题,否则会每次启动后报告键盘错误;PC104属于嵌入式PC,其BIOS设计成可以脱离键盘工作,那么就可简单地设计成复位后数据和时钟线都为高电平即可;对于即插即用的PS2键盘也不需要自检。这样就可以把仪器面板上的薄膜键盘应用到PC机系统里了。 反过来,在某些单片机或单板机应用场合需要使用汉字,传统的办法是事先把要用的汉字的内码编好,再固化起来,调用对应的显示字库,修改起来很不方便。如果采用PC机键盘输入,设计自己的键盘接口处理键盘的扫描码,接口中编写好程序,将汉字的内码送给单片机系统,就可以有自己的“单片机五笔输入法”或“拼音输入法”了,如图2所示。因为89C2051的I/O口都有弱上拉电阻,不存在高阻状态,为了系统的可靠还可加上一级总线驱动。 图2与PC机键盘接口四、 软件设计 键盘的软件设计重点考虑以下几部分:发送数据的时钟速率;数据信号与时钟信号的配合;特殊功能的定义。通过分析计算,得到标准键盘扫描码发送的时钟速率为12000Hz左右。速率过快,造成每次按键多发,不符合按键习惯;速率过慢,使得反应迟钝。因而需要通过控制发送扫描码的时钟,使每秒大约发送10个键的扫描码。由于时钟是在发送方建立的,所以对同步要求不是很严格,但要保证数据信号稳定建立的时间。PC机键盘具有许多功能,软件设计应视情况开发我们在工程中所需要的功能,不必照搬。仿真键盘接收PC机的命令可采用中断方式也可以采用查询方式。 89C2051仿真PC机键盘程序清单如下。采用查询方式,仅列出标准扫描码发送子程序,其它相关程序略。 KB_DAT〖〗EQU〖〗 P3.0〖〗;数据端口〖1〗KB_CLK〖〗EQU〖〗P3.1〖〗;时钟端口〖1〗MAIN:〖〗MOV〖〗P3,#0FFH〖〗;P3口置"1"〖2〗MOV 〖〗P1,#0FFH〖〗;P1口置"1"〖1〗MAIN1:〖〗MOV〖〗DPTR,#KEYSUB〖〗;扫描码起始地址送 ;DPTR〖2〗MOVC〖〗A,@A+DPTR〖〗; A寄存按键位置〖2〗MOV〖〗R5,A;将A的扫描码放入R5保存〖1〗CLK_01:〖〗MOV〖〗C,KB_CLK〖〗;时钟信号送C〖2〗JNC〖〗CLK_01〖〗;时钟信号为低等待〖2〗SETB〖〗KB_DAT〖〗;置数据线为"1" 〖2〗LCALL〖〗SEND_2〖〗;调发送子程序〖2〗LCALL〖〗DELAY〖〗;调延迟子程序〖1〗CLK_02:MOV〖〗C,KB_CLK〖〗;读时钟线〖2〗JNC〖〗CLK_02〖〗;时钟线为低等待〖2〗MOV〖〗A,#0F0H〖〗;前缀字节送A〖2〗LCALL〖〗SEND_2〖〗;调发送子程序〖2〗LCALL〖〗DELAY〖〗;调延时子程序〖1〗CLK_03:〖〗MOV〖〗C,KB_CLK〖〗;读时钟线〖2〗JNC〖〗CLK_03〖〗;时钟线为低等待〖2〗MOV〖〗A,R5〖〗;将扫描码送入A发送〖2〗LCALL〖〗SEND_2〖〗;调发送子程序〖2〗LCALL〖〗DELAY〖〗;调延时子程序〖1〗SENDER_2:MOV C,P〖2〗CPL〖〗C〖〗;奇校验〖2〗MOV〖〗20H.0,C〖〗;送20H.0保存〖2〗MOV〖〗R4,#08〖〗;8位数据发送〖2〗CLR〖〗KB_DAT〖〗;送起始位〖2〗CLR〖〗KB_CLK〖〗;送同步时钟信号〖2〗LCALL〖〗DELAY〖〗;延时40μs〖2〗SETB〖〗KB_CLK〖2〗LCALL〖〗DELAY〖1〗SD_2_1:〖〗RRC〖〗A〖〗;发送8位数据〖2〗MOV〖〗C,KB_DAT〖2〗CLR〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗SETB〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗DJNZ〖〗R4,SD_2_1;送8位扫描码或前缀字节〖2〗MOV〖〗C,20H.0〖〗;奇校验位送C〖2〗MOV〖〗KB_DAT,C〖〗;发送奇校验位〖2〗CLR〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗SETB〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗SETB〖〗KB_DAT〖〗;送停止位〖2〗CLR〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗SETB〖〗KB_CLK〖2〗LCALL〖〗DELAY〖2〗RET〖〗〖1〗KEYTAB:DB 16H,1EH,26H,25H,2EH;1,2,3,4,5〖2〗DB 36H,3DH,3EH,46H,45H;6,7,8,9,0单片机系统与PC机键盘的接口程序与此类似,可采用中断方式,程序略。 结束语 掌握了PC机键盘的工作原理后,可以在嵌入式系统中使用多种输入设备,只须将其信号转换成对应的键盘扫描码,从而节省宝贵的IO资源,还可以减少采用其它通信方式的编码工作量。MES 参考文献 1张载鸿.微型机(PC系列)接口控制教程.北京:清华大学出版社,1992 2余永权.ATMEL89系列Flash单片机原理及应用.北京:电子工业出版社,1997
标签:
来源:单片机与嵌入式系统应用 作者:北京军区空军航空中心修理厂 安学军 梁祥 张永军 时间:2006/2/12 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐