#include<reg52.h>
#define uint unsigned int
#define led1 P1//P1口全接发光管,验证程序请自行修改
/**********占空比太小会熄灭,故一开始有3.3%,最大占空比也看不出变化了,故最大为80%**********/
void delay (uint yc) //延迟函数,定时器中断更好,这里就偷懒了
{
uint i,j;
for (i=yc;i>0;i--)
for (j=10;j>0;j--);
}
void main()
{
uint i=5,n=0; //此处初始化i不得小于最小占空比
while(1)
{
if(i==120) //调节最大占空比
n=1;
if(i==4) //最小占空比
n=0;
led1=0x00;//此处自行修改
delay(i);
led1=0xff;//此处自行修改
delay(150-i);//半周期时间
if(n==0)
i++;
if(n==1)
i--;
}
}
呼吸灯,建议楼主仔细理解一下PWM的含义,简单说PWM是固定时间长度的周期内,高低电平占时间比的变化量。 |