找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1981|回复: 5
收起左侧

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

[复制链接]
ID:656189 发表于 2019-12-4 19:31 | 显示全部楼层 |阅读模式
我学校要求做的是比赛记分器,两位的数码管,现在就是功能都可以实现,五个按键两个加,两个减,还有一个复位,每次我按下按键数码管都要黑一下再显示,我觉得是我程序没有写好,望各位大佬指点一下下。 电路图.png

工程1.png

工程2.png

工程3.png




回复

使用道具 举报

ID:584814 发表于 2019-12-4 21:34 | 显示全部楼层
除了K5其他按键都有delay()延时,将delay(150)改小点试试;或者利用视觉暂留将显示写在中断里。
回复

使用道具 举报

ID:422705 发表于 2019-12-4 23:22 | 显示全部楼层
消隐。。。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

ID:656396 发表于 2019-12-4 23:49 | 显示全部楼层
视觉暂留吧,或者用下薄膜的消抖函数
回复

使用道具 举报

ID:656419 发表于 2019-12-5 05:31 | 显示全部楼层
消抖的延迟时间一般20就够,这个时间和晶振有关系
回复

使用道具 举报

ID:213173 发表于 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黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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