单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 117|回复: 5
打印 上一主题 下一主题
收起左侧

[小白求助]单片机按键数码管闪烁问题

[复制链接]
跳转到指定楼层
楼主
我学校要求做的是比赛记分器,两位的数码管,现在就是功能都可以实现,五个按键两个加,两个减,还有一个复位,每次我按下按键数码管都要黑一下再显示,我觉得是我程序没有写好,望各位大佬指点一下下。










分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
沙发
man1234567 发表于 2019-12-4 21:34 | 只看该作者
除了K5其他按键都有delay()延时,将delay(150)改小点试试;或者利用视觉暂留将显示写在中断里。
板凳
1726947341 发表于 2019-12-4 23:22 | 只看该作者
消隐。。。。。。。。。。。。。。。。。。。。
地板
EUwing 发表于 2019-12-4 23:49 | 只看该作者
视觉暂留吧,或者用下薄膜的消抖函数
5#
axjuan 发表于 2019-12-5 05:31 | 只看该作者
消抖的延迟时间一般20就够,这个时间和晶振有关系
6#
wulin 发表于 2019-12-5 06:54 | 只看该作者
是这种按键程序的缺陷(死循环等待松手)导致数码管显示异常。解决方法1:换用合理的按键程序。解决方法2:开定时器中断,把数码管显示放在中断中。
按键扫描示例:
  1. void keyscan()                                        //按键扫描程序
  2. {
  3.         static bit key_sign=0;        //按键自锁标志
  4.         static uchar count=0;                //计数变量                       
  5.         if(!key)                                        //检测按键如果为0
  6.         {
  7.                 if(++count>=150 && key_sign==0)
  8.                 {                       
  9.                         key_sign=1;                        //按键自锁标志置1
  10.                         //任务
  11.                 }
  12.         }
  13.         else                                                        //按键抬起
  14.         {
  15.                 key_sign=0;                                //按键自锁标志清0
  16.                 count=0;                                        //消抖计数清0
  17.         }
  18. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表