如何用 C 语言编写字母数字 4x3 键盘

发布于 2024-12-03 03:15:31 字数 344 浏览 5 评论 0原文

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

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

对于输入,我使用 4x3 的键盘矩阵。我已经编写了 4x3 键盘的代码,将输入作为数字。但现在我想把它变成字母数字。就像我们在手机键盘中看到的那样。

示例 - 键 2 将用于获取 2,a,b,c 的输入。单击键 2,我们将得到数字 2,双击键 2,我们将得到“a”,三击键 2,我们将得到“b”,四次按键 2,我们将在屏幕上得到“d”。

希望大家都明白我上面的意思。有人可以用 C 语言提供一些代码来实现这种类型的功能吗?

Currently I am working on a project which has following setup.

  1. AVR micro-controller
  2. IDE - AVR Studio
  3. Operating system - FreeRTOS

For input I am using a keypad matrix of 4x3. I have already coded for 4x3 keypad to take inputs as numbers. But now I want to make it alpha-numeric. Like we see in our mobile phone keypads.

Example - Key 2 will be used to take input for 2,a,b,c. Single press key 2, we will get number 2, double press key 2 then we will get 'a', tripple press key 2 then we will get 'b' and fourtimes press key 2 then we will get 'd' on scree.

I hope all of you understood what I mean above. Can anybody give some code idea in C to implement this type of functionality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幼儿园老大 2024-12-10 03:15:31

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

You most likely just need to keep track of the system time of the last key press and compare it to the system time of the next key press. If the current key is the same key as the last press and the time between presses is small (say, under one second), replace the current input character with the next character in the list of characters for that key. If the time difference is more than one second, or if a different key was pressed, accept the current character and add a new character, starting at the first character in the list for the key.

薯片软お妹 2024-12-10 03:15:31

看到问题是当您在 xxx 秒后 30 毫秒后按下 2(比如说)时,如果您检查并发现按下了 2,那么有两种情况。
案例1>按下的键是新的并且与之前的相同
案例2>按下的键与上一次相同,从 xxx 到现在连续按下。

see the issue is when you press 2(say) in xxx sec time later after 30 millisec if you check and find that 2 is pressed then there are two cases.
case1> the pressed key is new and is same as previous
case2> the pressed key is same as previous and it is pressed from xxx till now contineously.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文