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

[复制链接]
6111|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 | 显示全部楼层
楼上方法都可以一试。
ayb_ice 发表于 2014-5-18 10:51 | 显示全部楼层

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

评论

这个还真不一定,如果没其他很多功能,或者定时中断有它用,完全可以用扫描占用的时间做去抖延时,只是费点劲儿  发表于 2017-4-26 08:11

评分

参与人数 1威望 +1 收起 理由
xd001 + 1 赞一个!

查看全部评分

 楼主| xd001 发表于 2014-5-23 09:08 | 显示全部楼层
dirtwillfly 发表于 2014-5-18 10:03
扫描按键时去抖动延时也可以采用定时器,尽量少用delay函数,尤其是超过1mS的延时 ...

我在按键检测松手时 调用了显示扫描函数 在实际的开发板上木有闪烁的现象 问题得到解决 用定时器 我也试过 也可以 后面还是在松手检测的时候调用显示扫描函数
dengm 发表于 2014-5-26 15:02 | 显示全部楼层
扫描按键时去抖动, 写成状态机, 在调用了显示扫描函数后调用. (没有delay函数)
shuiqinghan2012 发表于 2017-4-25 12:50 | 显示全部楼层
主要思路还是把for循环的delay用定时器替代
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部