有的时候我们总是抱怨键盘太少,做起来太麻烦了,所以就有人就比较聪明,直接运用电脑的键盘,也就是人们常说的“微机键盘”。下面吴鉴鹰就针对这个微机键盘的给大家做简单的介绍,已解决大家的键盘太少之忧,让大家做人机界面更加畅通无阻。
图 1
本文通过分析微机键盘的工作原理及数据格式, 从单片机应用系统的实际需出发, 对微机键盘与单片机的接口及软件进行了设计。用中断方式实现了微机键盘与单片机之间的通信。
大家知道微机键盘是微机系统必不可少的外设, 其品种很多, 既有最经常使用的101、102 等键盘, 又有各种适用于金融、证券等领域的小键盘。实际上, 单片机应用系统中也可用微机键盘作为人机交互工具。然而, 由于微机键盘的数据格式较多, 要开发它的完整功能编程量大。因此,在实际使用中, 往往要求厂家做成适合于单片机应用接口要求的特殊键盘, 如R S 一2 32 串口格式, 这对应用是很不方便的。
本文通过开发实践体会到: 微机键盘应用于单片机系统时, 只要满足实际要求, 硬件电路和软件设计完全可以简化, 并在这方面作了许多工作。
1 键盘功能及数据格式
键盘通过五芯插头与主机系统相连。一条数据线、一条时钟线均是双向的
(既可向系统发键盘数据, 又可接收系统发来的键盘命令), 一条是复位线, 另两条分别是+ SV 电源线和地线。五芯插头的布局如图1 所示。
图 2
微机键盘尽管形式各异, 但一般都符合两种标准川; 一种是Pc / XT 标准, 另一种是AT标准。前者数据位为9 位(较老式), 后者数据n 位, 是较常用的一种标准, 目前许多微机键盘都兼容这一标准。下面对后者作一简要介绍:
1.1 键盘功能
键盘通过数据线和时钟线与系统通信, 它接收系统发来的键盘命令码, 送出键盘数据。
在接通电源后键盘首先进行复位等初始化工作, 然后进行键盘扫描, 作好接收命令和发送键盘数据的准备工作。
键盘和系统相互间的数据通信均采用n 位格式的串行方式: 第一位起始位, 第2 一9 位是8 位数据位(低位在前高位在后), 第10 位是奇偶校验位, 第n 位是停止位, 数据的起始位为低电平。系统接收的键盘数据和键盘接收的键盘命令均在移位时钟的下降沿同步输人, 时钟周期为50 u s 。其时序如图2 所示。
图2 微机键盘与系统通信帧格式时序
图 3
1.2 键盘命令
键盘命令是由系统发送给键盘的命令码。键盘在接收到这些命令时, 在20 ms 内予以响应, 即送回一个响应(FA ll)。
键盘命令的含义如下:
(l) FFH 复位键盘一一使键盘进行复位和内部自测试操作;
(2)FE H 重新发送一检测到键盘数据错误时, 要求键盘重新输出原来的内容;
(3) F6 H 设置键盘缺省值一一使键盘复位到初始状态, 并停止键盘扫描;
(4) FS H 设置缺省值并停止键盘一一使键盘复位到初始状态, 并停止键盘扫描;
(5) F4 H 启动键盘一一清除键盘输出缓冲器, 并启动键盘扫描和输出数据;
(6) F3 H 设置拍发速率/ 延时参数;
(7) E E H 回响命令一一要求键盘接收到此命令时也回送E E H 予以响应;
(8) E l〕H 置位/ 复位LE D 指示器。
1.3 键盘数据
键盘数据包括键盘扫描码和命令响应码。键盘扫描码是用户按下键盘按键时, 键盘发送给系统的数据, 不同的键其码值是不同的。可通过查阅有关资料〔‘〕或测试获得。命令响应码则是键盘对系统命令的响应。其含义如下:
(1) FE H 请求重发一一对收到一个奇偶校验错或无效命令时, 请求系统重发命令;
(2) FA H 正常应答一一对任何一个有效的键盘命令, 均以该响应作答;
(3 ) OOH 超限应答一一当用户按键速度超出键盘内缓冲器存放的16 个扫描码时, 发出该应答;
(4 ) FD H 诊断故障应答一一键盘在自测试过程中, 若有故障则以FD H 应答;
(5) A A I硕诊断正常应答一一键盘在自测试过程中, 若无故障则以A A H 应答;
(6) E E H 回响命令应答一一键盘收到系统的回响命令(E E H ) 时, 也发一个E E H 作答;
(7 ) FO H 断开扫描码前缀字节一一断开扫描码占两个字节, 第一个字节总是刊H , 第二个字节和接通扫描码相同。
2、接口及软件设计
微机键盘与单片机的接口如图
3 所示。
图 4
在此对单片机无特殊要求, 可采用
A T M[E L 公司的A尸I名9 C5 1 单片机, 其指令系统和IN J、E L 公司的MCS -51 系列单片机完全兼容。单片机Pl.7 连数据线1)A T,P3.2 (IN ,I’0 )连时钟C LK。微机键盘与单片机只有建立正常的通信关系, 才能控制键盘及处理键盘数据。因此在软件设计上本文着重于介绍键盘数据的接收、键盘命令的发送、键盘的自检和复位这三部分。在软件设计时键盘命令只需使用一个,即初始化键(F FH )。对键盘数据的接收不作奇偶校验, 以简化编程。
2.1 键盘数据的接收
键盘数据的接收用IN TO 外部中断方法来实现; 在时钟线C LK 为低电平时产生一次中断, 读取数据线D A I,一位数据。键盘通过时钟线C L K 产生n 个时钟脉冲, 使单片机产生1 次中断, 才接收完一帧信息。中断次数的识别由单元E IC 来完成,E IC 的初值为1 1, 每中断一次减1。当E IC 为0 时, 表明一帧信息接收完, 同时禁止外部中断(E XO = O)、禁止键盘发数据(C LK = 0 )、置数据接收完成标志bR ()K = 1 并使E IC 的初值为1 1 。
键盘数据存放单元在K B D 中; 其初值为# o fh, 每中断一次数据线1)A T 向K B D 左移一位数据, 同时K B D 也左移出一位, 当检测到K丑D 左移出起始位“ 0 ” 时, K B D 中的内容即为要接收的键盘数据。当主程序处理完键盘数据K BD 后, 为了接收下一帧信息, 应置C LK= 1,EXO = 1 及bR O K = 0。
2.2.2 键盘命令的发送
键盘命令的发送采用刊中断方法来实现; 每次中断, 都对时钟线C LK 求反, 以产生n个脉冲, 把发送缓冲区SB L、S13H 中的信息经数据线1〕A T 送给键盘。
中断次数由单元T IC来控制, T IC 的初值为2, 每中断一次减1。当T IC 为0 时, 一帧n 位信息发送完, 置D A T= 1、CL K = 1、命令发送完成标志b R ()K = 1, 置T IC 的初值为2, 并禁止定时器工作(T R O= 0 ), 为发送键盘命令或接收键盘数据作好准备。
由SB H、SB L 组成的发送缓冲区, 用于存放要发送的一帧n 位信息。其中S 13H 为高字节,SB L 为低字节, 一帧信息在该缓冲区中的存放格式如图4 所示。
图 5
其中: d0 位为一帧信息的起始位;
功,d7 一d l 为键盘命令(田为最高位,d1 为最低位) ;D l 为奇偶校验位;砚为停止位;其余未定义。如单片机时钟频率为12 M llz , 定时器工作方式1, 要确保键盘对时钟周期为5 0 u s 的要求, 则时间常数取值为TL0 = # ocdh,THO = # offh。