基于 51 单片机的 SPWM 波信号发生器
1、载波比选为 N=24
2、调制比 M=Uc/Ur=1
3、单片机采用 12M 晶振
4、正弦波频率为 50HZ
5、高电平的宽度 Tpw=Tt/2*(1+Msinwt)
低电平的宽度 TL=Tt/2*(1-M*sinwt)
其中 Tt 为三角波的周期
单片机输出的波形如下图示:
程序清单:
#include
unsigned char code x[]={66,38,78,26,89,15,97,7,
102,2,103,1,103,1,102,2,
97,7,89,15,78,26,66,38,
38,66,26,78,15,89,7,97,
2,102,1,103,1,103,2,102,
7,97,15,89,26,78,38,66};
unsigned int i,j;
sbit L1=P2^7;
void init()
{
TMOD=0X02;
TH0=(255-x[i]);
TL0=(255-x[i]);
EA=1;
ET0=1;
TR0=1;
L1=1;
}
void main()
{
init();
while(1);
}
void timer0() interrupt 1
{
TH0=(255-x[i]);
TL0=(255-x[i]);
j++;
if(j==8)
{
j=0;
L1=~L1;
i++;
if(i>=48)
i=0;
}
}