标题:
stc12单片机生成spwm波形+仿真
[打印本页]
作者:
zhmgxx113
时间:
2017-8-15 15:42
标题:
stc12单片机生成spwm波形+仿真
stc12单片机生成spwm波形和proteus仿真
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(12.88 KB, 下载次数: 76)
下载附件
2017-8-15 17:13 上传
0.png
(42.71 KB, 下载次数: 78)
下载附件
2017-8-15 17:12 上传
单片机源程序如下:
#include <stc.h>
#include <sin.h>
#define uint unsigned int
uchar index;
uchar a;
void init_pca(void)//pca计数器初始化函数
{
CMOD=0x04;//计数器0的溢出为PCA计数器的时钟源
CCON=0x00;
CCAPM0=0x42;//8位PWM输出,无中断
CL=0x00;//清零pca计数器
CH=0x00;
CCAP0L=pwm[0]; //初始化spwm输出的占空比
CCAP0H=pwm[0];
CR=1;//运行pca计数器
}
void init_timer(void)//计数器初始化函数
{
TMOD= 0x12; //计数器0工作在方式模式2,计数器1工作在方式1
TH0 = 0xFF;//T0的计数值为5,把时钟源5分频
TL0 = 0xFF;
TH1 = 0xF6;//T1的计数值为625,若是12M晶振,则中断频率为12M/625=1920HZ,正弦频率为1920/32=600HZ,即600/12=50HZ
TL1 = 0xA0; //T1的计数值低位
AUXR=0x80;//计数器均工作在8051速度
//ET0 = 1; //开中计数器0断
ET1 = 1; //开计数器1中断
TR0 = 1; //开启计数器0
TR1 = 1; //开计数器1
}
void int_timer1(void) interrupt 3//计数器1中断函数
{
CR=0;
a=a+1;
index++; //查表索引
TH1=0xFD; //重装计数值
TL1=0x8F;
CCAP0H=pwm[index%32]*2;//改变pwm的占空比
CR=1;
}
void main()
{a=0;
EA=1;//开总中断
init_pca();
init_timer();
while(1);
//-.-//
}
单片机源程序如下:
复制代码
所有资料51hei提供下载:
stc生成spwm 仿真.zip
(74.11 KB, 下载次数: 200)
2017-8-15 15:41 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
ww__dong
时间:
2018-4-20 20:11
写的很不错哦
作者:
苏轼苏轼
时间:
2018-4-25 19:48
老哥能写个89c51的吗,
作者:
瓦下班了
时间:
2018-4-28 17:40
大神有这个是51单片机的程序吗
作者:
dyhrdy
时间:
2018-6-28 17:12
谢楼主,你是大神啊。
作者:
aiyowei1998
时间:
2018-7-9 17:17
真的很棒,最近在研究三相逆变电源,有点难
作者:
13480828805
时间:
2018-8-27 16:54
很不错,顶
作者:
dgdz5i
时间:
2018-9-4 21:54
黑币不足,无法下载
作者:
66249259
时间:
2019-7-5 16:30
很不错,顶
作者:
chenjialin12
时间:
2019-8-5 22:02
感谢大佬
作者:
slaoliu
时间:
2023-3-16 21:09
下来研究一下,打算做个课件。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1