2011-09-04 181 views
1

目前我正在进行如下设置的项目。如何用C编码字母数字4x3键盘

  1. AVR微控制器
  2. IDE - AVR工作室
  3. 操作系统 - FreeRTOS的

对于输入我使用的4x3的键盘矩阵。我已经编码为4x3键盘输入数字。但现在我想让它成为字母数字。就像我们在手机键盘上看到的一样。

示例 - 键2将用于输入2,a,b,c。单按键2,我们将得到数字2,双按键2,然后我们将得到'a',tripple按键2,然后我们将得到'b'和fourtimes按下按键2,然后我们会在屏幕上得到'd'。

我希望你们所有人都明白我的意思。任何人都可以在C中提供一些代码想法来实现这种类型的功能?

+1

您有任何方法可以向用户提供有关他所选择输入内容的反馈吗? – blueberryfields

+0

我想实现这一点,我想问你是否可以这样做。你能告诉我怎么样吗? –

回答

2

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

2

看到的问题是当你按2(说)在xxx秒后30毫秒后,如果你检查并发现2被按下,然后有两种情况。 case1>按下的按键是新的,并且与以前相同 case2>按下的按键与以前的按键相同,并且从xxx按下到现在持续按下。