找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2918|回复: 9
收起左侧

单片机PWM控制灯光亮度仿真可以,但是实物做出来有问题

[复制链接]
ID:288153 发表于 2018-5-3 20:41 | 显示全部楼层 |阅读模式
仿真可以,实物通过增、减键控制占空比比例,按一次增加键变亮后,再按就不会变亮了,减少键也一样。经万用表检测连接发光二极管的那一侧电路的电流变化不大,按增加键从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
回复

使用道具 举报

ID:339814 发表于 2018-5-28 15:33 | 显示全部楼层
老铁 可不可以把你做的那个 pwm灯光控制的电路图 给我共享一下
回复

使用道具 举报

ID:79874 发表于 2018-6-27 22:40 | 显示全部楼层
希望能下载
回复

使用道具 举报

ID:713781 发表于 2020-3-23 07:44 来自手机 | 显示全部楼层
我想看一下你这个的具体设计,可以分享给我吗
回复

使用道具 举报

ID:714524 发表于 2020-3-24 09:45 | 显示全部楼层
老铁,可以共享吗
回复

使用道具 举报

ID:342822 发表于 2020-3-24 11:31 | 显示全部楼层
把LED换成全彩LED!
9999gif.gif

回复

使用道具 举报

ID:713781 发表于 2020-3-27 15:02 | 显示全部楼层
可以分享一下压缩包吗?之前没接触过
回复

使用道具 举报

ID:531524 发表于 2020-3-28 10:22 | 显示全部楼层
PWM频率一般1khz,首先100%占空比输出测试下,然后依次减小占空比,有串口打印占空比做好。这个没有什么难度的,仔细检查下
回复

使用道具 举报

ID:312929 发表于 2020-5-18 16:12 | 显示全部楼层
定时器问题
回复

使用道具 举报

ID:420836 发表于 2020-5-18 23:56 | 显示全部楼层
请提供有关电路和代码的更多信息。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表