PWM的意思是“脉冲宽度调制”
PWM有两个最基本的参数:频率、占空比。
频率就是每秒钟电平高低变化的次数,占空比是指高电平保持时间和整个脉冲周期中的比例关系。
对于用定时器来模拟,最基本的方法就是使用一个IO口循环设置其输出值为高电平和低电平。
那么定时器在这里起计时作用,而且需要两个时间:高电平持续时间、低电平持续时间。
只要做到这两个时间的计时,那么就可以实现基本的PWM了。
而要做到两个时间的计时,有两种方案:
1.单计时器方案
int i;//计时变量
timer1(){//计时器1中断函数
//此处示例每隔100个最小计时周期电平变化一次,即200个最小计时周期闪烁一次
i++;
if (i==200){
i=0;//变量复位,完成一个周期,准备下一个周期
}
else if (i==100){
LED_OFF;//关灯
}
else if (i==0){
LED_ON;//开灯
}
}
2.双计时器方案
//只需要设计好两个计时器的初值和周期,即可完成交替亮灭
timer1(){//计时器1中断函数
//此处示例每隔100个最小计时周期电平变化一次,即200个最小计时周期闪烁一次
LED_ON;//开灯
}
timer2(){
LED_OFF;//关灯
}
用定时器T1/T2的工作方式2吧(我也忘记了,就是能自动重装初始值的那个),在定时器程序里,让一个I/O口取反输出(例如sbit s=P1^0;s=~s;)通过改变定时时常就可以了