stc单片机产生pwm波这个程序看不懂求讲解,最好能一句一句解释,编程也不太懂回答的好还有追加奖励

stc单片机产生pwm波这个程序看不懂求讲解,最好能一句一句解释,编程也不太懂回答的好还有追加奖励#include <STC12x5A60S2.H>
#define uchar unsigned char
#define uint unsigned int
uchar code pwm[54]={255,240,226,211,196,182,168,154,141,128,115,103,91,80,69,59,50,42,34,27,20,15,10,6,3,1,0,
0,1,3,6,10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,154,168,182,196,211,226,240,255
}; // 反正弦变化
int index=0;
sbit P13=P1^3; //PCA模块0输出
sbit P14=P1^4; //PCA模块1输出

bit zf=0; //前后半周期标志
void init_pca(void)//pca计数器初始化函数
{
CMOD=0x02;//计数器0的溢出为PCA计数器的时钟源,允许pca中断使能
CCON=0x00;
CCAPM0=0x42;//8位PWM输出,无中断
CCAPM1=0x42;//8位PWM输出,无中断
CL=0x00;//清零pca计数器
CH=0x00;
CCAP0L=pwm[0]; //初始化spwm输出的占空比
CCAP0H=pwm[0];
CCAP1L=pwm[0]; //初始化spwm输出的占空比
CCAP1H=pwm[0];
CR=1;//运行pca计数器
}
void init_timer(void)//计数器初始化函数
{
TMOD= 0x01; //计数器0工作在方式模式1
TH0 = 0XF7;//T1的计数值为2048,若是11.0592M晶振,则中断频率为11.0592M/2048=5.4K
TL0 = 0xFF; //T1的计数值低位
AUXR=0xC0;//计数器均工作在1T模式。计数频率11.0592M
ET0 = 1; //开中计数器0断
TR0 = 1; //开启计数器0
}
void int_timer0(void) interrupt 1//计数器1中断函数
{
TH0=0xF7; //重装计数值
TL0=0xFF;
index++; //查表索引

if(index==54) //半周期转换,每半周期分为60份
{
CR=0; //关PCA计数
index=0;
zf=~zf; //半周期标志,zf=0,前半周期,zf=1,后半周期
if(zf) //设置后半周期
{
P13=0;
CCAPM0=0X00; //关闭模块0
CCAPM1=0X42; //设置模块1工作方式
}
else //设置前半周期
{
P14=0;
CCAPM1=0X00; //关闭模块1
CCAPM0=0X42; //设置模块0工作方式
}
CR=1; //开PCA计数
}

if(zf==0) //将下一小格的占空比赋给相应值
{
CCAP0H=pwm[index];
}
else
{
CCAP1H=pwm[index];
}
}
void main(void)
{
P14=0;
P13=0;
EA=1;//开总中断
init_pca();
init_timer();
while(1)//主循环
{
}
}

第1个回答  2016-07-04
对于每个人的努力来说,奇迹不可能不会发生追答

对于每个人的努力来说,奇迹不可能不会发生

对不起!!!!明月草草!!我发错了!!我是要发给“45度角的流年”的,别误会

第2个回答  2016-07-04
可以联系我追问

怎么问你啊

追答

385577691

STC单片机PWM编程!
1、改变程序,使能添加输出锯齿波;2、改变程序,使输出添加三角波;3、改变程序,使输出添加方波;4、改变程序,并制作一个简单的函数发生器

求51单片机PWM程序(一个定时器产生三路PWM 可独立运作) 简单来说就...
然后设置三个变量和一个计数器,我描述不太清楚,你看一下程序:sbit P1_0 = P1^0; \/\/---P1.0,P1.1,P1.2是三路PWM输出 unsigned char Set_PWM0 = 0; \/\/--Set_PWM0 Set_PWM1 Set_PWM2 \/\/--分别是低电平占整个脉冲的百分比 \/\/--他们最小取0,最大取9 unsigned char counter = ...

用单片机产生pwm波,产生后怎么测,用的是stc12c5608ad芯片,要测哪个引脚...
一般来说你看下程序里面的CCAP后面的数字就知道了,比如CCAP0L,用的是PCA0,那么一般是PWM0即P3.7,示波器测得话你示波器地线夹接系统地线,探头勾相应输出管脚就可以了,比如说是P3.7,你勾它的输出就可以了,因为封装不一样,这里就不知道那个管脚了,你得看下技术手册,比如说你是LQFP32封装,...

stc单片机脉宽测试程序
38khz占空比50%的pwm波 其实也就是 38khz占空比50%的方波了。 通过程序中断实现38khz占空比50%的pwm波,单片机确实几乎忙得不用做其它事了。 但是现在大多单片机都有 pwm 或者 可编程时钟输出,前者可以调频率和占空比,后者只能调频率(占空比固定50%),只需向特殊寄存器输入参数就可以得到想要的方...

求STC15W4K56S4 单片机输出pwm波控制电调的程序
如图所示,STC-ISP下载软件里既有PWM输出的例程。望采纳。。。

STC89c52通过单片机定时器产生的PWM波,多大电压??
STC89C52是5V,所以输出也就是 0-5V 89c52做pwm估计也就顶多能到二三十khz了 这个电路要是直接驱动P管的话,Vi必须小于5V才能勉强工作,驱动电压也仅有5V,,电流小还是勉强可以看看效果的。建议换个带PWM的片子(STC的很多很便宜)+mos驱动芯片,做好了 ...

单片机编程中此句 PWME |= (1<<0)什么意思,求详细解释!!!
2016-03-26 在单片机中 while(1) { if(stop==0) {... 2016-05-02 单片机中 if(time<=PWM1) s1=1; else... 2012-09-14 菜鸟请教单片机C编程中0x80,0x0f, 0xf0,0xc... 5 2016-12-05 stc单片机产生pwm波这个程序看不懂求讲解,最好能一句一句... 1 2011-11-02 关于单片机C语言编程的一...

单片机(输出PWM波)去改变电压的大小(24v到12v中的任意值)
1 你可以参考555时基集成电路,这个可以实现PWM的脉宽调节,可以满足你的要求,不过一般都需要加一个场效应管接负载提升负载能力 2 用普通单片机也可以实现,通过定时器调节脉宽,不过这个要有单片机的编程基础。3 还有一种类似7812的三段稳压芯片,但是它不是像7812一样通过压降调压,也是通过PWM...

单片机产生40KHz的PWM波
这款单片机内部自带8位PWM

求用STC12单片机控制三个MG995伺服电机的程序。通过输出PWM方波控制
你要做什么用途?是实际方面的使用么?这个你需要寻找专业的设计工程师为您设计才可以,否则接口未必兼容,而且,你还是控制3个的,需要3路PWM波输出,STC12C5A60S2倒可以直接输出高速PWM波信号的。我做过一路伺服电机的控制,3个原理一样样的,如果你有什么需要,可以联系我。

相似回答