矩阵LED分时点亮

原理:分时驱动LED_PIN1,LED_PIN2,LED_PIN3为低电平。再来同时置位LED_SEG1,LED_SEG2,LED_SEG3,LED_SEG4,达到分时点亮矩阵LED的效果,
缺点是LED比正常点亮暗一些,其他无差异。
上程序

void swled(void)
{
  static uint8_t ledstep;

  if(ledstate & 0x0080)       //解决未开机亮灯的问题  test0
  {
    if(ledstep == 0)
    {
      LED_SEG1 = 1;
      LED_SEG2 = 0;
      LED_SEG3 = 0;
  
      if(ledstate & 0x0001)     //时间4   //8小时
      {
        LED_PIN1= 0;
      }
      else
      {
        LED_PIN1= 1;
      }
      if(ledstate & 0x0002)     //时间3   //5小时
      {
        LED_PIN2 = 0;
      }
      else
      {
        LED_PIN2 = 1;
      }
      if(ledstate & 0x0004)     //时间2     //3小时
      {
        LED_PIN3 = 0;
      }
      else
      {
        LED_PIN3 = 1;
      }
      if(ledstate & 0x0008)     //时间1     //1小时
      {
        LED_PIN4 = 0;
      }
      else
      {
        LED_PIN4 = 1;
      }
    }
    else if(ledstep == 1)
    {
      LED_SEG1 = 0;
      LED_SEG2 = 1;
      LED_SEG3 = 0;
  
      if(ledstate & 0x0010)     //角度120
      {
        LED_PIN1= 0;
      }
      else
      {
        LED_PIN1= 1;
      }
      if(ledstate & 0x0020)     //角度90
      {
        LED_PIN2 = 0;
      }
      else
      {
        LED_PIN2 = 1;
      }
      if(ledstate & 0x0040)     //角度60
      {
        LED_PIN3 = 0;
      }
      else
      {
        LED_PIN3 = 1;
      }
      if(ledstate & 0x0080)     //开关机
      {
        LED_PIN4 = 0;
      }
      else
      {
        LED_PIN4 = 1;
      }
  
    }
    else if(ledstep == 2)
    {
      LED_SEG1 = 0;
      LED_SEG2 = 0;
      LED_SEG3 = 1;
  
      if(ledstate & 0x0100)     //暖风强
      {
        LED_PIN1= 0;
      }
      else
      {
        LED_PIN1= 1;
      }
      if(ledstate & 0x0200)     //暖风弱
      {
        LED_PIN2 = 0;
      }
      else
      {
        LED_PIN2 = 1;
      }
      if(ledstate & 0x0400)     //冷风
      {
        LED_PIN3 = 0;
      }
      else
      {
        LED_PIN3 = 1;
      }
    }

    if(ledstep < 3)       //分三段点亮,切换段
    {
      ledstep++;
    }
    else
    {
      ledstep = 0;
    }
  }
  else
  {
     LED_SEG1 = 0;
     LED_SEG2 = 0;
     LED_SEG3 = 0;
     LED_PIN1 = 0;
     LED_PIN2 = 0;
     LED_PIN3 = 0;
     LED_PIN4 = 0;
  }
}
posted @ 2023-07-15 10:23  steven_lg  阅读(45)  评论(0编辑  收藏  举报