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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請大家幫我分析一下該單片機控制步進電機驅動器的程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:4574 發表于 2008-10-3 11:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我做了一個單片機控制步進電機驅動器的電路板,開始它的脈沖輸出控制PUL端使用計時器控制輸出,但是,有的時候會輸出脈沖不一樣,有時剛好等于那個數,有時卻少了(沒有多的時候),仔細觀察計時器的時間常數,有時會不一樣,所以請大家來一起分析一下,為何會這樣?
下面我給出部分相關程序:

//******主程序內工作子程序:

void work_Auto (void)
{
 if (QD_flag)   //啟動按鈕標志為1時,表示按了啟動按鈕 
 {


do         //先執行一次,再測是否為自動運行,自動運行,則繼續,不繼續則停機
 {
  ENA=0;    //步進電機驅動器允許運行

  DIR=0;    //正轉
  maichong=0;   //脈沖量清零

  TH0=-7000/256;   //裝啟動時間常數
  TL0=-7000%6 ;

  PUL=0;
  ET0=1;    //允許計時器T0中斷
  TR0=1;    //啟動計時器T0,讓PUL端輸出脈沖
  

  while (maichong <= jiaodujishuan )  ;        //等待轉動角度達到設定值  為總共角度除以每步角度
 
  ET0=1;    //允許計時器T0中斷
    TR0=0;
  delay(1);

  DIR=1;    //設定反轉

  maichong=0;   //脈沖量清零
  TH0=-7000/256;   //裝啟動時間常數
  TL0=-7000%6 ;
  PUL=0;

  TR0=1;    //重新啟動,但為反轉
  while  (maichong <= jiaodujishuan );   //等待反轉到設定值
  
  TR0=0;            //停轉
  DIR=0;
   ENA=1;            //關閉步進電機驅動
 maichong=0; 
  _nop_();
  _nop_();

  delay ( 100*zhanting );   //延時設定暫停時間,單位為0.1S

  _nop_();
  _nop_();
  QD_flag=0;

        }
  while (Auto_flag);    //檢測是否為自動模式,自動模式則繼續運行,半自動則跳出再去檢查是否有啟動按鍵 按下

     }


     }
 

//*****************計時器中斷子程序:

 

void zd0(void ) interrupt 1
{
             //此中斷程序用輸出脈沖給步進電機驅動板速度控制端

  _nop_();
  _nop_();
  if ((maichong<10) || (maichong >(jiaodujishuan-20)))
  {
 TH0=-7000/256;
 TL0=-7000/256;
          }
     else
{
 TH0=-T/256;
 TL0=-T/256;
       }
 maichong++;  //脈沖量計數加1   

 PUL=!PUL;  //脈沖輸出反相

     }

 

 敬請大家分析!

[此貼子已經被admin于2008-10-4 1:34:58編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:475888 發表于 2019-2-28 14:24 | 只看該作者
你好,能分享這個程序給新萌的我嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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