欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1707|回復: 0
打印 上一主題 下一主題
收起左側

MSP430實現PI控制單閉環調速

[復制鏈接]
跳轉到指定樓層
樓主
ID:578838 發表于 2019-7-6 10:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式



#include <msp430x14x.h>
#include "Config.h"                     //開發板配置頭文件,主要配置IO端口信息
#include "LCD1602.c"  
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
uint count=0;
float sv=0;
float sv1=0;
float ev=0;
float v=0;
float p=0;
int i=0;
float jifen=0;

void Port_Init()
{
        P1SEL &= ~(BIT0+BIT4+ BIT5+BIT6+BIT7);                    //設置IO口為普通I/O模式
        P1DIR &= ~ (BIT0+BIT4+ BIT5+BIT6+BIT7);                 //設置IO口方向為輸入
        P1IE|=(BIT0+BIT4+BIT5+BIT6+BIT7);
        P1IES|=(BIT0+BIT4+BIT5+BIT6+BIT7);
        P1IFG&=~(BIT0+BIT4+BIT5+BIT6+BIT7);

}


void PID()
{
   sv=4.0*count/600*60;
   count=0;
   ev=sv1-sv;

   v=5.5*ev;
   TACCR1=TACCR1+v;

   if((-200<ev)&&(ev<200))      
{

jifen=jifen+ev;
jifen=jifen>=6000?6000:jifen;  
}

else

{
  jifen=0;
}

    TACCR1=TACCR1+v*10+(int)(jifen);


   if(TACCR1>=10000)
   {
     TACCR1=10000;
   }

}

void PWM_Init(void)                     //產生10KHZ、占空比為50%的PWM信號
{
  P1SEL |= BIT2;                        //P12口輸出PWM信號
  P1DIR |= BIT2;                        //P12口接入一個LED發光二極管
  TACCR0 = 10000;                         //CCR0
  TACCR1 = 0;                         //CCR1,占空比50%,可以更改,LED燈亮度會變化
  TACCTL1 = OUTMOD_7 ;//復位/置位
  TACTL |= TASSEL_2 + MC_1+ID_3;             //SMCLK做時鐘源,1分頻,增加計數模式

}


void TIMEB_INIT(void)
{
TBCTL |= TBSSEL_2 + MC_1+ID_3+TBCLR+TBIE;
TBCCR0 = 9999;
}

void main(void)
{
  Clock_Init();
  WDTCTL=WDT_ADLY_250;              //看門狗設置
  IE1|=WDTIE;                         //系統時鐘設置
  Port_Init();                          //端口初始化
  Close_LED();                          //關閉數碼管顯示
  PWM_Init();                           //設置TIMERA,P12輸出PWM信號
  _EINT();


     LCDPort_init();
     delay_ms(100);                      //延時100ms
     LCD_init();                         //液晶參數初始化設置
     LCD_clear();   


  while(1)                              //無限循環
    {

       uchar display[6]={0, 0, 0,0,0,0};
        LCD_write_str(0,0,"n0=");
        LCD_write_str(0,1,"n1=");
        display[0]=((uint)sv)%10;
        display[1]=((uint)sv)/10%10;
        display[2]=((uint)sv)/100;
        //display[3]=((uint)sv)/1000%10;
        //display1[0]=((uint)TACCR1)/10000;


        display[3]=((uint)sv1)%10;
        display[4]=((uint)sv1)/10%10;
        display[5]=((uint)sv1)/100;

        LCD_write_char(4,0, display[2]+0x30);
        LCD_write_char(5,0, display[1]+0x30);
        LCD_write_char(6,0, display[0]+0x30);
       //LCD_write_char(7,0, display[1]+0x30);
        //LCD_write_char(8,0, display[0]+0x30);


        LCD_write_char(4,1, display[5]+0x30);
        LCD_write_char(5,1, display[4]+0x30);
        LCD_write_char(6,1, display[3]+0x30);
        if ((P1IN & BIT4)==0x00)
   {
        delay_ms(20);
        if ((P1IN & BIT4)==0x00)
      {
          TACCR1 = 0;      
      }
        while(!(P1IN & BIT4));  
   }

   if ((P1IN & BIT5)==0x00)
   {
        delay_ms(20);
        if ((P1IN & BIT5)==0x00)
      {
          TACCR1 = 5000;  
          sv1=330;
      }
        while(!(P1IN & BIT5));  
   }


   if ((P1IN & BIT6)==0x00)
   {
        delay_ms(20);
        if ((P1IN & BIT6)==0x00)
      {

        sv1=sv1+10;//if(TACCR1<=55000)
            //TACCR1 = TACCR1+5000;
         // else
            //TACCR1 = 60000;   
      }
        while(!(P1IN & BIT6));  
   }



   if ((P1IN & BIT7)==0x00)
   {
        delay_ms(20);
        if ((P1IN & BIT7)==0x00)
      {

        sv1=sv1-10;//if(TACCR1>=5000)
       //TACCR1 = TACCR1-5000;
     // else
       //TACCR1 =0;     
      }
        while(!(P1IN & BIT7));  
   }

    }
}



#pragma vector =PORT1_VECTOR
__interrupt void Port1_ISR(void)
{

  if ((P1IFG |0xFE)==0xFF)
       {
         count++;
       }
   P1IFG=0;
}

#pragma vector =WDT_VECTOR
__interrupt void WDT_IRQ(void)
{   

     PID();

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表