按键单双击流水灯

2020-02-04 09:11发布

一个按单击一个灯流水,双击两个灯流水,三击三个灯流水。而且任何时候,单击,双击,三击 都能够切换到相应的流水模式。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
28条回答
acercqu
1楼-- · 2020-02-04 12:35
这是我写的程序,大家看看问题在哪里
#include"reg51.h"
sbit s17=P3^2;   //按键
#define uint  unsigned int
#define uchar unsigned char
void one();
void two();
void three();
void delay(uint time);
uchar c;
uchar k,temp;   
void main()   
{
   uchar time;
  while(1)
  {
    if(s17==0)
   {
       
    delay(20);
    if(s17==0)
    {
        c++;
        }
        if(c==1)
        {time=0;}
    if(c==4)
    {c=0;}
    }

  if(++time>=150)
  {       

      switch(c)
      {
      case 1:
      one();
      break;
      case 2:
            two();
      break;
     case 3:
       three();
      break;
     default :
      break;
      }
}
   }
}



void delay(uint time)                                                                       
{
    uint i,j;
    for(i=0;i<time;i++)
    for(j=0;j<50;j++);
}


void one()
{
  
         uchar code nu[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
         for(k=0;k<8;k++)
             {
             P1=nu[k];
             delay(1500);
         }
}
void two()
{      
        uchar code num[7]={0x3f,0x9f,0xcf,0xe7,0xf3,0xf9,0xfc};
        for(k=0;k<7;k++)
             {
            P1=num[k];
            delay(1500);
        }
         
         
          

}

void three()
{
        
         uchar code numm[6]={0x1f,0x8f,0xc7,0xe3,0xf1,0xf8};
         
         for(k=0;k<6;k++)
             {
             P1=numm[k];
             delay(1500);
         }
         
         
            
}

acercqu
2楼-- · 2020-02-04 18:05
acercqu
3楼-- · 2020-02-04 21:57
做出这,就提升一个按键境界
.titrwh
4楼-- · 2020-02-05 00:27
 精彩回答 2  元偷偷看……
acercqu
5楼-- · 2020-02-05 03:36
本帖最后由 acercqu 于 2012-4-3 09:35 编辑

怎么加入松手检测?


  加了松手检测就能解决问题吗?
w514640
6楼-- · 2020-02-05 06:22
来个延时就可以了吧

一周热门 更多>