参考了51hei论坛 hongru的作品,做出了一点修改 呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。 用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。 我认为这个程序不需要先拉低P1口,如果拉低了,灯会有卡顿的感觉。
单片机源程序如下:
- #include<reg51.h>
- void Delay1(int del)
- {
- int i,j;
- for(i=0; i<del; i++)
- for(j=0; j<1827; j++)
- ;
- }
- void Delay(unsigned int t)
- {
- while(--t);
- }
- //函数声明
- unsigned int z,y;
- void main (void)//主函数
- {
- unsigned int CYCLE=400,PWM_LOW=0;//定义周期并赋值
- while (1) //主循环
- {
- /*--------整排LED灯呼吸---------*/
-
- Delay1(100); //加延时,可以看到熄灭的过程(下面程序同理)
- for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++) //PWM_LOW表示低
- {
- P1=0x00;
- Delay(PWM_LOW);
- P1=0xff;
- Delay(CYCLE-PWM_LOW);
- }
- P1=0xff;
- for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) //与逐渐变亮相反的过程
- {
- P1=0x00; //点亮LED
- Delay(PWM_LOW);
- P1=0xff; //熄灭LED
- Delay(CYCLE-PWM_LOW); //主循环中添加其他需要一直工作的程序,延时长度,600次循环中从599减至1
- }
- }
- }
复制代码
所有资料51hei提供下载:
呼吸灯.zip
(13.83 KB, 下载次数: 156)
|