51单片机怎样输出频率F=0.2-50HZ,占空比D=1-100%可调的PWM波形

最好用一个定时器,实在不行用两个定时器也可以;不要在网上瞎复制一个答案给我,写的代码主要部分标注一下;

利用定时器。

uint PwmCnt = 0; 

sbit  PWN_OUT = P1^1;//可改动
uint PwmD = 50;//占空比  可调
uint PwmF = 500;//频率  可调  10 = 1HZ   500 =50HZ
uint PwmCnt = 0;//占空比计数值
uint FreCnt = 0;//频率分频值
void T0 interrupt 1
{
   .....//赋值TO计数值  50us
   if(++FreCnt>= (1000/PwmF))//通过改变PwmF 达到分频效果  改变输出频率
   {
       if(++PwmCnt>=100) PwmCnt=0; //再次分频100  占空比精度需要这样
       if(PwmCnt<PwmD )//改变D值  可以改变引脚状态占用时间
       {
           PWN_OUT = 1;
       }
       else
       {
           PWN_OUT =0;
       }
    }
}

//思想是这样  我也没测过

温馨提示:答案为网友推荐,仅供参考
相似回答