2、/*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空吵并比为20%的脉冲信号*/
/*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/
#include <reg51.h>
typedef unsigned char uchar
sbit P1_0=P1^0
uchar time=0
uchar period=25
uchar high=5
void timer0() interrupt 1 using 1
{
TH0=0x3c/*定时器斗庆初值重装载*/
TL0=0xb0
time++
if(time==high) /*高电平持续时间结束,变低*/
{ P1_0=0}
else if(time==period) /*周期时间到,变高*/
{ time=0
P1_0=1
}
}
void main()
{
TMOD=0x01/*定时器0方式1*/
TH0=0x3c/*定时器装载初值*/
TL0=0xb0
EA=1/*开CPU中断*/
ET0=1/*开定时器0中断*/
TR0=1/*启动定升销迹时器0*/
while(1) /*等待中断*/
{}
}
3、说明:本程序主要采用了51单片机(具体型号STC89C52RC)的定时器,工作在方式3,来产生规定时间内的方波,制造SPWM.
实现spwm的方法:
1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进;
2)由SPWM专用亏此芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制;
3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器;
4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。
扩展资料:
SPWM(Sinusoidal PWM)法是一种比较成熟的、使用较广泛的PWM法。冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。SPWM法就是以该结论为理论基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值则可调节逆变电路输出电压的频率和卖空含幅值。
PWM的全称是Pulse Width Modulation(脉冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压。广泛地用于电动机调速和阀门控制,比如电动车电机中笑调速就是使用这种方式。
参考资料:百度百科-SPWM
用定时器纳顷定时10ms,中断程序里将两个IO管脚状态取反即可。但两个管脚的原始状态是相反的。大致 程序如下:
主程滑茄猛序里
TMOD=0X01;
TH0=.......
TL0=......
EA=1
ET0=1
PWM1=0//一个管脚置低
PWM2=1//另一个管脚置高
TR0=1
中断程序中:
TH0=.......
TL0=......
PWM1=!PWM1;信桥
PWM2=!PWM2;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)