色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 微機控制/最小拍控制的C語言描述

          微機控制/最小拍控制的C語言描述

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          參考電路圖:

          參考程序流程圖:

          本文引用地址:http://cafeforensic.com/article/201611/315736.htm

          參考程序:

          /*****************************************
          文件名:ACC4-1-1.C
          功能描述:最小拍有紋波實驗程序。
          *****************************************/
          #include
          #include
          #include
          /*****************************************
          宏定義
          *****************************************/
          #define uchar unsigned char
          #define uint unsigned int
          #define ADC_7 XBYTE[0x7ff0] //定義模數(shù)轉(zhuǎn)換IO地址
          #define DAC_1 XBYTE[0x7ff2] //定義D/A第一路的IO地

          /*****************************************
          全局變量定義
          *****************************************/
          sbit str = P1^7; //定義A/D啟動信號
          sbit DIN0 = P1^0; //聲明同步信號
          uint data time; //聲明變量,用于定時
          uchar data t0_h,t0_l; //用于存儲定時器0的初值
          int TK=100; //聲明采樣周期變量,//采樣周期=TK*10ms
          int TC; //TK的變量
          float KK0=0.5435; //系數(shù)kk0
          float KK1=-0.2000; //系數(shù)kk1
          float KK2=0; //系數(shù)kk2
          float KK3=0; //系數(shù)kk3
          float PP1=0.7170; //系數(shù)pp1
          float PP2=0; //系數(shù)pp2
          float PP3=0; //系數(shù)pp3
          char UK; //當(dāng)前時刻的D/A輸出
          char EK; //當(dāng)前時刻的偏差
          char UK_1,UK_2,UK_3,EK_1,EK_2,EK_3;//前3次采樣時刻的控制量和偏差
          /*****************************************
          主函數(shù)
          *****************************************/
          void main(void)
          {
          TMOD = 0x01;
          time = 10; //定時10ms
          t0_h = (65536-500*time)/256; //計算定時器0初值
          t0_l = (65536-500*time)%256;
          t0_l = t0_l+20; //修正因初值重裝而引起的定時誤差
          TH0 = t0_h;
          TL0 = t0_l;
          IT1 = 1; //邊沿觸發(fā)中斷
          EX1 = 1; //開外部中斷1
          ET0 = 1; //開定時中斷0
          TR0 = 1; //啟動定時器

          TC = 1;
          DAC_1= 0x80; //D/A清零
          UK=UK_1=UK_2=UK_3=0;
          EK=EK_1=EK_2=EK_3=0;

          EA = 1; //開總中斷
          while(1);
          }

          /**********************************************
          函數(shù)名:INT1
          功能 :1號外部中斷服務(wù)程序
          參數(shù) :無*
          返回值:無 *
          ***********************************************/
          void int1() interrupt 2 using 2
          { float i,j;

          DIN0 = 1; //讀取輸入前,先輸出高電平
          if(DIN0) //判同步信號到否
          {
          UK=UK_1=UK_2=UK_3=0;
          EK=EK_1=EK_2=EK_3=0;
          DAC_1 =0x80; //D/A輸出零
          TC=1;
          }
          else
          {
          TC--; //判采樣周期到否
          if(TC==0)
          {
          EK = ADC_7-128; //采樣當(dāng)前的偏差值,并計算偏差的變化量

          i=EK*KK0; //計算i=EK*KK0+EK_1*KK1+EK_2*KK2+EK_3*KK3)
          i=i+EK_1*KK1;
          i=i+EK_2*KK2;
          i=i+EK_3*KK3;
          j=UK_1*PP1; //計算j=UK_1*PP1+UK_2*PP2+UK_3*PP3
          j=j+UK_2*PP2;
          j=j+UK_3*PP3;
          i=i-j; //i-j

          if(i>0) //判控制量是否溢出,溢出賦極值
          {
          if(i>=127)
          UK=127;
          else
          UK=(char)i;
          }
          else
          {
          if(i<-128)
          UK=-128;
          else
          UK=(char)i;
          }
          DAC_1=UK+128; //D/A輸出控制量
          UK_3=UK_2; //控制量遞推
          UK_2=UK_1;
          UK_1=UK;
          EK_3=EK_2; //偏差遞退
          EK_2=EK_1;
          EK_1=EK;
          TC=TK; //采樣周期變量恢復(fù)
          }
          }
          }

          /**********************************************
          函數(shù)名:Timer0
          功能 :定時器0中斷服務(wù)程序
          參數(shù) :無
          返回值:無
          ***********************************************/
          void Timer0() interrupt 1 using 1
          {
          str = !str; //產(chǎn)生A/D啟動信號
          TH0 = t0_h; //重新裝入初值
          TL0 = t0_l;
          }

          參考結(jié)果:

          階躍有波紋

          階躍無波紋

          斜坡有波紋

          斜坡有波紋



          評論


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

          關(guān)閉