标题:
用51单片机做一个简易呼吸灯
[打印本页]
作者:
953841535
时间:
2017-12-5 16:41
标题:
用51单片机做一个简易呼吸灯
利用占空比的方式来控制灯的变暗和变亮
占空比就是高电平和低电平的比例;
实现呼吸灯效果是利用人眼的分辨率只能看到25帧每秒,甚至还不够,
所以用单片机做呼吸灯是利用频率来控制呼吸灯的呼吸时间,用占空比来控制灯的亮度
代码如下
#include <reg52.h>
sbit LED1=P2^0; //定义灯的位置
int PWM_Low,Clock=500;
void delay(unsigned int x) //延迟函数
{
int i;
for(i=0;i<x;i++);
}
void main(void)
{
while(1)
{
for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐渐变暗
{
LED1=1;
delay(PWM_Low);
LED1=0;
delay(Clock-PWM_Low);
}
for(PWM_Low=0;PWM_Low<Clock;PWM_Low++) //逐渐变亮
{
LED1=1;
delay(PWM_Low);
LED1=0;
delay(Clock-PWM_Low);
}
}
}
如有错误,还望指正,新手来的
作者:
石墨清风
时间:
2019-8-3 10:33
学习了
作者:
cokesu
时间:
2019-8-6 14:01
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做
作者:
想学智能小车
时间:
2019-8-6 17:17
学习了
作者:
zhuojiaju
时间:
2019-8-7 15:32
感谢分享
作者:
zh68a11
时间:
2019-11-5 17:28
学习了,谢谢。
作者:
丑陋的土拨鼠
时间:
2019-11-6 17:15
cokesu 发表于 2019-8-6 14:01
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做
用定时器该怎么做呢?
作者:
xuwenwu890
时间:
2019-12-8 10:58
学习了,谢谢分享。
作者:
xuwenwu890
时间:
2019-12-8 10:58
学习了。
作者:
nimiaolegemi
时间:
2019-12-8 18:47
太强了呀
作者:
愿你安然
时间:
2019-12-29 19:46
cokesu 发表于 2019-8-6 14:01
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做
学习了
作者:
我爱单片机0
时间:
2020-1-11 12:45
学到了
作者:
dzbj
时间:
2020-1-12 19:53
同"板凳"
用for做循环之间就干不了别的事了 作为单片机来说不合算的 小片子还好 要是个大片子就干这么点事太浪费资源 就按你说的25帧/秒 就是每帧占用40ms左右 这40ms能干多少事啊 如果只实现呼吸灯 还不如用555搭一个
还有这么写的呼吸灯是没有曲率变化的 严格说只能叫渐亮渐暗灯 人呼吸 渐亮和渐暗的变化过程不是线性的
作者:
BG2UKY
时间:
2020-1-13 15:25
#include <reg52.h>
sbit LED1=P1^0; //定义灯的位置
int PWM_Low,Clock=420;
void delay(unsigned int x) //延迟函数
{
int i;
for(i=0;i<x;i++);
}
void main(void)
{
while(1)
{
for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐渐变暗
{
LED1=0;
delay(PWM_Low);
LED1=1;
delay(Clock-PWM_Low);
}
for(PWM_Low=0;PWM_Low<Clock;PWM_Low++) //逐渐变亮
{
LED1=0;
delay(PWM_Low);
LED1=1;
delay(Clock-PWM_Low);
}
}
}
作者:
13466628313
时间:
2020-3-16 13:41
学习了。有创意。我找时间用定时器实现试试
作者:
1679079206
时间:
2020-3-16 17:36
不错哦,原理图可以发出来了?
作者:
余梦无秋
时间:
2020-6-2 17:38
谢谢楼主分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1