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

2025-04-06 05:47:56
推荐回答(1个)
回答1:

利用定时器。

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       {
           PWN_OUT = 1;
       }
       else
       {
           PWN_OUT =0;
       }
    }
}

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