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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機控制步進電機系統(tǒng)

          單片機控制步進電機系統(tǒng)

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          學習了單片機在的基本輸入輸出和在數(shù)據(jù)采集領(lǐng)域的應(yīng)用,接著學習了單片機在控制領(lǐng)域的應(yīng)用。在控制系統(tǒng)中,通常要控制機械部件的平移和轉(zhuǎn)動,這些機械部件的驅(qū)動大都采用交流電機、直流電機和步進電機等,其中步進電機最適合與數(shù)字控制。因此在了解單片機在控制系統(tǒng)中的應(yīng)用時,首先了解了單片機控制步進電機的設(shè)計。

          本文引用地址:http://www.ex-cimer.com/article/201611/315965.htm

          主要器件:

          1、AT89C52單片機芯片,用與接受鍵盤輸入和控制步進電機。

          2、4相步進電機驅(qū)動芯片STK672-040,內(nèi)含有硬件脈沖分配電路和功率驅(qū)動動能。

          3、4×4行列式鍵盤。

          試驗流程圖:



          試驗電路圖:

          試驗程序代碼:
          //Stepper.h程序

          #ifndef_STEPPER_H//防止Stepper.h被重復(fù)引用

          #define_STEPPER_H

          #include

          #define uchar unsigned char

          #define uint unsigned int

          #define T 10000// 10ms定時常量宏定義

          sbit M1=P2^0;

          sbit M2=P2^1;

          sbit M4=P2^2;

          sbit M5=P2^3;

          sbit EN=P2^4;

          sbit CWB=P2^5;

          sbit RET=P2^6;

          sbit CLK=P2^7;

          #endif

          //Stepper.c程序

          #include "Stepper.h"

          /*定時器0服務(wù)子程序*/

          void time0() interrupt 1 using 1//用定時器0中斷來產(chǎn)生CLK時鐘

          {

          /*定時10ms,產(chǎn)生20ms周期的時鐘,也就是50Hz的時鐘*/

          TH0 = -T/256;

          TL0 = -T%256;

          CLK = ~CLK;

          }

          /*鍵消抖延時函數(shù)*/

          void delay(void)

          {

          uchar i;

          for (i=300;i>0;i--);

          }

          /*鍵掃描函數(shù)*/

          uchar keyscan(void)

          {

          uchar scancode,tmpcode;

          P1 = 0xf0;//發(fā)全0行掃描碼

          if ((P1&0xf0)!=0xf0)//若有鍵按下

          {

          delay();//延時去抖動

          if ((P1&0xf0)!=0xf0)//延時后再判斷一次,去除抖動影響

          {

          scancode = 0xfe;

          while((scancode&0x10)!=0)//逐行掃描

          {

          P1 = scancode;//輸出行掃描碼

          if ((P1&0xf0)!=0xf0)//本行有鍵按下

          {

          tmpcode = (P1&0xf0)|0x0f;

          /*返回特征字節(jié)碼,為1的位即對應(yīng)于行和列*/

          return((~scancode)+(~tmpcode));

          }

          else scancode = (scancode<<1)|0x01;//行掃描碼左移一位

          }

          }

          }

          return(0);//無鍵按下,返回值為0

          }

          /*主程序*/

          void main()

          {

          uchar key;

          TMOD = 0x01;//設(shè)置定時器0工作模式

          EA = 1;

          ET0 = 1;

          /*設(shè)置為2相激勵*/

          M1 = 0;

          M2 = 0;

          /*設(shè)置為環(huán)形轉(zhuǎn)向軌跡*/

          M4 = 1;

          M5 = 1;

          EN = 0;//切斷驅(qū)動輸出

          RET = 0;//歸位輸入無效

          CWB = 1;//初始設(shè)置為順時針方向

          while(1)

          {

          key = keyscan();//調(diào)用鍵盤掃描函數(shù)

          switch(key)

          {

          case 0x11:// 0行0列,啟動鍵

          EN = 1;//打開驅(qū)動輸出

          TH0 = -T/256;//改變T可以改變步進電機轉(zhuǎn)動速度

          TL0 = -T%256;

          TR0 = 1;//定時器0開始計數(shù)

          break;

          case 0x21:// 0行1列,停止鍵

          TR0 = 0;//定時器0停止計數(shù)

          EN = 0;//切斷驅(qū)動輸出

          break;

          case 0x41:// 0行2列,切換轉(zhuǎn)向按鍵

          CWB = ~CWB;

          break;

          case 0x81:// 0行3列,歸位鍵

          RET = 1;

          delay();

          RET = 0;

          break;

          default:break;

          }

          }

          }



          關(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); })();