标题: 单片机按键暂停数码管显示怎么设计程序? [打印本页]

作者: lx驾    时间: 2018-12-27 16:35
标题: 单片机按键暂停数码管显示怎么设计程序?
请问可以通过按键暂停数码管显示(主程序)吗?如果能,要怎么操作呢?


作者: areyouok    时间: 2018-12-27 21:50
能啊,换内容都行!数码管显示只不过是在做扫描动作!你想暂停就是不改变显示的变量值,假如你的数字一直在0-9间变换,你让该变量不加也不减,它就是一个固定值,显示时就好像暂停效果。做一个条件语句,如:if(flag==2){i=i+0;};  else  (flag==1)i++;........后面就是你具体化了
作者: yzwzfyz    时间: 2018-12-27 21:52
首先了解数码管是如何显示的?再解决什么是“暂停显示”?
弄清楚以上两点,你就可以解决问题了。
作者: 1092648746    时间: 2018-12-27 23:31
暂停显示是指数码管熄灭吗?还是数字停住不动?要熄灭的话直接写数据进去就可以了,数字停止不动这个嘛要看程序了,我做的话就设个标志位加个if判断影响数码管刷新。
作者: jll586    时间: 2018-12-28 08:39
如果用定时器和按键实现的话,可以使用标志位flag实现,flag=0时定时器启动,flag=1时定时器关闭
  1.                 if(!c_to_puse)  //暂定和开始计时(S4)
  2.                 {
  3.                         delay_50us(10);
  4.                         if(!c_to_puse)
  5.                         {

  6.                                 TR0=~TR0;
  7.                                
  8.                                 while(!c_to_puse)
  9.                                 {
  10.                                         for(num=0;num<6;num++)
  11.                                         {
  12.                                                 display(num,numduan_base[num]);
  13.                                                 delay_50us(30);               
  14.                                         }
  15.                                 }
  16.                         }                       
  17.                 }
复制代码

作者: robinsonlin    时间: 2018-12-28 09:25
一般实用的数码管刷新都是在定时器中断中进行的。那么可以用外部中断来实现你想要的功能。 在中断中判断按键抖动,并设置标志位(第一个标志位用来判断第一次按下,第二个标志位用来判断第二次按下)。在主程序中判断标志位,第一个标志为1时,关计时器中断,暂停刷新,进入while循环等待。两个标志位同时为1时,跳出while循环,开计时器中断,继续刷新数码管。如两个标志位同时为1,记得清零。
作者: TK2019    时间: 2018-12-28 10:56
按键判定不刷新
作者: Arvin0011    时间: 2018-12-28 11:26
可以,一个中断就行了

作者: chaoself    时间: 2019-1-3 21:47
写个中断就行了




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