找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1019|回复: 4
打印 上一主题 下一主题
收起左侧

求指导下实现思路 基于PWM的呼吸灯设计

[复制链接]
楼主
ID:743654 发表于 2021-12-7 08:48 | 显示全部楼层
  1. /***********************
  2. PWM-呼吸灯
  3. *************************/
  4. #include<reg52.h>

  5. #define led P2

  6. unsigned char t_count ; //累计每个周期中断次数的个数,满20清零,20*100us=2ms(pwm的周期)
  7. unsigned int count ;  //累计占空比需要修改(增加还是减少)的中断次数的个数        1200*100us=120ms
  8. unsigned char t ;  //累计高电平的个数
  9. bit flag ; //标志位 0增加,1减少

  10. void timer0init(void)
  11. {
  12.     EA = 1;
  13.         TMOD = 0X02;
  14.         TH0 = 0Xa3;
  15.         TL0 = 0Xa3;
  16.         ET0 = 1;
  17.         TR0 = 1;
  18. }

  19. void main(void)
  20. {
  21.         t_count = 0;
  22.         count = 0;
  23.         t =10;           //占空比总50%开始
  24. //        led = 1;

  25.         timer0init();
  26.     while(1);
  27. }
  28. /*每100us进入一次中断*/
  29. void timer0() interrupt 1
  30. {
  31.    t_count++;
  32.    count++;

  33.    if(t_count == t)        
  34.     {
  35.              P2 = 0x00;
  36.     }
  37.         if(t_count == 19)
  38.         {
  39.            t_count = 0;
  40.            P2 = 0xff;
  41.         }


  42.         if((count == 1200)&&(flag == 0))
  43.          {
  44.                count = 0;
  45.                t++;
  46.                if(t == 19)        //增加最大占空比 95%
  47.                  {
  48.                    flag = 1;
  49.                  }
  50.          }

  51.         if((count ==1200)&&(flag == 1))
  52.          {
  53.                 count = 0;
  54.                      t--;
  55.                     if(t ==10)        //减小到最低占空比 50%
  56.                    {
  57.                          flag = 0;
  58.                    }
  59.      }

  60. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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