多组LED灯防闪烁扫描

本文介绍了如何防止多组LED灯闪烁,通过每个任务占用固定时间块的方式进行编程。例如,如果有2组LED和4个任务,每个ModuleTime不超过10ms,并确保任务数为双数。LED轮流导通,形成互补的方波,避免延时影响其他任务,适用于系统升级。
摘要由CSDN通过智能技术生成

多组LED灯防闪烁扫描
每个LED灯扫描间隔小于10ms就不会闪烁,还有亮度不均匀也会导致LED灯闪烁,比如前一秒亮度60%,后一秒亮度80%,LED也会闪烁。如果有多组LED灯需要扫描,那么可以采用每个任务占用一个固定的时间块的办法编程。
举个栗子:
比如系统中有2组LED灯需要扫描,有4个任务需要执行(这里的任务并不是操作系统中的任务)iic、按键扫描、控制外部电机和外部温度传感器。那么可以采用以下的办法:首先找出占用时间最多的任务所需要的时间来确定每个时间块的长度ModuleTime,当然最长时间不能超过10ms。还有一点需要注意的是Module的个数一定要是双数,就算任务的个数是单个也要补一个空任务来扫描LED。
任务执行的逻辑如下:
第一个ModuleTime;LED1-on,LED2-OFF +iic
第二个ModuleTime;LED1-OFF,LED2on +按键扫描
第三个ModuleTime;LED1on,LED2OFF +外部电机控制
第四个ModuleTime;LED1OFF,LED2on +外部温度传感器
第五个,,
第六个,,,,
如果用示波器来看这两组LED的波形的话,会看到两组周期为ModuleTime毫秒 互补的方波,就是两组LED轮流导通,这里不是采用延时的方法,这样就不会影响系统其它任务的执行,而且还可以无限增加任务而不会对系统有影响,对于后期升级很有用。
如果有三组LED,方法也是一样,但是需要注意的是这时候时间块长度最长只能是5个ms了&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值