如何用C代码填写字母数字4x3键盘

时间:2011-09-04 05:08:39

标签: avr keypad freertos

目前我正在开展一个具有以下设置的项目。

  1. AVR微控制器
  2. IDE - AVR Studio
  3. 操作系统 - FreeRTOS
  4. 对于输入我使用4x3的键盘矩阵。我已经为4x3键盘编码,将输入作为数字。但现在我想把它变成字母数字。就像我们在手机键盘中看到的一样。

    示例 - 键2将用于获取2,a,b,c的输入。单击按键2,我们将获得数字2,双按键2然后我们将得到'a',按下按键2然后我们将得到'b'并且四次按键2然后我们将得到'd'在scree上。 / p>

    我希望大家都理解我的意思。任何人都可以在C中提供一些代码构思来实现这种类型的功能吗?

2 个答案:

答案 0 :(得分:2)

您很可能只需要跟踪上次按键的系统时间,并将其与下一次按键的系统时间进行比较。如果当前键与上次按下的键相同,并且按下之间的时间很短(例如,小于一秒),则将当前输入字符替换为该键字符列表中的下一个字符。如果时差超过一秒,或者按下了不同的键,则接受当前字符并添加一个新字符,从列表中第一个字符开始。

答案 1 :(得分:2)

看到问题是当你在30毫秒之后的xxx秒时按2(说),如果你检查并发现2被按下则有两种情况。 情形1>按下的键是新的,与之前相同 情形2>按下的键与之前相同,从xxx按到现在为止。