打印

如何在查询键盘的同时动态刷新显示?

[复制链接]
2890|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tyrone3000|  楼主 | 2010-4-22 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
tyrone3000|  楼主 | 2010-4-22 11:01 | 只看该作者
咋发这么多表情?
是不是非得用 多任务处理?

使用特权

评论回复
板凳
ayb_ice| | 2010-4-22 11:46 | 只看该作者
两个没有关系的程序,定时刷新即可

使用特权

评论回复
地板
tyrone3000|  楼主 | 2010-4-22 12:27 | 只看该作者
我的显示是液晶,程序量还是不少的!
键盘用的是HD7279A,没读一次键盘用的时间也不少!
不知道ayb_ice说的定时刷新是什么意思?

使用特权

评论回复
5
lwq030736| | 2010-4-22 13:11 | 只看该作者
用中断就可以了吧

使用特权

评论回复
6
ayb_ice| | 2010-4-22 13:24 | 只看该作者
我一般是有按键会立刻刷新,同时会定时(每一定时间间隔)刷新

使用特权

评论回复
7
szshawn2010| | 2010-4-22 14:31 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-22 14:33 编辑

执行动态描述中断子程序后面再加一段键扫描。然后再退出中断子程序。

或者:按键做成一个 外部中断  。通过二极管连到 外部中断口上。当有按键时,进入外部中断子程序,然后再判断到底是哪一个键。然后退出。

使用特权

评论回复
8
tyrone3000|  楼主 | 2010-4-22 15:23 | 只看该作者
我用的按键芯片是HD7279A。该芯片是个串行读写,在读键值需要一定的时间,不适合放在中断子程序。
另外显示程序的数据量也比较大也不适合放在中断子程序中。
还有就是在我对系统进行参数设置的时候不需要动态刷新。
在参数设置完毕后,希望没有按键的时候动态刷新

使用特权

评论回复
9
ayb_ice| | 2010-4-22 15:57 | 只看该作者
LS
为什么这也不适合放在中断,那也不适合放在中断,合理分配中断优先级即可,何况你的键盘都使用了专用芯片,难道比完全程序还费时间,IIC,SPI接口也就一瞬间的事。
当然我也认为这些放在主循环完全可以

使用特权

评论回复
10
szshawn2010| | 2010-4-22 16:22 | 只看该作者
感觉无语。
拜托查一下程序结构。如果一个稍大一些的程序无法 不能应用中断。我想是程序思路出了问题,也许这个程序工作是正常的,但是没有最大化的节约CPU资源

使用特权

评论回复
11
一棵小草| | 2010-4-22 19:57 | 只看该作者
感觉LZ方向错误了

你的意思是这样吗?
void main(void)
{
       while(!key);      //如果没有按键就一直查询?然后你不懂怎么刷新LCD?是这样吗?
                     //如果是这样也太搞笑了---------
        -------                       
}
//如果不是这样,那么可以下面的不行吗?很简单啊,很多人都这样用
void main(void)
{
       if(flag_20ms == 1) key_scan();  // 20ms查询一次按键
       if(flag_10ms == 1) lcd_display(); // 10ms 刷新一次LCD              
}

key_scan函数执行的时间应该不会很长的,我就是没见过。

使用特权

评论回复
12
maomao2126| | 2010-4-23 09:02 | 只看该作者
感觉楼主方向错了,有时候用中断进行键盘扫描是最简单有效的方法

使用特权

评论回复
13
反质子| | 2010-4-23 09:36 | 只看该作者
中断不能用 MY GOD

还多任务处理呢!!!在一个大循环里面都能做到

使用特权

评论回复
14
tyrone3000|  楼主 | 2010-4-23 14:53 | 只看该作者
明白了 谢谢各位!
是我搞的太复杂了

使用特权

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

本版积分规则

97

主题

474

帖子

1

粉丝