首先这个题目就有点刁钻,因为就目前来说,就算是最基础的单片机也有PWM外设,如果连这个功能都没有,偶觉得他不应该算在单片机的范畴之内,只能说是一个小规模的集成电路。你现在非要来一个没有PWM波外设的单片机,好吧,就拿你这种情况分析一下,如何在没有PWM外设的MCU来做可调的占空比。
PWM
首先大家要知道什么是PWM,PWM的全称是PulseWidthModulation,即脉冲宽度调制,它的实现原理很简单,即通过单片机的高低电平控制MOS管或三极管的开通和关断,以实现小功率控制大功率的目的,在PWM中,高低电平的变换速度极快,一般都不大于1MS。
如上图中的三个PWM波,如果一半的时间是高电平一半的时间是低电平,那么他的占空比是50%,所谓占空比即高电平所占PWM周期的比例。
通过简单的延时
在一个没有PWM外设的MCU来做可调的占空比,最简单的办法是,让单片机循环的输出高低电平。比如大家要输出一个占空比为50的PWM大家可以这么写,虽然不是正规途径生成的PWM波,但是实现效果上却和PWM波一个样。
while(1)
{
P1=1;
DELAY(1MS);
P1=0;
DELAY(1MS);
}
占空比可调的PWM
这个占空比其实也很容易改变,只需要大家改变高低电平的时间,如果你不想这么做,可以往单片机上加一个电位器,在大家旋转电位器的时候,把对应的电压传给单片机,单片机再通过不同的电压改变不同的时间,以此来达到调节占空比的目的。