用按键控制LED

[复制链接]
3412|40
touser 发表于 2018-5-16 22:54 | 显示全部楼层
直接一个比较指令就搞定
myiclife 发表于 2018-5-16 22:55 | 显示全部楼层
构造4位串入并出移位寄存器
uytyu 发表于 2018-5-16 22:55 | 显示全部楼层
用C语言编写吗?
iyoum 发表于 2018-5-16 22:56 | 显示全部楼层
编写就是i++就判断。
wwppd 发表于 2018-5-16 22:56 | 显示全部楼层
看不到你的硬件电路,帮不了你。
htmlme 发表于 2018-5-16 22:56 | 显示全部楼层
具体要使用的是什么芯片,要多大的驱动
yujielun 发表于 2018-5-16 22:56 | 显示全部楼层
最简单的就是外部中断处理。
typeof 发表于 2018-5-16 22:56 | 显示全部楼层
计数到2就点亮另外一个LED。
usysm 发表于 2018-5-16 22:56 | 显示全部楼层
如果是连续按压的就是需要定时器处理了。
uytyu 发表于 2018-5-16 22:56 | 显示全部楼层
最简单的就是你提供一下电路吧
myiclife 发表于 2018-5-16 22:56 | 显示全部楼层
串入端保持1电平,按一次开关,就是输入一个时钟脉冲信号
touser 发表于 2018-5-16 22:56 | 显示全部楼层
就是计数然后取余计算。
pklong 发表于 2018-5-16 22:57 | 显示全部楼层
还是在实物开发板上实现?
wwppd 发表于 2018-5-16 22:57 | 显示全部楼层
可以在proteus做个仿真,程序网上有的。
iyoum 发表于 2018-5-16 22:57 | 显示全部楼层
楼主在中断处理i++,对i奇数偶数进行判断。
wuhany 发表于 2018-5-17 11:14 | 显示全部楼层
*************************************************/
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)  

   { //TACCTL0&=~ CCIE; //关中断
     static  unsigned char KEY_State=0; //按键的状态变量
     static  unsigned char i,j=0;   //计数,用于处理时间
   switch(KEY_State)            //处理按键状态
   {case NOKEY:   //未按键时进行按键处理
    if ((P1IN&BIT3)==0)
     {KEY_State=PUSH_KEY;  //按下按键后,进入短按状态
      }
      break;  //必须要,需要退出循环
   case PUSH_KEY:   //短按状态时进行按键处理
     if((P1IN&BIT3)!=0)   //释放按键,认为是一次短按,加以处理
     {  KEY=1;  //按键赋值
     KEY_State=NOKEY;  //回到未按状态
     }
      else
      {
       if (i<100)
       { //KEY=0;  //KEY返回0,接收下一次数据
            i++;              //计数,以实现长按键,约2秒
        }
         else
         {
          i=0;
          KEY=2;  //输出长按初始状态
          KEY_State=LONG_KEY;  //长按状态
         }
      }
     break;
     
    case LONG_KEY:   //长按状态时进行按键处理
     if((P1IN&BIT3)!=0)   //释放按键,退出
     {  KEY=0;  //按键赋值
     KEY_State=NOKEY;  //回到未按状态
     }
     else
     {
      if (j<5)
       {
            j++;              //计数,以实现长按键状态计时,约0.1秒
        }
         else
         {j=0;   //重新计数
          KEY=3;  //长按状态的处理
         }
      }
     break;
  
    }
    TACCTL0|= CCIE;  //开中断
   }
jlyuan 发表于 2018-5-17 11:18 | 显示全部楼层
单片机常用输入键盘的设计、LED 静态显示
jlyuan 发表于 2018-5-17 11:19 | 显示全部楼层
单片机常用输入键盘的设计、LED 静态显示
 楼主| zhaoxqi 发表于 2018-5-17 11:25 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家,结贴了哈
CaLipton 发表于 2018-5-19 11:10 | 显示全部楼层
用定时器,约定读取键盘状态的时间
然后用状态机
15楼的可以参考一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部