欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> EDA開發(fā)應(yīng)用 >> Keilc >> 正文

直流電機控制Keil c51源代碼

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2011/3/3

直流電機的開環(huán)控制Keil c51源代碼

//-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
#include<ABSACC.H>  
//-----------------------定義管腳--------------------------------------------------------
sbit PWM=P1^0;             //PWM波形輸出
sbit DR=P1^1;              //方向控制
#define  timer_data  (256-100) //定時器預(yù)置值,12M時鐘是,定時0.1ms
#define  PWM_T 100         //定義PWM的周期T為10ms
unsigned char PWM_t;       //PWM_t為脈沖寬度(0~100)時間為0~10ms
unsigned char PWM_count;   //輸出PWM周期計數(shù)
unsigned char time_count;  //定時計數(shù)
bit direction;             //方向標(biāo)志為
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:timer_init
// 函數(shù)功能:初始化設(shè)施定時器
//--------------------------------------------------------------------------------------------------
void timer_init()
     {
   TMOD=0x22; /*定時器1為工作模式2(8位自動重裝),0為模式2(8位自動重裝) */
      PCON=0x00;
      TF0=0;
      TH0=timer_data;   //保證定時時長為0.1ms
      TL0=TH0;
      ET0=1;
   TR0=1;            //開始計數(shù)
      EA=1;             //中斷允許
   }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:setting_PWM
// 函數(shù)功能:設(shè)置PWM的脈沖寬度和設(shè)定方向
//--------------------------------------------------------------------------------------------------
void setting_PWM()
      {
   if(PWM_count==0)  //初始設(shè)置
   {
   PWM_t=20;
   direction=1;
   }
   }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:IntTimer0
// 函數(shù)功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer0() interrupt 1
              {
     time_count++;
              DR=direction;
     if(time_count>=PWM_T)
              {
     time_count=0;
     PWM_count++;
     setting_PWM();  //每輸出一個PWM波調(diào)用一次
     }
     if(time_count<PWM_t)
     PWM=1;
     else
     PWM=0;
     }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:main
// 用戶主函數(shù)
// 函數(shù)功能:主函數(shù)
//--------------------------------------------------------------------------------------------------
void main()
     {
  timer_init();
  setting_PWM();
  }


直流電機閉環(huán)控制Keil c51源代碼

//-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
#include <reg51.h>
sbit INT_0 =P3^2;              // 將p3.2外部中斷0
sbit pulse_A=P1^2;               // P1.2為脈沖A輸入
sbit PWM=P1^0;                   //PWM波形輸出
sbit DR=P1^1;                    //方向控制
//-----------------------預(yù)定義值--------------------------------------------------------
#define PWM_T 1800              //定義PWM的周期T為18ms
#define Ts    1000              //定義光電編碼器采樣時間為10ms
#define  timer_data  (256-10) //定時器預(yù)置值,12M時鐘是,定時0.01ms
//-----------------------預(yù)設(shè)定值--------------------------------------------------------
bit direction;                  //方向標(biāo)志位               用戶設(shè)定
unsigned char R;                //需要得到的直流電機轉(zhuǎn)速   用戶設(shè)定
//-----------------------實際運行狀態(tài)--------------------------------------------------------
bit real_direction;             //電機實際運行方向  
unsigned char Rr;               //直流電機實際轉(zhuǎn)速
//-----------------------計算所得補償狀態(tài)------------------------------------------
bit    compensate_polarity;     //補償極性
unsigned char dR;               //轉(zhuǎn)速補償
//-----------------------經(jīng)補償后得到的脈寬------------------------------------------
unsigned char PWM_t;            //PWM_t為脈沖寬度(320~400)時間為3.2~4.0ms
unsigned char PWM_count;        //輸出PWM周期計數(shù)
//-----------------------各中間計數(shù)值------------------------------------------
unsigned char pulseB_count;     //脈沖計數(shù)
unsigned char time0_count;      //定時計數(shù)
unsigned char time1_count;      //定時計數(shù)
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:timer_init
// 函數(shù)功能:初始化設(shè)置定時器
//--------------------------------------------------------------------------------------------------
void timer_init()
     {
   TMOD=0x22; /*定時器1為工作模式2(8位自動重裝),0為模式2(8位自動重裝) */
      PCON=0x00;
      TF0=0;
      TH0=timer_data;   //保證定時時長為0.01ms
      TL0=TH0;
   TH1=timer_data;   //保證定時時長為0.01ms
      TL1=TH0;
      ET0=1;            //定時器0中斷允許
   TR0=1;            //定時器0開始計數(shù)
   ET1=1;            //定時器1中斷允許
   TR1=1;            //定時器1開始計數(shù)
      EA=1;             //中斷允許
   }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: INT0_init()
// 函數(shù)功能: 初始化設(shè)置
//            設(shè)定INT0的工作方式
//--------------------------------------------------------------------------------------------------
void INT0_init(void ) 
             {
    pulseB_count=0;        //脈沖計數(shù)器清零
              IT0=1;     //選擇INT0為沿觸發(fā)方式
              EX0=1;     //外部中斷允許
              EA=1;      //系統(tǒng)中斷允許
              }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:setting_PWM
// 函數(shù)功能:設(shè)置PWM的脈沖寬度和設(shè)定方向
//--------------------------------------------------------------------------------------------------
void setting_PWM()
      {
 // direction=1;  //設(shè)定轉(zhuǎn)動方向
 // R=540;        //設(shè)定轉(zhuǎn)速
 // dR=0;         //轉(zhuǎn)速補償為零
 // calculate_PWM_t();      //重新計算脈寬
   }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: calculate_PWM_t
// 入口參數(shù): R需要得到的直流電機轉(zhuǎn)速,dR轉(zhuǎn)速補償
// 出口參數(shù): PWM_t為脈沖寬度(320~400)時間為3.2~4.0ms
// 函數(shù)功能: 計算脈沖寬度,PWM_t=R/150;
//--------------------------------------------------------------------------------------------------
void calculate_PWM_t()
              {
      if(compensate_polarity==1) //正補償
               PWM_t=(R+dR)/150;
      else
       PWM_t=(R-dR)/150;        //負修正
      }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: calculate_Rr
// 入口參數(shù): pulseB_count脈沖計數(shù)
// 出口參數(shù): Rr直流電機實際轉(zhuǎn)速
// 函數(shù)功能: 計算實際轉(zhuǎn)速
//--------------------------------------------------------------------------------------------------
void calculate_Rr()
              {
               Rr=pulseB_count/6;
      }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: compensate_dR
// 入口參數(shù): Rr直流電機實際轉(zhuǎn)速
//            R需要得到的直流電機轉(zhuǎn)速
// 出口參數(shù): dR轉(zhuǎn)速補償
// 函數(shù)功能: 計算實際補償值和補償極性 ,根據(jù)不同的補償算法重新設(shè)計
//--------------------------------------------------------------------------------------------------
void compensate_Rr()
              {
              Rr=1;
              if(Rr>R)
      compensate_polarity=0;     //補償極性
     else
               compensate_polarity=1;
      }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: INT0_intrupt
// 函數(shù)功能: 外部中斷0處理程序
//--------------------------------------------------------------------------------------------------
void INT0_intrupt() interrupt 0 using 1
        {
  pulseB_count++;
        if(pulse_A==0)
          {  
          real_direction=1;  //若P1.2為低電平,則電機為正轉(zhuǎn),計數(shù)器N的值加1
          }
        else                //若為高電平,則電機為反轉(zhuǎn),計數(shù)器N值減l。
           {
            real_direction=1;
          }
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:IntTimer0
// 函數(shù)功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer0() interrupt 1
              {
     time0_count++;
              DR=direction;
     if(time0_count>=PWM_T)
              {
     time0_count=0;
     PWM_count++;
     setting_PWM();  //每輸出一個PWM波調(diào)用一次
     }
     if(time0_count<PWM_t)
     PWM=1;
     else
     PWM=0;
     }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:IntTimer1
// 函數(shù)功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer1() interrupt 3
              {
     time1_count++;
     if(time1_count==1)
              {
     INT0_init();           //初始化外部中斷設(shè)置
     }
     if(time1_count>=Ts)
     {
     time1_count=0;          //一個補償周期結(jié)束,計數(shù)器清零
     calculate_Rr();         //計算實際轉(zhuǎn)速
     compensate_Rr();        //計算實際補償值和補償極性
     calculate_PWM_t();      //重新計算脈寬
     }
     }
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:main
// 用戶主函數(shù)
// 函數(shù)功能:主函數(shù)
//--------------------------------------------------------------------------------------------------
void main()
     {
     direction=1;  //設(shè)定轉(zhuǎn)動方向
  R=540;        //設(shè)定轉(zhuǎn)速
  dR=0;         //轉(zhuǎn)速補償為零
  calculate_PWM_t();      //重新計算脈寬
  timer_init();
  }

Tags:keilc,直流電機控制  
責(zé)任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
一区二区三区精品视频| 中文字幕免费观看一区| 99国产精品99久久久久久| 国产美女一区二区| 东方aⅴ免费观看久久av| 成人午夜在线免费| 972aa.com艺术欧美| 日本韩国欧美一区| 欧美日韩小视频| 日韩欧美中文一区| 久久久国产午夜精品| 国产欧美精品一区aⅴ影院| 国产精品三级视频| 亚洲一二三四在线观看| 日韩电影一区二区三区四区| 九色综合国产一区二区三区| 国产成人啪免费观看软件| 99热在这里有精品免费| 欧美视频一区二区三区四区 | 另类欧美日韩国产在线| 麻豆成人在线观看| 麻豆91在线看| 成a人片国产精品| 欧美日韩国产小视频在线观看| 制服丝袜中文字幕一区| 久久青草欧美一区二区三区| 国产精品九色蝌蚪自拍| 五月综合激情日本mⅴ| 国产在线精品一区二区| 色噜噜狠狠成人网p站| 5月丁香婷婷综合| 国产日韩欧美制服另类| 亚洲国产精品影院| 成熟亚洲日本毛茸茸凸凹| 在线观看视频91| 精品久久久久久久久久久久久久久久久 | 老司机午夜精品99久久| 丰满岳乱妇一区二区三区| 欧美在线观看视频一区二区三区| 日韩一区二区免费电影| 国产精品福利在线播放| 欧美aaaaaa午夜精品| 成人av资源在线| 精品国产91九色蝌蚪| 亚洲欧美经典视频| 91黄视频在线| 国产亚洲欧美在线| 首页欧美精品中文字幕| 99r精品视频| 国产丝袜欧美中文另类| 视频一区欧美日韩| 91成人免费电影| 中文字幕不卡一区| 国产精品白丝av| 91精品国产综合久久久久久久久久| 亚洲天天做日日做天天谢日日欢| 精品一区二区三区视频| 日韩午夜三级在线| 日韩国产欧美在线播放| 欧美视频一区二区在线观看| 亚洲免费高清视频在线| 不卡的电影网站| 国产精品看片你懂得| 成人免费视频网站在线观看| 精品福利在线导航| 激情深爱一区二区| 精品奇米国产一区二区三区| 蜜桃久久av一区| 欧美精品高清视频| 午夜免费久久看| 88在线观看91蜜桃国自产| 午夜欧美视频在线观看| 欧美男男青年gay1069videost| 亚洲一区在线电影| 欧美区在线观看| 麻豆中文一区二区| 精品福利一二区| 成人免费黄色大片| 亚洲色欲色欲www在线观看| 91免费看`日韩一区二区| 亚洲欧美福利一区二区| 99精品久久只有精品| 亚洲乱码中文字幕| 欧美老女人在线| 日日摸夜夜添夜夜添亚洲女人| 欧美老女人第四色| 精品一二线国产| 国产精品系列在线| 欧美日韩精品专区| 精品午夜久久福利影院| 午夜精品影院在线观看| 91精品在线免费| 久久精品国产精品亚洲精品| 国产日韩欧美综合一区| 色先锋久久av资源部| 日韩电影网1区2区| 国产精品麻豆一区二区| 欧美亚洲综合另类| 国产一区二区不卡老阿姨| 亚洲欧美另类久久久精品| 欧美一级日韩不卡播放免费| 国产一区二区三区免费| 亚洲乱码日产精品bd| 精品精品欲导航| 91免费看片在线观看| 久久 天天综合| 亚洲男人电影天堂| 精品国产凹凸成av人导航| 色综合久久久久综合| 经典三级在线一区| 亚洲午夜精品17c| 国产日韩欧美麻豆| 欧美一区二区黄| 色999日韩国产欧美一区二区| 黑人精品欧美一区二区蜜桃| 一区二区三区四区在线播放| 国产日韩欧美一区二区三区综合| 欧美日韩一区小说| 成人午夜av在线| 极品销魂美女一区二区三区| 亚洲人成小说网站色在线| 久久综合一区二区| 欧美一级午夜免费电影| 精品视频免费看| av电影在线观看完整版一区二区| 久久爱www久久做| 三级在线观看一区二区| 亚洲一区二区三区在线看| 亚洲国产精品99久久久久久久久| 欧美一区二区三区在线| 欧美日韩综合不卡| 色婷婷综合久久久中文字幕| 丰满少妇在线播放bd日韩电影| 免费成人性网站| 亚洲成人av电影在线| 一级中文字幕一区二区| 亚洲色图色小说| 亚洲卡通动漫在线| 综合精品久久久| 国产精品电影院| 综合久久久久综合| 亚洲免费观看高清完整版在线观看 | 91毛片在线观看| 99视频超级精品| 99国内精品久久| 91一区在线观看| 日本韩国视频一区二区| 99热精品国产| 欧美在线观看18| 欧美人体做爰大胆视频| 欧美一区二区三区四区高清 | 色婷婷狠狠综合| av日韩在线网站| 91麻豆精品在线观看| 91国产丝袜在线播放| 欧美亚洲国产bt| 欧美一级欧美一级在线播放| 欧美xingq一区二区| 精品国产亚洲在线| 中文字幕国产一区| 亚洲精品久久久蜜桃| av不卡免费电影| 日本电影欧美片| 欧美精品在线观看一区二区| 日韩亚洲电影在线| 日本一二三不卡| 亚洲综合在线观看视频| 日韩精品欧美精品| 国产高清久久久| 色综合久久久久网| 91精品在线观看入口| 欧美国产一区视频在线观看| 亚洲精品欧美激情| 免费观看成人鲁鲁鲁鲁鲁视频| 床上的激情91.| 欧美日本国产一区| 国产欧美一区二区三区沐欲| 亚洲另类在线一区| 九一九一国产精品| 色欧美乱欧美15图片| 日韩欧美国产三级电影视频| 国产精品久久久久久久久晋中| 亚洲美女偷拍久久| 国内精品免费**视频| 91国内精品野花午夜精品| 欧美精品一区在线观看| 亚洲一区二区不卡免费| 成人性生交大片| 欧美一区二区三区系列电影| 中文字幕+乱码+中文字幕一区| 午夜免费久久看| 99国产精品国产精品毛片| 精品国产欧美一区二区| 亚洲一区二区三区精品在线| 国产精品亚洲第一| 67194成人在线观看| 亚洲精品国久久99热| 成人网页在线观看| 国产亚洲成av人在线观看导航| 亚洲一区免费视频|