打印

请教一个键盘持续按键问题

[复制链接]
3217|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happystar|  楼主 | 2007-3-7 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前正做一个键盘扫描的程序,以前做的时候实现效果如下:
1》如果按住一个键不放,那么程序就连续检测电平,所以屏幕是黑的,直到放开按键才显示下一个菜单。
2》连续按键的时候,程序扫描一个给定的时间,所以就是等价于连续按n次的效果。
平时也认为这样就习惯了,没往多处想。今天突然玩手机的时候,发现连续按住一个键(比如按1,则屏幕上只是显示一个1,放开键的还是不变啊)效果和按一下键一样。
我觉得这个方法比我以前做的好多拉,请教大家:这个怎么来实现啊?谢谢拉

相关帖子

沙发
dai_weis| | 2007-3-7 20:35 | 只看该作者

不知道你原来怎样在程序和硬件中使用

我使用定时扫描方式,既可以实现下压有效,也可以释放有效,也能实现下压连续。

使用特权

评论回复
板凳
hotpower| | 2007-3-7 20:49 | 只看该作者

这个容易~~~

使用特权

评论回复
地板
happystar|  楼主 | 2007-3-7 20:57 | 只看该作者

谢谢楼上各位

to dai_weis :我也是在定时中扫描的。以前也粗略的看过hotpower按键程序。那时侯感觉那样做太复杂了,没考虑那么多的。
我只是实现释放有效的,下压连续则出现黑屏。
谢谢hotpower,这会好好一下你的**。

使用特权

评论回复
5
turmary| | 2007-3-7 21:00 | 只看该作者

这个程序只有键按下才处理。

bit key_scan() {
  key_s = KEY1
  return (key_s ^ key_v);
}

.....
{
  while(1){
    if (key_scan()){
      delayms(10);
      if (key_scan()) {
        key_v= key_s;
        if (key_v == 0) proc_key(); //处理按键
      }
    }
  }
}

使用特权

评论回复
6
happystar|  楼主 | 2007-3-7 21:25 | 只看该作者

谢谢turmary,

嘿嘿,多谢提醒啊,你的这个程序如果连续按键的话,那么是不是这个处理函数要执行多次呢?

使用特权

评论回复
7
hotpower| | 2007-3-7 22:27 | 只看该作者

下压连续则出现黑屏问题

主要是delayms()的问题~~~
键盘消抖不要用delayms().
网上我的键盘程序很多,我也搞不清了~~~
不过你的这种键我用的很多~~~
例如:短压键计数1,长压键计数自动递增.
这在键盘调节参数中很常用~~~

使用特权

评论回复
8
dai_weis| | 2007-3-7 23:55 | 只看该作者

键盘扫描不用太快

我一般用定时器,大约100-300ms扫描一次,动态键盘扫描快些,静态慢些,
键盘采用编码制,每次扫描之后读取编码,和上一次比较用来决定状态,没有按下则返回“0”,如果需要延时或者按下不放,仅当作一次则增加一个计数变量,当键盘返回值不同清变量的值,相同则置位,不同的置位数值可以得到不同的效果。(现在我大部分都是扫描键盘,静态用的很少了)

使用特权

评论回复
9
ayb_ice| | 2007-3-8 09:15 | 只看该作者

随便说说

  这次的键值与上次的比较,有键按下且有变化则发送按键值,否则不发送按键值,当然要考虑去抖动的问题.

使用特权

评论回复
10
happystar|  楼主 | 2007-3-8 17:47 | 只看该作者

多谢楼上各位

我平时做的都是放开按键返回类型码。看了大家的思想感觉开阔了很多的。谢谢大家,多多向你们学习

使用特权

评论回复
11
zoupeng139| | 2007-3-8 21:49 | 只看该作者

我得键盘使用的现成的芯片sk5278

按下一次时执行完程序后又执行一遍
是延世没设置合适
大侠们怎么设的 ?

使用特权

评论回复
12
258963519| | 2007-3-21 22:29 | 只看该作者

在延时时不使用延时程序 而用显示字程序替代会好一些

我一直这么用 效果挺好的

使用特权

评论回复
13
nust1996| | 2007-3-22 08:38 | 只看该作者

你只要设置一个标志位

如果按下的时候已经处理过了,释放的时候就不要再处理了
同时针对连续键,可以根据不同键值设定使能标志

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

409

帖子

1

粉丝