14.1.2 键盘设计注意事项

对于键盘的程序设计,需要及时并且准确地响应按键的动作。在进行单片机键盘接口设计的时候,需要注意如下几个方面。

1.合理的按键编码

按键编码也就是在单片机程序中,每个按键动作对应的键值。当按键按下的时候,键盘将向单片机发送该按键对应的键值,单片机程序对不同的键值做出不同的响应。因此,要求每个按键对应一个唯一的键值。

在硬件结构上,键盘按键使用单片机的I/O线与CPU进行通信,而单片机I/O线接受的是高低逻辑电平信号。因此,不同的键值可以表示为I/O线上不同的高低电平的组合。键盘编码设计的首要任务就是选择合理的键盘结构,为每个按键分配不同的键值,以供单片机程序识别和响应。

2.可靠的输入检测

可靠的输入检测是让单片机程序能够正确无误地识别是否有按键动作,以及是哪个按键按下。键盘的可靠输入是键盘接口设计的关键点。由于键盘的按键均为机械触点,根据触点的机械弹性效应,在按键按下和断开的时候,接触点处会出现抖动,这样可能导致误响应或者多次响应等。因此,对于键盘输入的可靠识别和检测需要在程序中做如下两方面的处理。

❑消除抖动影响。由于材料机械弹性效应的不同,按键的抖动时间长短不等,一般大致在5~10ms之间。根据这个特征,可以在硬件或者软件中采取相应的措施来消除抖动的影响。通常来说,采用延时程序可以同时达到去抖动。采用这种方法时,当程序检测到有键按下,便执行一个10ms的延时程序,然后再检测一次,看是否该键仍然闭合。如果仍然闭合则可以确认该按键确实被按下,从而可以消除抖动的影响,便可以执行相对应的操作。

❑一次按键处理。手工操作需要一定的时间,大致为0.1~2s,这相对于单片机的运行频率来说是非常慢的。当按键按下之后,有可能导致单片机程序对该按键操作响应多次。在程序中可以增加相应的识别按键松开的程序检测,来避免对一次按键输入的多次响应。

3.程序响应

单片机对键盘输入的响应可以采用两种方式:查询和中断。查询方式适用于一般用途的程序,需要在程序中循环查询每一个按键的状态,因此会占用大量的CPU处理时间。中断法适用于一些对实时性要求较高的复杂单片机系统,只有按键按下的时候才向CPU申请中断进而执行相应的程序段,平时不会占用CPU处理时间。

总的来说,在单片机程序中,对键盘的处理主要包括如下几个方面。

❑检测按键是否按下。

❑如果按键被按下,执行延时程序,用来实现软件消除抖动的影响。

❑扫描按键,准确判断被按下的按键的键值。

❑转向相应的按键处理子程序。在按键处理子程序中,不能执行过于繁重的任务而延误了对下一次按键动作的响应。