首页 > 其他分享 >矩阵LED分时点亮

矩阵LED分时点亮

时间:2023-07-15 10:35:26浏览次数:34  
标签:LED 分时 点亮 ledstate else PIN3 PIN2 PIN1

原理:分时驱动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;
  }
}

标签:LED,分时,点亮,ledstate,else,PIN3,PIN2,PIN1
From: https://www.cnblogs.com/logicexpression/p/17555714.html

相关文章

  • maven打包repackage failed: Unable to find main class
    maven打包提示这个问题。原因:主项目pomxml文件中,不需要<build>打包的配置,只需要在有入口类的模块pom.xml配置好<build><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.......
  • 【dRep报错】运行dRep去冗余时出现checkm failed的处理
    做宏基因组分析时,会用到drep软件去冗余,有时会出现checkMfailed的错误$dRepdereplicatedreplicated_out-gbins/*fa#运行命令错误信息如下:RunningcheckM!!!checkMfailed!!!官方文档提到了几个解决方案https://drep.readthedocs.io/en/latest/advanced_use.html......
  • Query2box Reasoning over Knowledge Graphs in Vector Space using Box Embeddings
    目录概符号说明Query2Box代码RenH.,HuW.andLeskovecJ.Query2box:Reasoningoverknowledgegraphsinvectorspaceusingboxembeddings.ICLR,2020.概Boxembedding用于查询判断,和我想的那个有很大差别啊.我对这方面不是很了解,只能记录个大概.符号说明......
  • [GIT]解决:failed to push some refs to ...(过程重现)
    本问题有很多种情况,解决方法也很多,本文只针对笔者本人的自身诉求和情况,选择了一种适合我的解决方法。仅供参考。1问题描述johnnyzen@XXDSSSMINGW64/e/source_code/BigData/bdp_common_data_service(develop)$gitpushTogitlab-bigdata.johnnyzen.cn:platform-software/b......
  • ORA-65221 signalled during: alter pluggable database application APP$CDB$SYSTEM
    给一台Oracle19.12.0.0.0数据库应用补丁,升级到Oracle19.16.0.0.0时,做datapatch的时候,监控发现数据库的告警日志出现下面错误:2023-07-11T15:09:44.776403+08:00alter pluggable database application APP$CDB$SYSTEM begin install '1.0'ORA-65221 signalled during: ......
  • C# OleDb判断ACCESS中是否存在表
    添加引用 代码加入引用 代码如下///<summary>///公有数据库连接对象///</summary>publicOleDbConnectionUseConn{get{returnuseConn;}set{useConn=value;}}//......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组4
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组3
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组2
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 解决docker报错Job for docker.service failed because start of the service was att
    转载自:https://blog.csdn.net/Along_168163/article/details/124118833=================== docker安装之后重新安装报错如下:Jobfordocker.servicefailedbecausestartoftheservicewasattemptedtoooften.See"systemctlstatusdocker.service"and"journa......