社区导航

 

搜索
查看: 79|回复: 0

[资料分享] LED PWM调光C程序

[复制链接]

2668

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-11-7 22:50 | 显示全部楼层 |阅读模式

#include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit LED1 = P2^0; 
sbit LED = P2^1;      //定义LED灯,通过LED显示调光效果 
sbit LED2 = P2^2;

unsigned char CYCLE;  //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms 
unsigned char PWM_ON ;//定义高电平时间 
/******************************************************************/ 
/*                    延时函数                           &nbs/******************************************************************/ 
void delay(unsigned int cnt) 

  while(--cnt); 

/******************************************************************/ 
/*                    主函数                                      */ 
/******************************************************************/ 
void main() 

 bit Flag; 
 TMOD |=0x01;              //定时器设置 0.1ms in 12M crystal 
 TH0=(65536-100)/256; 
 TL0=(65536-100)%256;      //定时0.1mS 
 IE= 0x82;                 //打开中断 
 TR0=1; 
 CYCLE = 50;               // 时间可以调整 这个是10调整 8位PWM就是256步 
 while(!Flag) 
  { 
   delay(20000);          //延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效果 
   PWM_ON++;              //这个使用较长延时,以便能看清楚变化过程 
   if(PWM_ON == CYCLE) 
    {                    //这个里可以添加其他程序 如到最亮时候控制设备 
      Flag=1; 
    } 
  } 
 while(Flag)              //亮度递减 同上,是个相反的过程 
  { 
   delay(20000);     //延迟时间为20000*0.4=8000us
   PWM_ON--; 
   if(PWM_ON == 0) 
    { 
      Flag=0; 
    } 
  } 

/******************************************************************/ 
/*                    定时器中断函数                              */ 
/******************************************************************/ 
void tim(void) interrupt 1 using 1 

 static unsigned char count; 
 TH0=(65536-100)/256; 
 TL0=(65536-100)%256;     //定时0.1mS 
 if (count==PWM_ON) 
  { 
     LED1 = 1; 
     LED = 1;            //灯灭 
     LED2 = 1; 
  } 
  count++; 
 if(count == CYCLE) 
  { 
    count=0; 
    if(PWM_ON!=0)        //如果开启时间是0 保持原来状态 
    {
       LED1 = 0; 
       LED = 0;          //灯亮 
       LED2 = 0; 
    }
  } 
}



回复

使用道具 举报

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

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-11-16 10:06 , Processed in 0.077493 second(s), 16 queries , Gzip On, MemCache On.

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