打印
[51单片机]

51单片机使用两片74HC595级联驱动八位数码管的同时扫描按键

[复制链接]
5429|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xd001|  楼主 | 2014-5-17 23:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xd001 于 2014-5-17 23:35 编辑

我是使用51单片机和74hc595 级联驱动数码管来做的一个时钟实时显示出来,现在是可以了,如果要调节时间的话我用的是三个独立的按键“K1”选择 确认 ,”K2“加, "K3"减  详情见附加仿真截图。

当我做到按键的时候问题来了,我在扫描按键的时候 数码管会闪烁,因为在扫描按键时去抖动加有延时函数(约20ms左右) 这样子的话数码管的刷新就在这时停止了!
就是想问下诸位大虾,有没有什么好的方法或者思路能够分享下,即能同时显示当前时间(不闪烁)的同时又扫描按键(加上程序去抖动) 扫描按键得等到按键松开后才执行对于的操作,不然一下就加很多,如果一直不放的话就会一直进行加减计算。
另外我是初学51 描述越通俗易懂越好:)

相关帖子

沙发
ningling_21| | 2014-5-18 09:48 | 只看该作者
数码管显示放在中断里面,按键放在主程序中,延时就不会对显示有影响了...

使用特权

评论回复
板凳
dirtwillfly| | 2014-5-18 10:03 | 只看该作者
扫描按键时去抖动延时也可以采用定时器,尽量少用delay函数,尤其是超过1mS的延时

使用特权

评论回复
地板
loliweive| | 2014-5-18 10:14 | 只看该作者
楼上方法都可以一试。

使用特权

评论回复
5
ayb_ice| | 2014-5-18 10:51 | 只看该作者

动态扫描必须放在定时中断里,而且中断优先级还要高

使用特权

评论回复
评论
zhaoyu2005 2017-4-26 08:11 回复TA
这个还真不一定,如果没其他很多功能,或者定时中断有它用,完全可以用扫描占用的时间做去抖延时,只是费点劲儿 
评分
参与人数 1威望 +1 收起 理由
xd001 + 1 赞一个!
6
xd001|  楼主 | 2014-5-23 09:08 | 只看该作者
dirtwillfly 发表于 2014-5-18 10:03
扫描按键时去抖动延时也可以采用定时器,尽量少用delay函数,尤其是超过1mS的延时 ...

我在按键检测松手时 调用了显示扫描函数 在实际的开发板上木有闪烁的现象 问题得到解决 用定时器 我也试过 也可以 后面还是在松手检测的时候调用显示扫描函数

使用特权

评论回复
7
dengm| | 2014-5-26 15:02 | 只看该作者
扫描按键时去抖动, 写成状态机, 在调用了显示扫描函数后调用. (没有delay函数)

使用特权

评论回复
8
shuiqinghan2012| | 2017-4-25 12:50 | 只看该作者
主要思路还是把for循环的delay用定时器替代

使用特权

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

本版积分规则

1

主题

3

帖子

1

粉丝