标题: 单片机按下一次KEY1实现数码管一直加一,按下KEY2后,停止加一 [打印本页]

作者: quango    时间: 2022-10-22 08:28
标题: 单片机按下一次KEY1实现数码管一直加一,按下KEY2后,停止加一

如何在此基础上,按下按键KEY2=P3^2,实现数码管一直加一,按下按键KEY2=P3^3后,实现停止加一。我经过反复实验,没有找到解决的办法,(只能做到按下按键加一,没办法做到按下一次按键后,一直加一)因为是初学者的缘故,很难想出合适的答案,希望各位大佬能够给予帮助。

作者: 一事无成    时间: 2022-10-22 10:28
用循环,按key1让if条件为1,按key2让if条件为0,if条件要用中间变量。先判断key1,key2是否按下,按下则给中间变量赋相应的值,否则中间变量维持上一次的值,最后大循环。但key最好还是用外部中断。
大概是这样:
  1. while(1)
  2. {
  3.         if(key1==0) i=1;
  4.         if(key2==0) i=0;
  5.         if(i)
  6.         {
  7.                   display(number);
  8.                   number++;
  9.         }               
  10. }
复制代码

作者: 1986539082    时间: 2022-10-22 11:49
增加延时来判断,持续按下某按键多长时间后,在程序内持续加1
作者: 1986539082    时间: 2022-10-22 11:50
在程序内加一个延时判断,当按键按下大于多长时间后,在程序内使数码管持续加1
作者: 人中狼    时间: 2022-10-22 14:29
按键判断,按键处理,都要做成单独的模块,增加相应的判断标志




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1