一、PWM的概念
一个方波信号周期就称作一个PWM信号。
占空比:高电平在一个周期梨所占的时间比例。
信号分为数字信号和模拟信号,数字信号通过0、1传达信息,而模拟信号通过电压值传递信号。
PWM应用于数字信号模拟模拟信号,通过高电平的占空比来换算成电压差,有一点类似高中学习的周期电路的有效电流的换算。
二、51单片机中PWM的实现
在51单片机中,可以利用定时器实现对占空比的控制,也就是设置定时器每经过一定时间计数一次,对值的大小进行判断,输出电平信号,即可实现。
cpp
sbit Motor=P1^0;
unsigned char Counter,Compare; //计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;
void main()
{
Timer0_Init();
while(1)
{
KeyNum=Key();
if(KeyNum==1)
{
Speed++;
Speed%=4;
if(Speed==0){Compare=0;} //设置比较值,改变PWM占空比
if(Speed==1){Compare=50;}
if(Speed==2){Compare=75;}
if(Speed==3){Compare=100;}
}
Nixie(1,Speed);
}
}
void Timer0_Routine() interrupt 1
{
TL0 = 0x9C; //设置定时初值
TH0 = 0xFF; //设置定时初值
Counter++;
Counter%=100; //计数值变化范围限制在0~99
if(Counter<Compare) //计数值小于比较值
{
Motor=1; //输出1
}
else //计数值大于比较值
{
Motor=0; //输出0
}
}
如果想要实现均匀变速,可以在每执行一次中断回调函数的时候就修改Compare。