微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于AT89C51的操控键盘的设计

基于AT89C51的操控键盘的设计

时间:08-08 来源:中电网 点击:
引 言

在一些自动化测量或智能设备中,微机作为控制中枢,对多个功能单元进行控制与管理,以实现仪器设备的系统功能。键盘是人机通信的基本设备,操作者通过它完成对设备的操控。PC机通用键盘是与主机分开的独立设备,其结构外形已经固定,需要较大的安装空间。但在所研制的产品设备中,系统上电运行后,往往只需通用键盘中的少量按键即可完成人机通信或控制,如数字键O~9、→、←、↑、↓、Esc等按键。在这种情况下,因为结构尺寸的限制,并为了使操控方便、设备简化等,不便采用通用键盘,而需使通用键盘小型化,并且与产品设备融为一体。因此需要研制小型一体化专用键盘。

采用小型一体化专用键盘不但可完成按键的功能,而且要求根据仪器外形进行一体化优化设计,使产品外型美观、布局合理。小型一体化专用键盘不仅适用于一般的仪器控制系统,而且可以用于军工加固计算机系统中。军工产品中的微机多为加固PC类计算机,其采用PC机通用键盘。本文以PC机通用键盘为例,阐述研制小型一体化专用键盘的方法。

1 设计原理

PC机通用键盘通过"PS/2"5芯电缆与主机相连。该5芯电缆是键盘与主机之间信息与数据传输的路径,定义如下:1端,RESET;2端,+5 V;3端,CLOCK;4端,地;5端,按键波形。其中1、2、4端的信号由主机内部确定;3端为时钟信号CLOCK;5端为按键波形,此波形随按下按键的不同而变化。

采用本文介绍的单片机控制系统和软件编程的方法,可以准确模拟按键波形,使小型专用键盘的按键波形与PC机通用键盘对应按键波形一致。具体方法如下:首先用示波器测出PC机通用键盘各按键按下时的波形,并保存起来;然后用单片机控制系统和软件编程模拟出各按键的CLOCK波形和按键波形,并确保各按键的CLOCK波形和按键波形时序匹配、形状逼真,再将按键信息通过5芯电缆传输给主机。所选按键可根据需要安装在产品的面板上等易于操作的地方。当操作者按下某键时,单片机控制系统产生相应的CLOCK波形与按键波形送给主机,实现按键功能。这样就完成了小型专用键盘的设计。

2 硬件电路及软件

2.1 单片机控制电路

采用单片机系统实现小型专用键盘的硬件电路,如图1所示,设计完成的小型专用键盘的按键有18枚,排成6行×3列的矩阵。单片机可根据需要安装在主机内部的接口板上,按键则安装在产品的面板等易操作的地方。当按下某按键时,单片机控制系统将产生的CLOCK信号与按键信号通过"PS/2"5芯电缆传送给主机。此硬件电路简单,可充分利用软件编程来模拟按键波形,实现键盘功能。系统要判断某一按键是否按下,可以利用软件逐一查询6行×3列矩阵中的按键,然后输出相应的按键模拟波形,从而实现按键功能。

2.2 举 例

下面以按键"8"为例,说明如何从PC机通用键盘中"取出"所需按键,并保持各按键功能,形成小型专用键盘。首先用示波器测出在PC机通用键盘上按下"8"键时,5芯键盘通信电缆的3端和5端的波形。按键"8"的波形测量波形如图2所示。

示波器通道1指示信号电缆3端的CLOCK波形,通道2为电缆5端的按键"8"的波形。用单片机软件编程模拟图2所示波形。按照图1所示硬件电路,编程使单片机89C51的P2.4端产生CLOCK波形,P2.6端产生按键波形;P2.4端与5芯键盘电缆的3端相连,P2.6端与电缆的5端相连。当操作者按下产品面板上的"8"键时,程序执行模拟"8"键波形的子程序,并将模拟出的波形传送给主机,这样就完成了按键"8"的设计。用同样的方法,可以设计出小型专用键盘上其他按键。

3 设计中要注意的问题

3.1 准确地模拟按键波形

每一枚按键的波形包括电缆3端的CLOCK波形与电缆5端的按键波形。各按键的CLOCK波形相同,如图2所示通道1的波形,由10个脉宽为40μs且间隔也为40μs的脉冲和1个脉宽为500 μs的脉冲形成CLOCK波形;而5端的按键波形则因按键的不同而各异。要准确地模拟按键波形并使之时序匹配,即准确地计算出脉冲的宽度,必须精确地计算出时间常数,做好延时程序。如果单片机控制电路采用12 MHz晶振,则一个机器周期为1μs,时间常数X的计算公式为:

(循环体字节数)×机器周期×时间常数X=延时时间

在上式中,循环体字节数、机器周期、延时时间都已知,则时间常数x易求得。例如,延时1 ms程序如下:

利用上面公式可得到:(1+1+2)×1×X一1 000 μs则X=250μs,将其带入上面的程序段中,执行该段程序,能实现1 ms精确延时。准确地计算出时问常数,精确地实现延时,就能确保模拟波形的准确性。3.2按键的抖动问题

凡有按键操作的系统,在设计中一般都要考虑按键的去抖。由于按键的机械触点有弹性作用,在闭合及断开瞬间均有抖动过程,抖动的时间长短与开关的机械特性有关,一般为5~lO ms。为了保证按键的1次闭合仅作1次按键输入处理,就必须消除按键抖动对系统的影响。

采用软件编程消除按键抖动影响的方法是:当检测到某一按键按下时,执行相应模拟按键波形的子程序后,应再判断该键是否弹起,若没有弹起则等待,直至按键弹起;按键弹起后,延时20 ms再继续执行后面的程序,以消除按键抖动现象。

3.3 同行多个按键同时有效的问题

当有按键操作,按下某一键时,可能出现该键同一行线上的其他多个按键同时有效的现象。采用屏蔽非当前列线的方法可解决这一问题:当检测有无键按下时,须对列线和行线依次扫描,当扫描至某一列线时,该列线置"O",同时其他列线置"1",这样就屏蔽了非当前列线,从而准确地判断出某键是否按下。

3.4 按键波形被吃掉的问题

有些按键的波形只有1段,如图2所示"8"键的波形;而有些按键的波形有2段或2段以上,如图3所示"十"上移键的波形。2段波形间隔1.6 μs,用单片机仿真按键波形时,可看到第1段波形形成后,其后3 ms的时间内时钟CLOCK保持低电平,导致按键第2段波形被吃掉。为了解决这一问题,在模拟具有2段以上波形的按键时,在2段波形之间应加入3 ms的延时,使按键的第2段波形脱离时钟CLOCK的低电平区。这样按键的第2段波形就不会被吃掉,从而保证了按键波形的完整,实现按键功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top