PWM:即脉冲宽度调制,在具有惯性的系统中,可以通过一系列脉冲的宽度进行调制,来等效地获得所需的模拟量
参数:频率=1/Ts 占空比=Ton/Ts 精度=占空比变化步距
Ts=Ton+Toff
产生PWM方法:
利用定时器、计数器与用户设置的比较值进行比较
如果计数器<比较值 输出0
如果计数器>比较值 输出1
代码如下
#include <reg52.h>
#include "Delay.h"
#include "Key.h"
#include "Timer0.h"
#include "Nixie.h"
sbit Motor = P1^0;
unsigned int Counter,Compare;//计数器和比较值
unsigned char KeyNum,Speed;
void main()
{
Timer0_Init();//定时器初始化
while(1)
{
KeyNum=Key();读出按键,通过按键进行控制模式
if(KeyNum==1)
{
Speed++;
Speed%=4;
if(Speed==0){Compare=0;}
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++;
/*产生PWM*/
if(Counter>=100)
{
Counter = 0;
}
if(Counter<Compare)
{Motor = 1;}
else
{Motor = 0;}
}
|