新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F877A單片機(jī)的PWM功能

PIC16F877A單片機(jī)的PWM功能

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
說明:設(shè)置PWM 操作

通過以下步驟將CCP 模塊配置為PWM 模式:
1. 寫入PR2 寄存器以設(shè)定PWM 周期。
2. 寫入DCxB9:DCxB0 位以設(shè)置PWM 占空比。
3. 將相應(yīng)的TRIS 位清零以將CCPx 引腳設(shè)為輸出。
4. 寫入T2CON 以設(shè)置TMR2 預(yù)分頻比并使能Timer2。
5. 將CCP 模塊配置為PWM 模式。

本文引用地址:http://m.butianyuan.cn/article/201611/316762.htm

程序:

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

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

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

}

/******************************************************************
***函數(shù)功能:PWM初始化,設(shè)置PWM周期;
PWM周期=[(PR2)+1]*4*TOSC*(TMR2預(yù)分頻比)
=(255+1)*4*(1/4000000)*16 s = 4.096 ms

PWM占空比=(DCxB9:DCxB0)*Tosc*(TMR2預(yù)分頻比)
=1024*(1/4000000)*16 s = 4.096 ms

注意:如果PWM占空比值大于PWM周期,CCPx 引腳將
不會被清零,這時(shí)占空比將達(dá)到100%;

*****************************************************************/
void initPWM()
{
INTCON = 0x00;//關(guān)閉總中斷和外部中斷
PR2 = 0xff;//寫入PR2寄存器設(shè)置PWM周期,PWM周期=[(PR2)+1]*4*TOSC*(TMR2預(yù)分頻比)
CCP1CON = 0x3C; //設(shè)置PWM占空比低2位為11,設(shè)置為PWM模式
CCPR1L = 0x00;//設(shè)置PWM占空比高8位
TRISC = 0xfb;//設(shè)置CCP1口為輸出
T2CON = 0x02;//設(shè)置TMR2預(yù)分頻為16;
}

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



關(guān)鍵詞: PIC16F877A單片機(jī)PWM功

評論


技術(shù)專區(qū)

關(guān)閉