99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

求助!PIC16f877產(chǎn)生的PWM.

單片機產(chǎn)生的兩路PWM只能是同步的嗎?我想驅(qū)動半橋電路,怎么延時半個周期啊?
全部回復(fù)(17)
正序查看
倒序查看
2013-09-09 11:19
看到很多人做出來了,但具體怎么實現(xiàn)的都沒說~
0
回復(fù)
2013-09-14 12:21
@xiaoxiaoluohen
看到很多人做出來了,但具體怎么實現(xiàn)的都沒說~

include

#include  

void CCP1_init(void)

 {

     CCPR1L=0x19;             //通過設(shè)CCPR1L:CCP1CON(bit4,bit5)確定高電平時間,

                             

     CCP1CON=0x0f;           

                                  

     INTCON=0x00;             //關(guān)閉總中斷及外圍中斷

     PR2=0x31;                //16位,設(shè)定周期,即頻率,設(shè)定的值與頻率大小成反比

                              //通過周期的倒數(shù)計算時間,單位us,再轉(zhuǎn)為16進制,或直接輸入10進制的值

     TRISC=0xfb;              //設(shè)RC2PWM輸出

     T2CON=0x04;              //開啟TMR2,預(yù)分頻為1,bit2=1TIMER2使能位,bit1:bit0為預(yù)分頻

 }                              

void main(void)                                            

 {   

       CCP1_init();            //PWM初始化   

       while (1)

      {                                    

       ;                       

      }  

 }

0
回復(fù)
2013-09-14 12:22
@adengadeng
include#include voidCCP1_init(void) {    CCPR1L=0x19;            //通過設(shè)CCPR1L:及CCP1CON(bit4,bit5)確定高電平時間,                                 CCP1CON=0x0f;                                                INTCON=0x00;            //關(guān)閉總中斷及外圍中斷    PR2=0x31;               //16位,設(shè)定周期,即頻率,設(shè)定的值與頻率大小成反比                             //通過周期的倒數(shù)計算時間,單位us,再轉(zhuǎn)為16進制,或直接輸入10進制的值    TRISC=0xfb;             //設(shè)RC2為PWM輸出    T2CON=0x04;             //開啟TMR2,預(yù)分頻為1,bit2=1為TIMER2使能位,bit1:bit0為預(yù)分頻 }                             voidmain(void)                                             {         CCP1_init();           //PWM初始化         while(1)     {                                          ;                            }   }
照上面做就行了
0
回復(fù)
2013-09-14 12:22
@adengadeng
照上面做就行了

include 加個#include

0
回復(fù)
2013-09-16 09:37
@adengadeng
照上面做就行了

謝謝!

這樣是只產(chǎn)生了一路PWM吧?我還需要一路和他延時半個周期的,那個波形怎么產(chǎn)生啊?

0
回復(fù)
2013-09-20 13:50
@xiaoxiaoluohen
謝謝!這樣是只產(chǎn)生了一路PWM吧?我還需要一路和他延時半個周期的,那個波形怎么產(chǎn)生啊?

上面的那個,結(jié)構(gòu)上是不是有錯誤啊?

0
回復(fù)
ymhujiang
LV.4
8
2013-09-23 17:24
@adengadeng
include#include voidCCP1_init(void) {    CCPR1L=0x19;            //通過設(shè)CCPR1L:及CCP1CON(bit4,bit5)確定高電平時間,                                 CCP1CON=0x0f;                                                INTCON=0x00;            //關(guān)閉總中斷及外圍中斷    PR2=0x31;               //16位,設(shè)定周期,即頻率,設(shè)定的值與頻率大小成反比                             //通過周期的倒數(shù)計算時間,單位us,再轉(zhuǎn)為16進制,或直接輸入10進制的值    TRISC=0xfb;             //設(shè)RC2為PWM輸出    T2CON=0x04;             //開啟TMR2,預(yù)分頻為1,bit2=1為TIMER2使能位,bit1:bit0為預(yù)分頻 }                             voidmain(void)                                             {         CCP1_init();           //PWM初始化         while(1)     {                                          ;                            }   }
看不懂,還得多學(xué)學(xué)源代碼呀!
0
回復(fù)
sherryhe
LV.2
9
2013-09-26 17:15
@ymhujiang
看不懂,還得多學(xué)學(xué)源代碼呀!
請問STM32F103RET7 能用嗎?
0
回復(fù)
adengadeng
LV.3
10
2013-09-30 15:37
@xiaoxiaoluohen
謝謝!這樣是只產(chǎn)生了一路PWM吧?我還需要一路和他延時半個周期的,那個波形怎么產(chǎn)生啊?

這只是個最簡單的PWM單路輸出初始化程序,不好意思,沒注意看,我以為你只是要輸出個PWM就行了.

0
回復(fù)
2013-10-01 18:05
@sherryhe
請問STM32F103RET7能用嗎?
好多客戶用的單片機是不一樣的
0
回復(fù)
xurubo1983
LV.5
12
2013-10-07 12:36
@adengadeng
這只是個最簡單的PWM單路輸出初始化程序,不好意思,沒注意看,我以為你只是要輸出個PWM就行了.
CCP1CON和CCPR1L是如何設(shè)定值的?比如我要1KHZ的PWM,應(yīng)該要如何設(shè)置?請指教?
0
回復(fù)
wubaoxue
LV.1
13
2013-10-14 09:04

這個是我的半橋程序,有哪位大俠能幫我看看啊!!!

//spwm調(diào)制,逆變器,

#include

#define uchar unsigned char

#define uint unsigned int

__CONFIG(0X3F32);

const uchar sinTab[200]={   //調(diào)制度M=0.9;正弦波代碼數(shù)組

0,1,2,3,4,5,6,7,8,10,

11,12,13,14,15,16,17,18,19,20,

21,22,23,24,25,26,27,28,29,30,

31,32,33,33,34,35,36,37,38,39,

40,41,41,42,43,44,45,45,46,47,

48,48,49,50,51,51,52,53,53,54,

55,55,56,56,57,58,58,59,59,60,

60,61,61,62,62,62,63,63,64,64,

64,65,65,65,65,66,66,66,66,66,

67,67,67,67,67,67,67,67,67,67,

67,67,67,67,67,67,67,67,67,

67,66,66,66,66,66,65,65,65,65,

64,64,64,63,63,62,62,62,61,61,

60,60,59,59,58,58,57,56,56,55,

55,54,53,53,52,51,51,50,49,48,

48,47,46,45,45,44,43,42,41,41,

40,39,38,37,36,35,34,33,33,32,

31,30,29,28,27,26,25,24,23,22,

21,20,19,18,17,16,15,14,13,12,

11,10,8,7,6,5,4,3,2,1,0

};

/*基波50Hz,載波20KHz,半周期內(nèi)的采樣點數(shù)為100,則pwm的周期=1/20ms=50us*/

/*SPWM初始化*/

uchar B_D=0,i;

void init()

{

  TRISB=0X28; //

  PR2=149; //SPWM為50uS=150*4*(1/12)

  CCP1CON=0XBd;   //spwm模式選擇,半橋1011,1101,A、c高有效,b、d低有效

  CCPR1L=0; //占空比為0

  PWM1CON=0X00; //

  TMR2IF=0;

  T2CON=0X04; //不分頻,使能TMR2

}

void  tmr2()

{

  if(TMR2IF)

  {

    if(i==200)

      {  

        i=0;

        B_D=!B_D;

      }

    if(B_D)

      {

        TRISB=0X20; //B...C


      }

    else

      {

        TRISB=0X08; //D...A

      }


      PR2=149; //SPWM為50uS=150*4*(1/12)

      CCPR1L=sinTab[i];

      TMR2IF=0;


      i++;

    }

}

void main ()

{

    init();

    while(1)

      {

         tmr2();

      }

}

0
回復(fù)
wubaoxue
LV.1
14
2013-10-15 08:51
@adengadeng
include#include voidCCP1_init(void) {    CCPR1L=0x19;            //通過設(shè)CCPR1L:及CCP1CON(bit4,bit5)確定高電平時間,                                 CCP1CON=0x0f;                                                INTCON=0x00;            //關(guān)閉總中斷及外圍中斷    PR2=0x31;               //16位,設(shè)定周期,即頻率,設(shè)定的值與頻率大小成反比                             //通過周期的倒數(shù)計算時間,單位us,再轉(zhuǎn)為16進制,或直接輸入10進制的值    TRISC=0xfb;             //設(shè)RC2為PWM輸出    T2CON=0x04;             //開啟TMR2,預(yù)分頻為1,bit2=1為TIMER2使能位,bit1:bit0為預(yù)分頻 }                             voidmain(void)                                             {         CCP1_init();           //PWM初始化         while(1)     {                                          ;                            }   }
要是產(chǎn)生SPWM還需要不斷修改CCPR1L中的數(shù)值。不知道在SPWM半橋輸出的時候,這個死區(qū)需要怎么設(shè)置?設(shè)置的時候需要注意些什么?不過我感覺在正弦波由正半周向負(fù)半軸切換的時候其脈沖寬度很窄,基本為零,是不是就不在需要進行死區(qū)設(shè)置了。哪位大師做過啊,能不能分享下。
0
回復(fù)
daihui713
LV.6
15
2013-10-29 17:28
@xiaoxiaoluohen
謝謝!這樣是只產(chǎn)生了一路PWM吧?我還需要一路和他延時半個周期的,那個波形怎么產(chǎn)生啊?

只有一個CCP模塊,那就只能用定時器互套再產(chǎn)生另一個PWM

0
回復(fù)
daihui713
LV.6
16
2013-10-29 17:40
@xurubo1983
CCP1CON和CCPR1L是如何設(shè)定值的?比如我要1KHZ的PWM,應(yīng)該要如何設(shè)置?請指教?

PWM周期=(PR2+1)*4*Tosc*TMR2預(yù)分頻

PWM高電平時間=CCPR1L:DC1B1:DC1B0*Tosc*TMR2預(yù)分頻          DC1B(1:0)在CCP1CON中設(shè)定

0
回復(fù)
2017-04-18 10:32
@adengadeng
include#include voidCCP1_init(void) {    CCPR1L=0x19;            //通過設(shè)CCPR1L:及CCP1CON(bit4,bit5)確定高電平時間,                                 CCP1CON=0x0f;                                                INTCON=0x00;            //關(guān)閉總中斷及外圍中斷    PR2=0x31;               //16位,設(shè)定周期,即頻率,設(shè)定的值與頻率大小成反比                             //通過周期的倒數(shù)計算時間,單位us,再轉(zhuǎn)為16進制,或直接輸入10進制的值    TRISC=0xfb;             //設(shè)RC2為PWM輸出    T2CON=0x04;             //開啟TMR2,預(yù)分頻為1,bit2=1為TIMER2使能位,bit1:bit0為預(yù)分頻 }                             voidmain(void)                                             {         CCP1_init();           //PWM初始化         while(1)     {                                          ;                            }   }

 CCPR1L=0x19;             //通過設(shè)CCPR1L:及CCP1CON(bit4,bit5)確定高電平時間, 

這個怎么算它的高電平,看不懂公式

0
回復(fù)
xapgy
LV.4
18
2017-04-27 15:46
@wubaoxue
這個是我的半橋程序,有哪位大俠能幫我看看啊!!!//spwm調(diào)制,逆變器,#include#defineucharunsignedchar#defineuintunsignedint__CONFIG(0X3F32);constucharsinTab[200]={ //調(diào)制度M=0.9;正弦波代碼數(shù)組0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,33,34,35,36,37,38,39,40,41,41,42,43,44,45,45,46,47,48,48,49,50,51,51,52,53,53,54,55,55,56,56,57,58,58,59,59,60,60,61,61,62,62,62,63,63,64,64,64,65,65,65,65,66,66,66,66,66,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,66,66,66,66,66,65,65,65,65,64,64,64,63,63,62,62,62,61,61,60,60,59,59,58,58,57,56,56,55,55,54,53,53,52,51,51,50,49,48,48,47,46,45,45,44,43,42,41,41,40,39,38,37,36,35,34,33,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,8,7,6,5,4,3,2,1,0};/*基波50Hz,載波20KHz,半周期內(nèi)的采樣點數(shù)為100,則pwm的周期=1/20ms=50us*//*SPWM初始化*/ucharB_D=0,i;voidinit(){  TRISB=0X28;//  PR2=149;//SPWM為50uS=150*4*(1/12)  CCP1CON=0XBd; //spwm模式選擇,半橋1011,1101,A、c高有效,b、d低有效  CCPR1L=0;//占空比為0  PWM1CON=0X00;//  TMR2IF=0;  T2CON=0X04;//不分頻,使能TMR2}void tmr2(){  if(TMR2IF)  {    if(i==200)      {          i=0;        B_D=!B_D;      }    if(B_D)      {        TRISB=0X20;//B...C      }    else      {        TRISB=0X08;//D...A      }      PR2=149;//SPWM為50uS=150*4*(1/12)      CCPR1L=sinTab[i];      TMR2IF=0;      i++;    }}voidmain(){    init();    while(1)      {         tmr2();      }}
你的pic16f877a程序調(diào)試的怎么樣了?我在論壇二手交易買的那個2000W逆變器單片機壞了能發(fā)個程序么?或者買你都可以
0
回復(fù)
發(fā)
主站蜘蛛池模板: 日韩精品成人一区二区三区 | 撕开奶罩揉吮奶头免费视频 | 亚洲欧美日韩国产综合在线 | 一区二区三区日本 | 九热在线 | 狠狠色狠狠色综合 | 日本黄色xxxxx | 欧美精品二区中文乱码字幕高清 | www480jcom四虎 | 99精品成人无码A片观看 | 裸体女人高潮毛片扒开一一区 | 亚洲免费黄色片 | 肥美欧美内射中出 | 欧美日韩免费大片 | 国产色婷婷五月精品综合在线 | www.久草视频 | 天码人妻一区二区三区 | 亚州日本乱码一区二区三区 | 国产精品久久久亚洲一区 | 被两个两个黑人吃奶4P | 女人和拘做受全程看免费软件 | 亚洲天堂avtt | 高潮毛片无遮挡免费高清 | 91狠狠综合久久久 | 国产大片中文字幕在线观看 | 日韩a级作爱片一二三区免费观看 | 国产色产综合色产在线观看视频 | 国产一区二区精品久 | 看女人毛片 | 色两性网欧美 | 久久久性 | 色窝窝无码精品一区二区 | 亚洲欧美国产日产综合不卡 | 天堂资源在线观看免费高清视频 | 91桃色在线 | 18videossex性欧美69| 日韩精品天堂 | 超碰在线观看免费 | 密桃av | 国产亚洲精品资源在线26u91 | 一级免费看片 |