分享

LED PWM调光C程序

 共同成长888 2015-07-13

LED PWM调光C程序 

#include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 
sbit LED1 = P3^0; 
sbit LED = P3^1;      //定义LED灯,通过LED显示调光效果 
sbit LED2 = P3^2; 
unsigned char CYCLE;  //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms 
unsigned char PWM_ON ;//定义高电平时间 
/******************************************************************/ 
/*                    延时函数                                    */ 
/******************************************************************/ 
void delay(unsigned int cnt) 

while(--cnt); 

/******************************************************************/ 
/*                    主函数                                      */ 
/******************************************************************/ 
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); 
   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; 
    } 
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多