<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 控制步進(jìn)電機正反轉(zhuǎn)的實際應(yīng)用程序

          控制步進(jìn)電機正反轉(zhuǎn)的實際應(yīng)用程序

          作者: 時間:2012-06-26 來源:網(wǎng)絡(luò) 收藏

          /*這是一個控制的實際*/
          /*選用的是三相驅(qū)動器,p14口線用做的脈沖控制*/
          /*p13口線用做步進(jìn)電機的方向控制。p15,p16,p17是光耦開關(guān)量輸入*/
          /*信號端,p20,p21,p22,p23與x25045看門狗存儲器相連*/
          /*k7,k8鍵是設(shè)定步進(jìn)電機轉(zhuǎn)動速度參數(shù)的加減鍵*/
          /*k9是啟動運行鍵,按一下k9,步進(jìn)電機開始運行,直到p17口線有信號輸入才停止*/
          /*k10是停止鍵,任何時候按下k10都將停止步進(jìn)電機當(dāng)前的運行*/
          /*k11是步進(jìn)運行鍵,按一下,步進(jìn)電機動一下*/
          /*k12鍵是反向運行鍵,按一下,步進(jìn)電機開始反向運行,知道p15口線有信號才停止*/
          /*如果p16口線有信號輸入,則只有k12鍵才起作用,其它鍵都沒反應(yīng)。*/
          START:do;
          $INCLUDE(REG51.DCL)
          DECLARE(addrl,n,I,j,ok,ds)byte;/*定義變量*/
          declarel(5)byte;
          declare(dat,data)byteat(30h);
          declaredelayword;
          DECLAREACO(11)BYTECONSTANT(05h,9fh,23h,0bh,99h,49h,/*定義LED段碼表*/
          41h,1fh,01h,09h,00h);
          declaresiliterally'p21',sckliterally'p20';/*X25045囗線定義*/
          declaresoliterally'p22',csliterally'p23';
          dog:procedure;/*初始化看門狗x25045*/
          cs=1;
          calltime(1);
          cs=0;
          calltime(1);
          cs=1;
          enddog;

          run:procedure;/*步進(jìn)電機運行脈沖輸出程序*/
          ifok=1then
          calldog;
          do;
          p14=0;
          calltime(1);
          p14=1;
          calltime(1);
          end;
          endrun;

          DISPLAY:PROCEDURE(L0,L10);/*顯示子程序*/
          DECLARE(L0,L10)BYTE;/*定義顯示二位*/
          n=L10;
          n=aco(n);/*十位數(shù)BCD碼譯成段碼*/
          sbuf=n;/*十位數(shù)送164顯示*/
          dowhileti=0;/*等待發(fā)送結(jié)束*/
          calldog;/*看門狗定時器復(fù)位*/
          end;
          n=L0;
          n=aco(n);
          sbuf=n;/*個位數(shù)送164顯示*/
          dowhileti=0;
          calldog;
          end;
          enddisplay;
          outbyt:procedure(da);/*向看門狗存儲器寫入一字節(jié)*/
          declare(i,da)byte;
          j=da;/*將要寫入的字節(jié)賦給臨時變量J*/
          doi=0to7;/*左移8位,送到口線si*/
          sck=0;
          j=scl(j,1);
          si=cy;
          sck=1;/*每移一位數(shù)據(jù),跟一個時鐘信號*/
          end;
          endoutbyt;

          inbyt:procedure;/*從看門狗存儲器讀出一字節(jié)*/
          declare(i,di)byte;
          j=0;
          doi=0to7;
          sck=1;
          sck=0;
          cy=so;
          j=scl(j,1);/*從看門狗存儲器讀出一字節(jié)送入臨時變量j*/
          end;
          dat=j;
          endinbyt;

          wrenable:procedure;/*置看門狗寫使能*/
          sck=0;
          cs=0;
          ;/*writeenablecommand*/
          calloutbyt(06h);/*x25045寫使能指令06h*/
          cs=1;
          sck=0;
          endwrenable;

          wrdisable:procedure;/*置看門狗寫禁止*/
          sck=0;
          cs=0;
          ;/*writedisablecommand*/
          calloutbyt(04h);
          sck=0;
          cs=1;
          endwrdisable;

          wrregister:procedure;/*寫狀態(tài)寄存器*/
          sck=0;
          cs=0;
          dat=01h;/*writeregistercommand*/
          calloutbyt(dat);
          ;/*00h--1.4S,20h--200MS,10h--600MS,30h--disableWdog*/
          calloutbyt(00h);/*設(shè)定看門狗定時時間*/
          ;
          sck=0;
          cs=1;
          calltime(200);/*waittocompletewrittingcycle*/
          endwrregister;

          rdregister:procedure;/*讀看門狗狀態(tài)寄存器*/
          sck=0;
          cs=0;
          ;/*registerreadcommand*/
          calloutbyt(05h);
          callinbyt;/*statusregisterreadinDAT>*/
          sck=0;
          cs=1;
          endrdregister;

          wbyte:procedure;/*看門狗存儲器字節(jié)寫入子程序*/
          declarecommbyte;
          sck=0;
          cs=0;
          comm=02h;/*寫指令02h*/
          calloutbyt(comm);
          calloutbyt(addrl);
          calloutbyt(dat);/*sendonebytedatatoX25043*/
          cs=1;
          sck=0;
          calltime(150);
          endwbyte;

          rbyte:procedure;/*看門狗存儲器字節(jié)讀出子程序*/
          declarecommbyte;
          sck=0;
          cs=0;
          comm=03h;/*readcommand*/
          calloutbyt(comm);
          calloutbyt(addrl);
          callinbyt;/*readonebytetoDAT>*/
          sck=0;
          cs=1;
          endrbyte;

          incdata:procedure;/*參數(shù)修改--"加"鍵處理子程序+*/
          ifp10=0then/*如果K7鍵按下*/
          do;
          dowhilep10=0;/*等待鍵松開有效*/
          calldog;/*此處必需調(diào)用看門狗復(fù)位子程序("喂狗"),否則程序?qū)⒈豢撮T狗復(fù)位*/
          end;
          data=data+1;/*設(shè)定值+1*/
          ifdata>99thendata=1;/*規(guī)定設(shè)定值的上限*/
          L(1)=dataMOD10;/*將設(shè)定值的十位數(shù)拆出來送給十位數(shù)顯示變量L(1)*/
          L(2)=data/10;/*將設(shè)定值的個位數(shù)拆出來送給個位數(shù)顯示變量L(2)*/
          calldisplay(L(1),L(2));/*將改變后的設(shè)定值送164顯示出來*/
          calltime(200);/*延時*/

          光耦相關(guān)文章:光耦原理


          存儲器相關(guān)文章:存儲器原理


          脈沖點火器相關(guān)文章:脈沖點火器原理

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();