完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
就是个位的变化总是跳跃的,比如按一次键,个位就从1跳到6,没有规律;其他三位正常;
请问应该怎么调呢?
|
|
相关推荐
5个回答
|
|
把这段程序替换效果更好,利用主循环计数消抖,不必延时等待。
void key_scanf() { static bit key1_sign=0,key2_sign=0; //静态-变量按键自锁标志 static uchar count1=0,count2=0; //静态-计数变量 if(key1==1) //检测按键1没有按下 { key1_sign=0; //按键1自锁标志清0 count1=0; //消抖计数1清0 } else //按键1按下 { count1++; //消抖计数1自+1 if(count1>=100) //100次检测按键如果为0 { if(key1_sign==0) //按键1自锁标志为0 { count1=0; //消抖计数1清0 key1_sign=1; //按键1自锁标志置1 if(aa==0) aa=9999; //四位数,如果到了0,到最大 else aa--; //否则,减一 } } } if(key2==1) //检测按键2没有按下 { key2_sign=0; //按键2自锁标志清0 count2=0; //消抖计数2清0 } else //按键2按下 { count2++; //消抖计数2自+1 if(count2>=100) //100次检测按键如果为0 { if(key2_sign==0) //按键2自锁标志为0 { count2=0; //消抖计数2清0 key2_sign=1; //按键2自锁标志置1 if(aa==9999) aa=0; //四位数,如果到了最大,归零 else aa++; //否则,加一 } } } }
最佳答案
|
|
|
|
按键电路有没有防抖动,你可以加一段小程序,这段程序模拟有按键,固定一个延时进行加减显示,先确定加减和显示部分有没有问题,如果没问题,那可能是按键没有防抖动了。
|
|
|
|
需要在按键扫描程序里加一个标志,否则按一次键被多次响应。并要增加按键抬起识别。
void key_scanf() { static bit key_sign=0; //静态位变量,按键标志 if(key1==0) { delay(10); if(key1==0) { if(key_sign==0) //按键有效标志为0 { key_sign=1; //按键有效标志置1 if(aa==0) aa=9999; //四位数,如果到了0,到最大 else aa--; //否则,减一 } } } else { key_sign=0; //按键有效标志清0 } } |
|
|
|
按键应该做个防抖 或者说叫按键时间判断 一定时间内的按键有效 短了 不要 长了 不要 这样才不会乱跳
|
|
|
|
谢谢大家的指导!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
308 浏览 0 评论
431 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十四章 image图像滤波实验
372 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】简介、环境搭建、工程测试
395 浏览 0 评论
730 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11629 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-7 13:22 , Processed in 0.798504 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号