求单片机控制发光管由亮渐灭,由灭渐亮的控制C程序

2024-11-24 03:03:07
推荐回答(3个)
回答1:

其实很简单,就是控制LED灯不停的亮灭亮灭,由亮渐灭就是亮的时间长,灭的时间短,亮的时间渐减,灭的时间渐加..由灭渐亮就是灭的时间长,亮的时间短,灭的时间长,亮的时间时间渐加,利用人眼的惰性,看到的就是这个效果.
例如,你用一个1MS的N倍延时来算
N=20,由亮到灭就是亮N*1MS,灭(20-N)*1MS
循环a次(这要看你想的速度,可以自己慢慢调)N-1,
这个时候LED就要暗一点了,要是你有多个LED,那就可以用数组来做了,
其实这个和PWM类似,可以说是简易的PWM.
我没给你写原程序,因为授之与鱼不如授之与渔,
学单片机最大的乐趣就在于改程序,而不是拿别人的程序来写进单片机!

当然,1Ms的20倍可能会看到LED在闪,我只是举例,黑白电视的场频是50HZ,也就是20MS一个画面,但如果LED暗到一定程序时就会看到微弱的闪烁!

回答2:

对于控制LED灯有暗到亮或由亮到暗,采用的是脉宽PWM法。它是把每一脉冲宽度均相等的脉冲列作PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。51单片机产生占空比可变的矩形波,当产生此矩形波的I/O口通过滤波电路再与LED灯相接后,由于输出矩形波占空比不断变化,那么一个周期内有一部分时间LED导通,一部分时间截止,从整体来看有一个平均电压,PWM信号频率很高的,我们无法通过肉眼来观察到每一个周期LED灯亮灭的变化过程,所以只好通过平均电压这样一种方式来决定这个LED的亮的程度了。 随着波形占空比不断变化,LED灯也会有暗到亮再从亮到暗不断变化。

回答3:

什么单片机?一个灯管的亮度渐变?还是多个灯管顺序亮、灭?
一个灯管的渐变需要用到PWM调制,普通51单片机肯定不行,必须是扩展型51或者其他类型的单片机。
多个灯管的顺序控制就简单了,直接控制对应的IO口,按顺序一个一个开,一个一个关。