标题: 单片机PWM控制灯光亮度仿真可以,但是实物做出来有问题 [打印本页]

作者: yuwc    时间: 2018-5-3 20:41
标题: 单片机PWM控制灯光亮度仿真可以,但是实物做出来有问题
仿真可以,实物通过增、减键控制占空比比例,按一次增加键变亮后,再按就不会变亮了,减少键也一样。经万用表检测连接发光二极管的那一侧电路的电流变化不大,按增加键从10升到12毫安左右就不变了。减少键也如此。求大神帮忙!
  1. //---------------------------------------------------------------------
  2. //程序功能:PWM控制LED增减光。
  3. //---------------------------------------------------------------------
  4. #include <reg52.h>
  5. sbitOUT=P2^7;                                //PWM输出
  6. sbitINC=P2^0;                                //增加亮度按钮K1接口
  7. sbitDEC=P2^1;                                //减小亮度按钮K2接口
  8. sbitRET=P2^2;                                //复位亮度按钮K3接口
  9. //--------------------------- 定时器0中断函数 ------------------------
  10. //频率
  11. voidTimer0(void) interrupt 1                 //定时器0中断
  12.   {
  13.     OUT=1;                                     //关LED
  14.     TL0=0;
  15.     TR1=1;                                     //打开脉宽定时
  16.   }
  17. //-------------------------- 定时器1中断函数 -------------------------
  18. //脉宽
  19. voidTimer1(void) interrupt 3                 //定时器1中断
  20.   {
  21.     OUT=~OUT;                                  //开LED
  22.     TR1=0;                                     //脉宽调节结束
  23. }   
  24. //--------------------------- 消抖延时函数 ----------------------------
  25. delay()
  26. {
  27. unsigned int i;
  28. for(i=0;i<2000;i++);
  29. }
  30. //---------------------------- 定时器设置函数 ---------------------------
  31. INIT_TIMER()
  32.    {
  33.     TMOD=0x22;                                  //设置T1、T0为模式2方式,自动重装
  34.     TH1=0;                                      //脉宽宽度
  35.      TL1=0;
  36.     TH0=0;                                      //频率调节=0频率最低
  37.     TL0=0;   
  38.     TR0=1;                                      //启动T0定时
  39.     EA=1;                                       //允许总中断
  40.     ET1=1;                                      //允许定时器1中断
  41.     ET0=1;                                      //允许定时器0中断
  42.    }
  43. //------------------------------- 主函数 -------------------------------
  44. main()
  45. {
  46.    
  47.   INIT_TIMER();
  48.   TH1=120;
  49. // 无限循环   
  50.        while(1)
  51.     {
  52.       INC=1;DEC=1;
  53.       if (INC==0)
  54.          { delay();
  55.           if (INC==0)  
  56.                {
  57.                 if (TH1<240) TH1+=10;
  58.                }
  59.          }
  60.       else if (DEC==0)
  61.          { delay();
  62.           if (DEC==0)  
  63.                {
  64.                 if (TH1>10) TH1-=10;
  65.                }
  66.          }
  67.       else if (RET==0)
  68.          { delay();
  69.           if (RET==0)  
  70.                {
  71.                 TH1=120;
  72.                }
  73.          }                              
  74.                                    
  75.     }
  76. }
复制代码


QQ图片20180503203521.jpg (42.45 KB, 下载次数: 130)

QQ图片20180503203521.jpg

作者: 花开伊人笑    时间: 2018-5-28 15:33
老铁 可不可以把你做的那个 pwm灯光控制的电路图 给我共享一下
作者: pengyongnet    时间: 2018-6-27 22:40
希望能下载
作者: 125844584    时间: 2020-3-23 07:44
我想看一下你这个的具体设计,可以分享给我吗
作者: 怎么写    时间: 2020-3-24 09:45
老铁,可以共享吗

作者: taotie    时间: 2020-3-24 11:31
把LED换成全彩LED!



作者: 125844584    时间: 2020-3-27 15:02
可以分享一下压缩包吗?之前没接触过
作者: 王天星    时间: 2020-3-28 10:22
PWM频率一般1khz,首先100%占空比输出测试下,然后依次减小占空比,有串口打印占空比做好。这个没有什么难度的,仔细检查下
作者: 1979759100Ls    时间: 2020-5-18 16:12
定时器问题
作者: TTQ001    时间: 2020-5-18 23:56
请提供有关电路和代码的更多信息。




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