您的位置 首页 培训

PIC16F877A单片机的PWM功用

说明:设置PWM操作通过以下步骤将CCP模块配置为PWM模式:1.写入PR2寄存器以设定PWM周期。2.写入DCxB9:DCxB0位以设置PWM…

阐明:设置PWM 操作

经过以下过程将CCP 模块装备为PWM 形式:
1. 写入PR2 寄存器以设定PWM 周期。
2. 写入DCxB9:DCxB0 位以设置PWM 占空比。
3. 将相应的TRIS 位清零以将CCPx 引脚设为输出。
4. 写入T2CON 以设置TMR2 预分频比并使能Timer2。
5. 将CCP 模块装备为PWM 形式。

程序:

#include#define uint unsigned int
#define uchar unsigned char
__CONFIG(0x3B31);

void initPWM();
void Delay1ms(uint time);

/******************************************
***主函数功用:PWM初始化,PWM占空比周期性改变
*******************************************/
void main()
{
uchar i;
initPWM();
while(1)
{
for(i=0;i<256;i++)
{
CCPR1L = i;
TMR2ON = 1;
Delay1ms(100);
TMR2ON = 0;
}
}

}

/******************************************************************
***函数功用:PWM初始化,设置PWM周期;
PWM周期=[(PR2)+1]*4*TOSC*(TMR2预分频比)
=(255+1)*4*(1/4000000)*16 s = 4.096 ms

PWM占空比=(DCxB9:DCxB0)*Tosc*(TMR2预分频比)
=1024*(1/4000000)*16 s = 4.096 ms

留意:假如PWM占空比值大于PWM周期,CCPx 引脚将
不会被清零,这时占空比将到达100%;

*****************************************************************/
void initPWM()
{
INTCON = 0x00;//封闭总中止和外部中止
PR2 = 0xff;//写入PR2寄存器设置PWM周期,PWM周期=[(PR2)+1]*4*TOSC*(TMR2预分频比)
CCP1CON = 0x3C; //设置PWM占空比低2位为11,设置为PWM形式
CCPR1L = 0x00;//设置PWM占空比高8位
TRISC = 0xfb;//设置CCP1口为输出
T2CON = 0x02;//设置TMR2预分频为16;
}

void Delay1ms(uint time)
{
uint i,j;
for(i=time;i>0;i–)
for(j=110;j>0;j–);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/274740.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部