求教51单片机生成spwm波形的程序

采用89c51单片机,双极性调制,在任意两个管脚输出相位差180度脉冲就行

1、用普通I/O口采用软件定时器中断可以模拟SPWM输出。"/**/"里面的内用是对程序的标注,解析。
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.
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-25
这个型号的单片机我没用过,我主要应用dsp,在dsp里面是利用pwm模块产生的pwm,有好几种模式,相差多少度都可以设置,你有空的时候看看单片机的这一部分就行,没有pwm功能的话就利用普通定时器也是可以产生的,利用里面的比较中断控制普通io就可以
第2个回答  2011-10-25
用STC 芯片就行 有2个PWM, 10mS 轮换输出就可以,经过LC滤波,形成正弦波。
可做正弦波逆变器用。本回答被提问者采纳
第3个回答  2012-11-25
PWM可以用定时器产生,相位的话,你用两个引脚,P1.0 P1.1 在一个周期内轮换输出PWM,P1.0输出PWM则P1.1输出低电平,P1.1输出PWM则P1.0输出低电平,这里有一篇文章挺好http://wenku.baidu.com/view/61592b6c1eb91a37f1115c1e.html
思路有了,程序就好办了
第4个回答  2011-10-29
用STC 芯片就行 有2个PWM, 10mS 轮换输出就可以,经过LC滤波,形成正弦波。
可做正弦波逆变器用

基于STC51系列单片机的SPWM波形实现,程序如何编写?急急急急
\/\/ Tt周期 \/\/ T2是产生SPWM波形,并从P1^1输出,用导线连接到P3.4作为测试频率使用。\/\/ T1工作在定时方式1,定时1s \/\/ T0工作在计数方式,对输入的脉冲进行计数,溢出产生中断。\/\/ 16位计数器最大值是65536,1s内可能会产生多次溢出,所以在中断处理程序对中断的次数进行 \/\/ 计数。

SPWM使用单片机生成SPWM波
具体操作步骤是,首先,你需要为正弦波表分配内存,并将其中的数据填充进去。接下来,进入单片机的PWM波形生成模块,每当一个PWM周期结束时,系统会自动触发中断。在中断处理程序(ISR,Interrupt Service Routine)中,你需要根据正弦表中的值,实时调整PWM比较器的设定,这样就能形成连续变化的SPWM波形。这个...

基于at89c51系列单片机的两路互补SPWM波形实现,程序如何编写?要求频率5...
用定时器定时10ms,中断程序里将两个IO管脚状态取反即可。但两个管脚的原始状态是相反的。大致 程序如下:主程序里 TMOD=0X01;TH0=...TL0=...EA=1;ET0=1;PWM1=0;\/\/一个管脚置低 PWM2=1;\/\/另一个管脚置高 TR0=1;中断程序中:TH0=...TL0=...PWM1=!PWM1;PWM2=!PWM2;

可不可以请教一下,在单片机生成spwm波的程序中那个pwm的表是怎么算出...
spwm表其实是占空比的表它的公式是这样的:p = d + A*sin(2*pi *x \/ c)d是直流分量,如果取0,那么spwm会出现正负A是振幅,它决定最大值和最小值pi是3.14c是要取的点数,x是变量,指出当前取到那个数,它是0~c之间变化的。 欢迎追问 ...

请教单片机SPWM信号的计算方法
先由SPWM 波的大周期T,然后根据PWM方波的的周期t,n=T\/t是一个大周期内含有多少 个小周期,然后逐个求出这n个值对应的正弦量m=sin(360×ni\/n)(此处有负值要处理),PWM方波的占空比即为m*256,将其存于表格中,然后用另一定时器定时t,时间一到,就从这个表格里取值,更新占空比控制寄存器CCAP...

c51单片机产生正弦波原理
SPWM,就是在PWM的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输出。

如何实现spwm
2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制;3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器;4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰...

用51单片机产生三相spwm正弦波?程序有重谢50!
有专门的芯片。51单片机很难做spwm。晶振频率不够高

如何产生稳定的SPWM
一般用DSP,或者用含有PCA模块的单片机,再不行就用两个定时器。用查表法就可以实现。市场上使用的很多单片机都有生成SPWM控制波形的功能,该生成波形外接驱动电路即可驱动功率桥,达到逆变的目的。应该说,只要具有PWM模块和定时器模块的单片机都可以完成此任务。

SPWM调制算法简易入门教程(图文并茂+C语言程序)
通过ARR寄存器的值设置载波锯齿波的周期,CCR寄存器的值控制PWM的脉冲宽度。具体实现时,使用单片机的定时中断服务函数实现PWM信号的生成。在中断服务函数中,计算PWM脉冲宽度,输出相应的脉冲。总结上述步骤,完成基于STM32的SPWM驱动程序编写。程序代码需实现以上过程,生成符合SPWM原理的PWM波形。完整的代码实例...

相似回答