标题: 单片机怎么实现闪动,呼吸和常亮三种模式的LED灯 [打印本页]

作者: a920366858    时间: 2018-7-13 17:45
标题: 单片机怎么实现闪动,呼吸和常亮三种模式的LED灯
我做的LED灯想实现三种模式:闪动,呼吸和常亮。。通过断电上电来循环切换模式,顺序是闪动,呼吸,常亮。电源是220V转5V给电路。
有一个机械开关,当快速断开闭合开关,灯就转换模式。比如当前是闪动,快速断开然后闭合,灯就变为呼吸模式。
当开关断开大约1S以上,无论断开前是什么模式,都会回到闪动模式。
我的想法是,一个全局变量char data_temp=0;,当把IC的电源(5V)快速关闭,再快速打开,这个data_temp就会自加。断电久一点,data_temp就会变回0;我想到用欠压中断来实现这个功能,我感觉自己的逻辑没有错,但是效果并不好。。。
有没有大神有想法的讨论一下。。。

作者: 18790839669    时间: 2018-7-13 19:44
用里面的EEPROM断电和开机产生一个标志位,来区分工作状态,你的明白
作者: dzbj    时间: 2018-7-13 20:50
关键在于检测到断电后要继续计数 实际上就是单片机没断电才能做到 我能想到的有2个方法

用个巨大的电容断电后继续提供电压 但这需要你的模块耗电量很小 不光单片机还包括外围电路

另外的方法是用辅助电路在电源断开后继续延时一段时间无触发再断开自己 并辅助2楼说的存储一个标记

我自己在做一些车用模块时为了尽量减小灭车后电力消耗用的就是第二个方法 灭车后等一段时间完全断开自己的电源 着车时被ACC电压触发开始工作 和你这情况类似

何必这么搞 对于220v供电来说一个模块消耗的电力很小基本可以忽略不计 你就直接给它永远供电 只检测触发状态改变led模式不好么
作者: yzwzfyz    时间: 2018-7-14 04:27
初学者总是以送出01至端口来决定灯的明暗,这是非常低级的做法。
高级的做法是,以一个段位为例:驱动的位段至少用到以下几点:
1、做一个中断,每间隔0.3秒反转一次形成一个标记:B_FLASH。
2、做一个控制位决定用不用闪动:B_CTAL。
3、决定的灯明暗的驱动位:B_LED。
这时你才可以输出:Pxx=B_LED*(B_CTAL*B_FLASH + /B_CTAL)
当你需要闪动时:置B_CTAL=1
当你需常亮常暗时:清B_CTAL=0
当然显示什么,还是由B_LED来决定,这是你原先用来驱动的段码。
掌握了这个方法,让某个位闪,某个段闪,都很方便,给相对应B_CTAL送个0、1即可随时让它闪动。我这个方法妙不妙?
作者: yzwzfyz    时间: 2018-7-14 04:30
掌握了以上方法后,做呼吸也简单:自己动动脑子。
提示:再加呼吸控制位。与一下。
作者: a920366858    时间: 2018-7-14 08:15
dzbj 发表于 2018-7-13 20:50
关键在于检测到断电后要继续计数 实际上就是单片机没断电才能做到 我能想到的有2个方法

用个巨大的电容 ...

那是物理开关唉,一断开,220V就没有了,只能靠电源里的电容能够提供大概0.5秒的时间。。
你说的第二个方法怎么实现呢?
作者: a920366858    时间: 2018-7-14 08:17
yzwzfyz 发表于 2018-7-14 04:27
初学者总是以送出01至端口来决定灯的明暗,这是非常低级的做法。
高级的做法是,以一个段位为例:驱动的位 ...

我是用PWM的,16个IO,16组LED灯。常亮闪动呼吸这些都没问题,是模式切换的问题,想不明白断电了IC还能持续工作那么久,都快2秒了。。
作者: a920366858    时间: 2018-7-14 08:18
18790839669 发表于 2018-7-13 19:44
用里面的EEPROM断电和开机产生一个标志位,来区分工作状态,你的明白

如果用EEPROM的话,怎么判断长时间掉电,让模式回到最初?
作者: 嗒嘀嗒嗒嘀嘀    时间: 2018-7-14 11:07
用555定时器,接成施密特触发器。单片机通电时施密特触发器输出低电平。断电后触发器中电容开始放电。再次上电时不向触发器供电并判断触发器输出,若为高电平则说明放电时间过长,EEPROM中变量清零回最初模式;若为低电平则说明放电时间不够,EEPROM中变量加一到相应模式模式;判断触发器输出后向触发器供电使其输出为低电平为下一次检测做准备。利用555定时器可将待测电压限制只能为高或低电平。
作者: a920366858    时间: 2018-7-14 11:49
嗒嘀嗒嗒嘀嘀 发表于 2018-7-14 11:07
用555定时器,接成施密特触发器。单片机通电时施密特触发器输出低电平。断电后触发器中电容开始放电。再次 ...

本人硬件菜鸟,不是很懂大神说的
作者: dzbj    时间: 2018-7-14 12:52
a920366858 发表于 2018-7-14 08:15
那是物理开关唉,一断开,220V就没有了,只能靠电源里的电容能够提供大概0.5秒的时间。。
你说的第二个 ...

完美解决肯定要加线 唯一问题是线是否原来穿好的 就是预埋在墙里到线盒的 这种情况稍微麻烦一点 要考虑原来的线管是否能再穿进去和是否能穿得过去

另一种思路是 220v的灯开关对灯供电标准要求是控火 这样关灯后灯头无电 更换灯泡安全 那么你的开关里肯定有一根是火线 有些220v转5v的模块可以支持无零线工作 我自己家里的旧开关就是这么干的 给旧开关面板加指示灯 和你这意思一样只是没你这么多花样 也是220v模块直接干上去的 然后采集输出线是否高电位就行了

第二种方法是用一个带使能端的稳压芯片 使能端被外部触发和单片机同时控制 外部断电后 单片机采集到断电但不关闭自己给使能端的触发电压 直到满足要求才关闭 这事两路触发都没了 自己就断电了 再开灯外部触发高就有给自己供电 相当于一个或逻辑 两个输入有一个是1输出就是1
作者: 段智超    时间: 2018-7-14 16:39
设置等的频率来视线啊
作者: sldx    时间: 2018-7-14 19:32
呼吸灯,可分为三个阶段,渐亮,亮,渐灭,渐亮渐灭过程可用pwm脉宽依次增大或者减小来控制
作者: yousunny    时间: 2018-7-14 20:47
看了评论区。我觉得您是不是想错了?为什么一定要断电检测呢?你加一个纽扣电池,备用就好了。
作者: yousunny    时间: 2018-7-14 20:50
“ 用里面的EEPROM断电和开机产生一个标志位,来区分工作状态,你的明白”楼上这个说的也是可以的。但是所谓的常时间断电。和短时间断电。就应该不可以的。你单片机都停止了。怎么可能还会检测?是吧,想想都觉得不可能。我觉得,你如果是想是现这个功能,就加一个备用电源吧。如果是想锻炼逻辑,那就随你了~~当然,你如果想到好的,也希望你跟我分享一下,共同进步~·
作者: a920366858    时间: 2018-7-16 08:12
yousunny 发表于 2018-7-14 20:50
“ 用里面的EEPROM断电和开机产生一个标志位,来区分工作状态,你的明白”楼上这个说的也是可以的。但是所 ...

没有备用电池。。关键是有人实现了,想不明白他是怎么实现的。。。

作者: a920366858    时间: 2018-7-16 08:13
sldx 发表于 2018-7-14 19:32
呼吸灯,可分为三个阶段,渐亮,亮,渐灭,渐亮渐灭过程可用pwm脉宽依次增大或者减小来控制

我不是问呼吸的实现哦。。。
作者: a920366858    时间: 2018-7-18 09:05
段智超 发表于 2018-7-14 16:39
设置等的频率来视线啊

这个不太理解是啥意思




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1