找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2960|回復(fù): 8
收起左側(cè)

如何用51單片機控制步進電機,各位大佬,求完整正確的程序

[復(fù)制鏈接]
ID:267591 發(fā)表于 2017-12-27 11:21 | 顯示全部樓層 |閱讀模式
如何用51單片機控制步進電機,各位大佬,求完整正確的程序
回復(fù)

使用道具 舉報

ID:84283 發(fā)表于 2017-12-27 13:04 | 顯示全部樓層
#include <reg51.h>       //51芯片管腳定義頭文件
#include <intrins.h>//內(nèi)部包含延時函數(shù) _nop_();

#define uchar unsigned char
#define uint  unsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

/********************************************************/
/*                                                  
/* 延時t毫秒
/* 11.0592MHz時鐘,延時約1ms                                    
/*                                                      
/********************************************************/
void delay(uint t)
{                           
   uint k;
   while(t--)
   {
     for(k=0; k<125; k++)
     { }
   }
}
/********************************************************/
/*
/*步進電機正轉(zhuǎn)
/*
/********************************************************/
void  motor_ffw(uint n)
{
   uchar i;
   uint  j;
   for (j=0; j<12*n; j++)    //轉(zhuǎn)1×n圈
    {
      for (i=0; i<8; i++)     //一個周期轉(zhuǎn)30度
        {
          P1 = FFW[i];          //取數(shù)據(jù)
          delay(15);             //調(diào)節(jié)轉(zhuǎn)速
        }
    }
}
/********************************************************/
/*
/*步進電機反轉(zhuǎn)
/*
/********************************************************/
void  motor_rev(uint n)
{
     uchar i;
uint  j;
for (j=0; j<12*n; j++)    //轉(zhuǎn)1×n圈
      {
        for (i=0; i<8; i++)     //一個周期轉(zhuǎn)30度
        {
          P1 = REV[i];          //取數(shù)據(jù)
          delay(15);             //調(diào)節(jié)轉(zhuǎn)速
        }
      }
}
/********************************************************
*                                                      
*  主程序                                               
*                                                      
*********************************************************/

main()
{   
   while(1)                     
    {  
       motor_ffw(5);          //電機正轉(zhuǎn)
       delay(5000);           //換向延時
       //motor_rev(5);          //電機反轉(zhuǎn)
       //delay(1000);           //換向延時
    }
}

/********************************************************/

自己改吧, 這是正反轉(zhuǎn)5S
回復(fù)

使用道具 舉報

ID:267208 發(fā)表于 2017-12-27 14:12 | 顯示全部樓層
這是帶著作業(yè)本過來的嗎
回復(fù)

使用道具 舉報

ID:267713 發(fā)表于 2017-12-27 14:36 | 顯示全部樓層
這個應(yīng)該有pcb圖吧,估計配合一起使用
回復(fù)

使用道具 舉報

ID:78322 發(fā)表于 2017-12-27 14:52 | 顯示全部樓層
安裝個PROTUES,里面有例程。
回復(fù)

使用道具 舉報

ID:267701 發(fā)表于 2017-12-27 15:56 | 顯示全部樓層
#include <reg51.h>       //51芯片管腳定義頭文件 #include <intrins.h>//內(nèi)部包含延時函數(shù) _nop_();  #define uchar unsigned char #define uint  unsigned int  uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};  /********************************************************/ /*                                                   /* 延時t毫秒  /* 11.0592MHz時鐘,延時約1ms                                      /*                                                       /********************************************************/ void delay(uint t) {                               uint k;    while(t--)    {      for(k=0; k<125; k++)      { }    } } /********************************************************/ /* /*步進電機正轉(zhuǎn) /* /********************************************************/ void  motor_ffw(uint n) {     uchar i;    uint  j;    for (j=0; j<12*n; j++)    //轉(zhuǎn)1×n圈     {       for (i=0; i<8; i++)     //一個周期轉(zhuǎn)30度         {           P1 = FFW[i];          //取數(shù)據(jù)           delay(15);             //調(diào)節(jié)轉(zhuǎn)速         }     } } /********************************************************/ /* /*步進電機反轉(zhuǎn) /* /********************************************************/ void  motor_rev(uint n) {      uchar i; uint  j; for (j=0; j<12*n; j++)    //轉(zhuǎn)1×n圈       {         for (i=0; i<8; i++)     //一個周期轉(zhuǎn)30度         {           P1 = REV[i];          //取數(shù)據(jù)           delay(15);             //調(diào)節(jié)轉(zhuǎn)速         }       } } /******************************************************** *                                                        *  主程序                                                *                                                       *********************************************************/  main() {       while(1)                          {          motor_ffw(5);          //電機正轉(zhuǎn)        delay(5000);           //換向延時        //motor_rev(5);          //電機反轉(zhuǎn)        //delay(1000);           //換向延時     } }  /********************************************************/  自己改吧, 這是正反轉(zhuǎn)5S
回復(fù)

使用道具 舉報

ID:267701 發(fā)表于 2017-12-27 15:58 | 顯示全部樓層
你可以看一下你配套光盤中,單片機教程—配套程序
回復(fù)

使用道具 舉報

ID:493642 發(fā)表于 2019-4-3 10:16 | 顯示全部樓層
qq1105424012 發(fā)表于 2017-12-27 13:04
#include        //51芯片管腳定義頭文件
#include //內(nèi)部包含延時函數(shù) _nop_();

請問一下該怎么連線呢
回復(fù)

使用道具 舉報

ID:504144 發(fā)表于 2019-4-3 15:49 | 顯示全部樓層
去某寶搜索L298N電機驅(qū)動模塊,下載程序就可以了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表