GOGOGO高清完整国语,GOGOGO在线观看免费观看完整版高清,GOGOGO免费高清完整,GOGOGO高清在线观看免费视频,GOGOGO日本高清国语完整,GOGOGO免费高清完整版

技術熱線: 4007-888-234

技術支持

貢獻一個我寫的SPWM程序(PICC)

更新時間: 2019-03-22

十年單片機開發方案公司深圳英銳恩分享貢獻一個我寫的SPWM程序(PICC)。

//最近在搞SPWM逆變,貢獻一個小程序,FYI

//用18F452調的,只有SPWM波形部分,反饋沒加進來,如果需要改幅度,該R_rate的值就好了,范圍(1~195)

//晶震10M+PLL鎖到40M,RC2輸出SPWM波形,RC0為50HZ方波,作為半橋驅動時的交越信號。

void main()
 {    asm("NOP");   
      TRISC=0X00;                //設置I/O口方向
      TRISD=0X00;          //設置I/O口方向
      PORTC=0X00;
      PORTD=0X00;
   //=============LCD init======================
   //   lcd_init();                
   //=============timer0 init===================
   T0CON=0x82; //8分頻  ;0xCx is 8bit timer
   TMR0L=0x79;
   TMR0H=0XFE; 
  
   GIE=0X1;                    //開放全局中斷
      TMR0IE=1;                   //使能timer0 interrupt   
   //==============PWM init=====================         
      PR2=124;                    //設置PWM頻率20K
      CCPR1L=0;                   //設置占空比高8位,init時為0
      CCP1CON=0x0F;               //CCP select PWM mode
      T2CON=0X05;                 //設置TIMER2預分頻比并使能T2     
   //==============MAIN LOOP====================

 while(1)

      {  }

}

//===============中斷函數=============================
void interrupt ISR(void)
  {    
    if((TMR0IF)&&(TMR0IE))
    {  
    
     TMR0L=0x79;

TMR0H=0XFE;
     TMR0IF=0;//清除中斷標志       
        update_duty();//用3.2K的定時頻率按照正弦規律改變脈寬,改64次正好為50HZ的調制正弦波
  }
   }

//下面這部分摘自另一個文件,

unsigned char R_sin=0; //這個變量從0~31變化。
unsigned char R_rate=190;//幅度
void update_duty(void)
{   unsigned int i=0;
 
 if(R_sin==0)
    RC0=!RC0;   //創造交越信號
   
 i=((float)(sin_tab[R_sin]))*R_rate/100;
 
  R_sin++;
 if(R_sin==32)
    R_sin=0;   
    
 CCPR1L=i/4;                   //設置占空比高8位,init時為0
    CCP1CON=0x0F+(i&3)*16;
 }

const unsigned char sin_tab[32]={
 0,25,50,74,98,120,142,162,180,
 197,212,225,235,244,250,254,
 255,254,250,244,235,225,212,
 197,180,162,142,120,98,74,50,25};

 

(文源網絡,侵刪)

404
返回首頁 |  返回上一頁
欢迎光临: 海口市| 博客| 牟定县| 威海市| 仁怀市| 时尚| 伊春市| 莲花县| 淅川县| 大邑县| 沙湾县| 新丰县| 织金县| 阿克| 库伦旗| 恩平市| 新乡县| 祁阳县| 甘孜县| 盈江县| 英德市| 桂平市| 宜宾市| 宜良县| 汉川市| 泰顺县| 扶沟县| 辽阳县| 通河县| 乌拉特前旗| 青冈县| 融水| 昌宁县| 高密市| 响水县| 海淀区| 芒康县| 遂川县| 万全县| 尉犁县| 合川市|