在STC89C52RC中,键盘接口分为独立式按键和矩阵式键盘。如果项目中需要的交互较少,使用独立式键盘即可;如果输入参数较多,比方说打印机什么的,功能复杂的系统,则需要采用矩阵式键盘进行输入控制。
键盘的可靠输入要考虑两个方面的问题:
- 去抖动:目前的单片机键盘按键均为机械式触点,由于触点的机械弹性效应,在按键闭合和断开的时候,接触点的电压并不是立即变化,而是会出现抖动。根据按键的不同机械特性,抖动的时间长短不等,大致在5ms~20ms。
- 一次按键处理:当键盘按下之后,相应的按键编码以高电平的方式输入到单片机的I/O接口。按键闭合是有一定时间的。一般来说的,大致是0.1us~0.5us。因为单片机的执行速度很快,如果处理不当,就有可能一次按键操作被执行多次。
一般来说,硬件解决以上两个问题比较复杂,成本也高,而软件处理择简单实用。软件处理的方法是:当程序检测到有键按下时,执行一个10ms的延时程序,然后再监测一次,看是否该键仍然闭合。如果仍然闭合择可以确认确实有键按下,从而可以消除抖动的影响。
单片机对键盘的输入检测可以有查询和中断两种方式。查询适合用于一般用途的程序;中断适合一些较为复杂的单片机系统。
在程序中,对键盘的处理包括以下几个方面:
- 检测按键是否按下;
- 如果检测到按键被按下,可以执行软件去抖动,消除抖动的影响;
- 准确判断是哪个按键被按下;
- 转向相应的程序处理子程序
1、独立式按键实验