单片机pwm控制led亮度程序

通过调节一个频率的占空比就可以控制一个输出电流中的大小了,一般用于对LED电机转速的调节,灯光暗淡的调节等。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit LED=P0^0;

uchar num,MCE;

uchar flag=1;  //控制灯由暗到亮!

void delayms(uint z)  //延时1ms

{

uint x,y;

for(x=z;x>0;x--)

  for(y=110;y>0;y--);

}

void main()

{

TMOD=0x02;

TH0=0x47;

TL0=0x47;

ET0=1;

TR0=1;

EA=1;

while(1)

{

  delayms(100);

  if(flag==1)

  {

   MCE++;

  }

  if(flag==0)

  {

   MCE--;

  }  

  if(MCE>=10)

  flag=0;

  if(MCE==0)

  flag=1;

}

}

void Timer0() interrupt 1

{

num++;

if(num==10)

{

  num=0;

  LED=0;

}

if(num==MCE)

{

  LED=1;

}

}