婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> EDA開發應用 >> Keilc >> 正文

直流電機控制Keil c51源代碼

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-3-3

直流電機的開環控制Keil c51源代碼

//-----------------------函數聲明,變量定義--------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
#include<ABSACC.H>  
//-----------------------定義管腳--------------------------------------------------------
sbit PWM=P1^0;             //PWM波形輸出
sbit DR=P1^1;              //方向控制
#define  timer_data  (256-100) //定時器預置值,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周期計數
unsigned char time_count;  //定時計數
bit direction;             //方向標志為
//--------------------------------------------------------------------------------------------------
// 函數名稱:timer_init
// 函數功能:初始化設施定時器
//--------------------------------------------------------------------------------------------------
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;            //開始計數
      EA=1;             //中斷允許
   }
//--------------------------------------------------------------------------------------------------
// 函數名稱:setting_PWM
// 函數功能:設置PWM的脈沖寬度和設定方向
//--------------------------------------------------------------------------------------------------
void setting_PWM()
      {
   if(PWM_count==0)  //初始設置
   {
   PWM_t=20;
   direction=1;
   }
   }
//--------------------------------------------------------------------------------------------------
// 函數名稱:IntTimer0
// 函數功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer0() interrupt 1
              {
     time_count++;
              DR=direction;
     if(time_count>=PWM_T)
              {
     time_count=0;
     PWM_count++;
     setting_PWM();  //每輸出一個PWM波調用一次
     }
     if(time_count<PWM_t)
     PWM=1;
     else
     PWM=0;
     }
//--------------------------------------------------------------------------------------------------
// 函數名稱:main
// 用戶主函數
// 函數功能:主函數
//--------------------------------------------------------------------------------------------------
void main()
     {
  timer_init();
  setting_PWM();
  }


直流電機閉環控制Keil c51源代碼

//-----------------------函數聲明,變量定義--------------------------------------------------------
#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;                    //方向控制
//-----------------------預定義值--------------------------------------------------------
#define PWM_T 1800              //定義PWM的周期T為18ms
#define Ts    1000              //定義光電編碼器采樣時間為10ms
#define  timer_data  (256-10) //定時器預置值,12M時鐘是,定時0.01ms
//-----------------------預設定值--------------------------------------------------------
bit direction;                  //方向標志位               用戶設定
unsigned char R;                //需要得到的直流電機轉速   用戶設定
//-----------------------實際運行狀態--------------------------------------------------------
bit real_direction;             //電機實際運行方向  
unsigned char Rr;               //直流電機實際轉速
//-----------------------計算所得補償狀態------------------------------------------
bit    compensate_polarity;     //補償極性
unsigned char dR;               //轉速補償
//-----------------------經補償后得到的脈寬------------------------------------------
unsigned char PWM_t;            //PWM_t為脈沖寬度(320~400)時間為3.2~4.0ms
unsigned char PWM_count;        //輸出PWM周期計數
//-----------------------各中間計數值------------------------------------------
unsigned char pulseB_count;     //脈沖計數
unsigned char time0_count;      //定時計數
unsigned char time1_count;      //定時計數
//--------------------------------------------------------------------------------------------------
// 函數名稱:timer_init
// 函數功能:初始化設置定時器
//--------------------------------------------------------------------------------------------------
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開始計數
   ET1=1;            //定時器1中斷允許
   TR1=1;            //定時器1開始計數
      EA=1;             //中斷允許
   }
//--------------------------------------------------------------------------------------------------
// 函數名稱: INT0_init()
// 函數功能: 初始化設置
//            設定INT0的工作方式
//--------------------------------------------------------------------------------------------------
void INT0_init(void ) 
             {
    pulseB_count=0;        //脈沖計數器清零
              IT0=1;     //選擇INT0為沿觸發方式
              EX0=1;     //外部中斷允許
              EA=1;      //系統中斷允許
              }
//--------------------------------------------------------------------------------------------------
// 函數名稱:setting_PWM
// 函數功能:設置PWM的脈沖寬度和設定方向
//--------------------------------------------------------------------------------------------------
void setting_PWM()
      {
 // direction=1;  //設定轉動方向
 // R=540;        //設定轉速
 // dR=0;         //轉速補償為零
 // calculate_PWM_t();      //重新計算脈寬
   }
//--------------------------------------------------------------------------------------------------
// 函數名稱: calculate_PWM_t
// 入口參數: R需要得到的直流電機轉速,dR轉速補償
// 出口參數: PWM_t為脈沖寬度(320~400)時間為3.2~4.0ms
// 函數功能: 計算脈沖寬度,PWM_t=R/150;
//--------------------------------------------------------------------------------------------------
void calculate_PWM_t()
              {
      if(compensate_polarity==1) //正補償
               PWM_t=(R+dR)/150;
      else
       PWM_t=(R-dR)/150;        //負修正
      }
//--------------------------------------------------------------------------------------------------
// 函數名稱: calculate_Rr
// 入口參數: pulseB_count脈沖計數
// 出口參數: Rr直流電機實際轉速
// 函數功能: 計算實際轉速
//--------------------------------------------------------------------------------------------------
void calculate_Rr()
              {
               Rr=pulseB_count/6;
      }
//--------------------------------------------------------------------------------------------------
// 函數名稱: compensate_dR
// 入口參數: Rr直流電機實際轉速
//            R需要得到的直流電機轉速
// 出口參數: dR轉速補償
// 函數功能: 計算實際補償值和補償極性 ,根據不同的補償算法重新設計
//--------------------------------------------------------------------------------------------------
void compensate_Rr()
              {
              Rr=1;
              if(Rr>R)
      compensate_polarity=0;     //補償極性
     else
               compensate_polarity=1;
      }
//--------------------------------------------------------------------------------------------------
// 函數名稱: INT0_intrupt
// 函數功能: 外部中斷0處理程序
//--------------------------------------------------------------------------------------------------
void INT0_intrupt() interrupt 0 using 1
        {
  pulseB_count++;
        if(pulse_A==0)
          {  
          real_direction=1;  //若P1.2為低電平,則電機為正轉,計數器N的值加1
          }
        else                //若為高電平,則電機為反轉,計數器N值減l。
           {
            real_direction=1;
          }
}
//--------------------------------------------------------------------------------------------------
// 函數名稱:IntTimer0
// 函數功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer0() interrupt 1
              {
     time0_count++;
              DR=direction;
     if(time0_count>=PWM_T)
              {
     time0_count=0;
     PWM_count++;
     setting_PWM();  //每輸出一個PWM波調用一次
     }
     if(time0_count<PWM_t)
     PWM=1;
     else
     PWM=0;
     }
//--------------------------------------------------------------------------------------------------
// 函數名稱:IntTimer1
// 函數功能:定時器中斷處理程序
//--------------------------------------------------------------------------------------------------
void IntTimer1() interrupt 3
              {
     time1_count++;
     if(time1_count==1)
              {
     INT0_init();           //初始化外部中斷設置
     }
     if(time1_count>=Ts)
     {
     time1_count=0;          //一個補償周期結束,計數器清零
     calculate_Rr();         //計算實際轉速
     compensate_Rr();        //計算實際補償值和補償極性
     calculate_PWM_t();      //重新計算脈寬
     }
     }
//--------------------------------------------------------------------------------------------------
// 函數名稱:main
// 用戶主函數
// 函數功能:主函數
//--------------------------------------------------------------------------------------------------
void main()
     {
     direction=1;  //設定轉動方向
  R=540;        //設定轉速
  dR=0;         //轉速補償為零
  calculate_PWM_t();      //重新計算脈寬
  timer_init();
  }

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

還可以輸入 200 個字
[ 查看全部 ] 網友評論
推薦文章
最新推薦
熱門文章
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 在线免费观看av网| 精品视频在线观看一区| 日本三级中文字幕在线观看| 成 年 人 黄 色 大 片大 全| 91制片厂毛片| 人妻激情另类乱人伦人妻| 国产xxxxx视频| 日本阿v视频在线观看| 一级黄色特级片| 亚洲乱码中文字幕久久孕妇黑人| 国产美女视频免费| 九九视频精品在线观看| 免费拍拍拍网站| 欧美大片免费播放| 色免费在线视频| 久草在在线视频| 国产白丝袜美女久久久久| 国产美女视频免费| 涩涩网站在线看| 男人搞女人网站| 国内外成人激情视频| 日本aa在线观看| 免费观看中文字幕| 中文字幕亚洲影院| 91高清国产视频| 亚洲最大综合网| 丰满少妇在线观看| 91看片就是不一样| 国产精品久久久久9999小说| 欧美精品99久久| 无罩大乳的熟妇正在播放| 草b视频在线观看| 欧美乱大交xxxxx潮喷l头像| 成年丰满熟妇午夜免费视频| 热久久最新网址| 97av中文字幕| 国产真人做爰毛片视频直播| 欧美日韩精品在线一区二区| 国产91在线视频观看| 欧美 国产 综合| 国产一线二线三线在线观看| 一区二区三区免费播放| www.国产视频.com| 日本免费在线视频观看| 中文字幕の友人北条麻妃| 日本五级黄色片| 激情六月丁香婷婷| 99热手机在线| 99视频在线观看视频| 麻豆md0077饥渴少妇| 久久久国内精品| aaa毛片在线观看| 日韩肉感妇bbwbbwbbw| 欧美国产在线一区| 777av视频| 青青草精品视频在线观看| www.污网站| 人妻熟妇乱又伦精品视频| 久久久久免费精品| 亚洲成人动漫在线| 欧美日韩黄色一级片| 中文字幕线观看| 国产不卡一区二区视频| 一区二区三区入口| 老子影院午夜伦不卡大全| 一本久道中文无码字幕av| 国产日本欧美在线| 任你操这里只有精品| 永久免费在线看片视频| aaaaaa亚洲| 国内少妇毛片视频| 国产精品嫩草影院8vv8| 男人日女人下面视频| av电影一区二区三区| 国产精品69页| 国产免费黄色小视频| 特级黄色片视频| 成人免费视频久久| 免费一级特黄毛片| 在线播放 亚洲| 少妇一级淫免费放| 黄在线观看网站| 欧美三级在线观看视频| 日本一二三四区视频| 一起操在线视频| 无码日韩人妻精品久久蜜桃| 黄色片网址在线观看| 黄色a级片免费看| 8x8x华人在线| 女女百合国产免费网站| 日本高清一区二区视频| 免费看污黄网站| 天天色综合社区| 好吊妞无缓冲视频观看| 一本色道无码道dvd在线观看| 91视频 -- 69xx| 污视频在线观看免费网站| 日本精品久久久久中文字幕| 国产av人人夜夜澡人人爽麻豆| 狠狠操狠狠干视频| 久久这里只精品| 日日碰狠狠丁香久燥| 欧美在线一区视频| 日本人妻伦在线中文字幕| 一级黄色片在线免费观看| 精品视频无码一区二区三区| 亚洲国产精品毛片av不卡在线| 免费一级特黄毛片| 狠狠精品干练久久久无码中文字幕| 99国产精品久久久久久| 国产成人手机视频| 免费国产黄色网址| 小说区视频区图片区| 日本a级片在线观看| 亚洲小视频在线播放| 中文字幕国产高清| 欧美激情国内自拍| 欧洲美女亚洲激情| 欧美激情第一区| 国内国产精品天干天干| 日本超碰在线观看| 亚洲精品在线网址| 亚洲高清av一区二区三区| 91视频福利网| 300部国产真实乱| 999久久欧美人妻一区二区| 国产成人一二三区| 国产天堂视频在线观看| 奇米777四色影视在线看| 91精品国产毛片武则天| 日韩国产一级片| 免费看污污网站| 久久精品久久99| 欧美中日韩在线| 亚洲中文字幕久久精品无码喷水| 青青草av网站| 日韩av影视大全| 久草在在线视频| 亚洲精品乱码久久久久久动漫| 日本一区二区三区四区五区六区| 国产精品igao激情视频| 国产综合av在线| 天天干天天色天天干| 91猫先生在线| 性欧美在线视频| 老太脱裤子让老头玩xxxxx| 粗暴91大变态调教| 国产又粗又硬又长| 久久99久久久久久| 99中文字幕在线| 国产免费黄色av| 欧美日韩在线免费观看视频| 日本一道本久久| 青娱乐精品在线| 久国产精品视频| 国产精品宾馆在线精品酒店| 国产黑丝在线视频| 午夜精品久久久内射近拍高清| 岛国av免费在线| 欧美成人三级在线视频| 97超碰国产精品| 超碰中文字幕在线观看| 成年人在线看片| 水蜜桃色314在线观看| 国产91对白刺激露脸在线观看| 老司机激情视频| 波多野结衣在线免费观看| caopor在线视频| 黄色网页免费在线观看| 欧美 日韩 国产精品| 黄色小视频免费网站| 成人观看免费完整观看| 大陆av在线播放| av在线免费观看国产| 大桥未久一区二区三区| 黄色小视频大全| 久久久无码中文字幕久...| 色婷婷综合网站| 日本黄大片一区二区三区| 黄色动漫在线免费看| 三年中文高清在线观看第6集 | 97在线播放视频| 黄色大片在线免费看| 丰满的少妇愉情hd高清果冻传媒 | 亚洲综合色在线观看| 欧美日韩在线不卡视频| 亚洲国产精品久久久久爰色欲| 国产av麻豆mag剧集| 免费男同深夜夜行网站| 国产裸体舞一区二区三区| 黄色片视频在线免费观看| 国产96在线 | 亚洲| 无码粉嫩虎白一线天在线观看| 欧美成人三级在线视频| 高清欧美精品xxxxx| 97在线国产视频| 久久综合久久色| 精品久久久噜噜噜噜久久图片| 在线视频日韩欧美| 经典三级在线视频|