标题: 我制作的单片机呼吸灯程序 [打印本页]

作者: lth977    时间: 2017-12-8 18:16
标题: 我制作的单片机呼吸灯程序
参考了51hei论坛 hongru的作品,做出了一点修改
呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。
用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的占空比从而实现LED模拟呼吸的过程,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。
我认为这个程序不需要先拉低P1口,如果拉低了,灯会有卡顿的感觉。

单片机源程序如下:
  1. #include<reg51.h>
  2. void Delay1(int del)
  3. {
  4.         int i,j;
  5.         for(i=0; i<del; i++)
  6.         for(j=0; j<1827; j++)   
  7.         ;
  8. }
  9. void Delay(unsigned int t)
  10. {
  11. while(--t);
  12. }
  13. //函数声明
  14. unsigned int z,y;
  15. void main (void)//主函数
  16. {
  17.         unsigned int CYCLE=400,PWM_LOW=0;//定义周期并赋值
  18.         while (1)         //主循环
  19.         {

  20. /*--------整排LED灯呼吸---------*/
  21.                
  22.                 Delay1(100);                                                                 //加延时,可以看到熄灭的过程(下面程序同理)
  23.                 for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)           //PWM_LOW表示低
  24.                         {
  25.                                 P1=0x00;                                       
  26.                                 Delay(PWM_LOW);
  27.                                 P1=0xff;
  28.                                 Delay(CYCLE-PWM_LOW);
  29.                         }
  30.                 P1=0xff;                                                                               
  31.                 for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)         //与逐渐变亮相反的过程
  32.                         {
  33.                                    P1=0x00;                                                        //点亮LED
  34.                                    Delay(PWM_LOW);
  35.                                    P1=0xff;                                                        //熄灭LED
  36.                                   Delay(CYCLE-PWM_LOW);                                //主循环中添加其他需要一直工作的程序,延时长度,600次循环中从599减至1
  37.                         }

  38. }
  39. }
复制代码

所有资料51hei提供下载:
呼吸灯.zip (13.83 KB, 下载次数: 156)



作者: 6010010    时间: 2019-3-3 09:25
有用,有用,有用
作者: jxchen    时间: 2019-3-3 19:18
不錯~~~~~~~~~~~~~~~
作者: tigerzq    时间: 2019-3-30 11:51
硬件连接呢?也顺便公布一下呀!
作者: 明海科技    时间: 2019-9-22 10:50
好用,学习了。
作者: 代码搞不会    时间: 2020-5-5 19:29
tigerzq 发表于 2019-3-30 11:51
硬件连接呢?也顺便公布一下呀!

led接p1
作者: qwertyuiop_zsq    时间: 2020-6-12 20:11
我led接P1口,可是二极管没反应,求解答
作者: 大漠游民    时间: 2020-10-4 18:34
qwertyuiop_zsq 发表于 2020-6-12 20:11
我led接P1口,可是二极管没反应,求解答

你怎么接的?按我的理解,发光二极管的A极接+5V,K极接P1口,你这样试试。




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