久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1511|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品综合 | 久久久久久久一区 | 91免费看片 | 超碰97免费在线 | 亚洲成人自拍 | 亚洲综合在线视频 | 欧美一区二 | 视频一区在线观看 | 久久er99热精品一区二区 | 91久久久精品国产一区二区蜜臀 | 久久一视频 | 亚洲成人一区二区在线 | www.精品一区| 国产精品1区2区 | 一本久久a久久精品亚洲 | 国产三区精品 | 99久久成人 | 久久国产高清 | 亚洲精品一区国语对白 | 成人免费视频播放 | 99久久精品国产一区二区三区 | 亚洲国产精品视频一区 | 久久免费高清视频 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 国产女人叫床高潮大片免费 | 国产片淫级awww | jdav视频在线观看免费 | 亚洲精品一区二三区不卡 | 一区二区三区中文字幕 | 国产精品99久久久久 | 99久久婷婷国产综合精品首页 | 有码在线 | 国产精品日韩欧美一区二区 | 97狠狠干 | 亚洲国产91 | 日本一区不卡 | 久久精片| 精品乱码一区二区三四区视频 | 日韩高清不卡 | 青青草华人在线视频 | 黄色a三级 |