stc单片机产生pwm,这有一个程序,有人能详细解释下它怎么产生pwm波吗,能逐句详解吗

stc单片机产生pwm,这有一个程序,有人能详细解释下它怎么产生pwm波吗,能逐句详解吗,第1张

哥们,这个已经很详细了;

大概说说吧,PWM[54]是定义的一组PWM脉宽输出数组,PWM脉宽输出是0-255;0的时候脉宽输出最大,255的时候脉宽输出最小;

然后那个初始化PCA,初始化定时器0就不说了,你自己下一个手册看下就明白;

然后是中断,每中断一次index加1,然后判断index是不是等于54,意思就是PWM[54]整个数组里面的PWM是不是都送了一次CCAP寄存器;如果都数组都送了一次,将index置零,从头开始送;标志位取反,如果标志位zf=1,让P14输出PWM,P13关闭;,如果zf=0,让P13输出PWM,P14关闭;if(zf==0)后面的语句就是让PWM[54]中的每一个数都送CCAP寄存器一次;

其实按这个程序注释的话,他本意是PWM波形从小变大P14输出,PWM波形有大变小P13输出;但是这个程序的实际效果是P14由小变大再由大变小。然后P14关闭,P13由小变大再由大变小

如此循环;

你最关心的PWM怎么输出:就是这两个语句,CCAP0H=pwm[index]; CCAP1H=pwm[index]; index每中断一次加1,那么index是由0加到54,假如说index=0 ,那么CCAP0H=pwm[0]; ,pwm[0]对应数字里面的255,寄存器CCAP0H=255;这个寄存器等于255,PWM输出就是一个小脉宽;下一次中断CCAP0H=240了,脉宽有增加了一点;至于CCAP0H送一个数据就有脉宽输出,这个是由单片机硬件本身决定的;你看看手册就知道了;

这个已经说得很明白了吧;累死,打字都打了20分钟;

1:PWM就是PULSE WIDTH Modulation 脉宽调制 - 矩形脉冲波形,你可理解为占空比可调的方波。

2DSP直接可以输出PWM波,所以不需要额外的硬件连接。但是DSP输出的驱动能力有限,驱动电机必须额外加放大驱动电路。

3以DSP的EVA单元为例子,EVA的2个通用定时器可以产生2路独立的PWM波,3个比较单元能够产生6对带死区的PWM波。(1)T1CNT为连续计数模式产生不对称的PWM波,此时PWM的周期为(t1pr+1)/tclk,t1pr为周期寄存器值,TCLK为当前定时器每计数一次所需时间。(2)T1CNT为连续增减计数产生对称的PWM波。周期为2T1PR/tclk程序如下:void InitEV(void) {

EvaRegsT1PR=5000;EvaRegsT1CMPR=2500//没用这种方式产生;EvaRegsT1CNT=0//定时器1初值设0;EvaRegsT1CONALL=0x144E//连续增模式,使能定时器1和设置T1P的周期;EvaRegsCMPR1=500;//使用比较单元输出PWM;EvaRegsACTRall=0x0006//设置输出管教地有效还是高有效;EvaRegsDBTCONall=0x0530//使能死区定时器,死区时间为5倍定时器时间;EvaRegsCOMCONAall=0xa600//比较器控制A *** 作时能

}

uchar pwm_dat1 = 0,pwm_dat2 = 128;

void PWM_change() interrupt 1

{

TH0 = 0xff;

TL0 = 0xa0;

pwm_dat1 = (pwm_dat1 + 1) % 255;

if(pwm_dat1 < pwm_dat2) PWM = 1;

else PWM = 0;

}

以上就是关于stc单片机产生pwm,这有一个程序,有人能详细解释下它怎么产生pwm波吗,能逐句详解吗全部的内容,包括:stc单片机产生pwm,这有一个程序,有人能详细解释下它怎么产生pwm波吗,能逐句详解吗、1,说明PWM波的基本构成 2,画出基于DSP的PWm波形发生器的硬件连接图,说明工作原理 3,软件编程要C语言的、52单片机PWM法控制一个LED灯亮度,求原理图和C程序,最好附原理图及解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9838096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存