打印

请问,出现这样的问题该怎样解决?

[复制链接]
2046|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tdhlq|  楼主 | 2007-10-26 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用89C52的P20--P23这四个I/O口分别控制四个数码管的字位口,其余四个I/O口通过四个按键接地,用动态扫描方式控制数码管.现在的问题是当按下任意一个按键时,四个数码管就会同时闪烁一下,如果长按,就会不停的闪,该如何解决?

相关帖子

沙发
xwj| | 2007-10-26 17:27 | 只看该作者

程序问题

使用特权

评论回复
板凳
tdhlq|  楼主 | 2007-10-26 17:37 | 只看该作者

的确是程序问题,我把按键消抖时间减小后,效果有

明显的改变,现在是按下按键后会多次扫描按键.

使用特权

评论回复
地板
zusen| | 2007-10-26 17:57 | 只看该作者

用定时器扫描数码管

可解决问题

使用特权

评论回复
5
5_0_5| | 2007-10-26 20:42 | 只看该作者

是没有检测按键松开吧

使用特权

评论回复
6
sanwa_chen| | 2007-10-26 21:52 | 只看该作者

明显的程序问题!

程序结构问题。
数码管扫描过程是连续的过程,你按键扫描是去抖动又做成了软件延时,当你扫描到按键时会延时来销抖动,这时扫描数码管的连续过程被打断,自然会闪烁。
建议修改程序:
按键消抖不要用软件延时在傻傻的等,用其他方法。建议去看看坛内大侠的**,怎么扫描及处理按键。怎么样安排数码管的扫描!

使用特权

评论回复
7
grady1125| | 2007-10-26 21:57 | 只看该作者

yes

ls说得对要等待按键放开!

使用特权

评论回复
8
ayb_ice| | 2007-10-27 08:01 | 只看该作者

程序架构不合理

使用特权

评论回复
9
computer00| | 2007-10-27 09:03 | 只看该作者

扫描键盘和刷新LED应该放在定时器中断里面处理

使用特权

评论回复
10
starlite_jason| | 2007-10-27 10:34 | 只看该作者

刷新LED最好还是在中断里做

按键扫描还是不在中断里吧,中断中尽量不要长代码

使用特权

评论回复
11
computer00| | 2007-10-27 10:46 | 只看该作者

按键扫描也放在中断处理里好,扫描键盘代码很少的。

使用特权

评论回复
12
xwj| | 2007-10-27 11:19 | 只看该作者

按键程序中不要延时,要靠多次扫描来判断啊

关于按键程序的讨论太多了,去看我的帖子或搜索论坛旧贴吧

使用特权

评论回复
13
ayb_ice| | 2007-10-27 15:22 | 只看该作者

全部在主循环里也是可以的。。。

但不能调用软件延时程序。。。

使用特权

评论回复
14
dcp| | 2007-10-28 13:47 | 只看该作者

找HOTPOWER上一上"零耗时"的课

要学会用定时中断来管理程序

程序中不能有 
Delay(unsigned char i)
{
    while(i--);
}
之类的延时程序

如要延时,可在定中断中做

使用特权

评论回复
15
sanwa_chen| | 2007-10-29 11:28 | 只看该作者

其实,LED也是扫描,按键也是扫描

完全可以在同一个时候处理调这两个扫描嘛

使用特权

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

本版积分规则

28

主题

47

帖子

0

粉丝