久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9148|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

a4988驅(qū)動二相四線電機(jī),用51怎么控制step和dir來使電機(jī)運(yùn)動

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:94832 發(fā)表于 2015-11-6 00:13 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
rt,求各位幫一下,最近在用51做雕刻機(jī)。。沒想到一上來就被a4988給弄的。。。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:231918 發(fā)表于 2017-10-11 21:05 | 只看該作者
居然就是個沒有后續(xù)節(jié)目的帖子
回復(fù)

使用道具 舉報(bào)

板凳
ID:229992 發(fā)表于 2018-1-22 10:06 | 只看該作者
/***************************************************************
* 實(shí) 驗(yàn) 名 :步進(jìn)電機(jī)實(shí)驗(yàn)
* 實(shí)驗(yàn)說明 :電機(jī)啟動、停止、正轉(zhuǎn)、反轉(zhuǎn)
* 實(shí)驗(yàn)平臺 :51單片機(jī)開發(fā)板
* 連接方式 :pulse接P10  DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
* 注    意 :本例程使用了中斷定時器,中斷介紹會在下一實(shí)驗(yàn)中說明
****************************************************************************/

#include <reg52.h>
#include <intrins.h>

#define FOSC 11059200L //晶振設(shè)置,默認(rèn)使用11.0592M Hz
//#define FOSC 12000000L //晶振設(shè)置,使用12M Hz
//#define FOSC 24000000L //晶振設(shè)置,使用24M Hz

#define TIME_MS 1 //設(shè)定定時時間 ms ,在11.0592M晶振下,不易超過60ms





//IO接口定義
sbit pulse = P1^0;//脈沖信號
sbit Dir   = P1^1; //正反轉(zhuǎn)

sbit EN    = P1^2;
sbit MS1   = P1^3;
sbit MS2   = P1^4;
sbit MS3   = P1^5;



sbit KEY1 = P2^0;  //啟動
sbit KEY2 = P2^1;  //停止
sbit KEY3 = P2^2;  //正轉(zhuǎn)
sbit KEY4 = P2^3;  //反轉(zhuǎn)


//全局變量定義
unsigned char count=0;

/*******************************************************************************
* 函 數(shù) 名 :Delayms
* 函數(shù)功能 :實(shí)現(xiàn) ms級的延時
* 輸    入 :ms
* 輸    出 :無
*******************************************************************************/
void Delayms(unsigned int ms)
{
        unsigned int i,j;
        for(i=0;i<ms;i++)
        #if FOSC == 11059200L
                for(j=0;j<114;j++);
        #elif FOSC == 12000000L
          for(j=0;j<123;j++);
        #elif FOSC == 24000000L
                for(j=0;j<249;j++);
        #else
                for(j=0;j<114;j++);
        #endif
}

/*******************************************************************************
* 函 數(shù) 名 :Timer0Init
* 函數(shù)功能 :定時器0初始化
* 輸    入 :無
* 輸    出 :無
*******************************************************************************/
void Timer0Init()
{
        TMOD=0x01; //設(shè)置定時器0工作方式為1
        TH0=(65536-FOSC/12/1000*TIME_MS)/256;
        TL0=(65536-FOSC/12/1000*TIME_MS)%256;
        ET0=1; //開啟定時器0中斷
//        TR0=1;        //開啟定時器       
        EA=1;  //打開總中斷
}


/*******************************************************************************
* 函 數(shù) 名 :main
* 函數(shù)功能 :主函數(shù)
* 輸    入 :無
* 輸    出 :無
*******************************************************************************/
void main()
{
        Timer0Init();
        EN=0;
        MS1=0;
        MS2=0;
        MS3=0;
        while(1)
        {
  if(KEY1==0)  //判斷是否按下鍵盤
        {
                Delayms(10); //延時,軟件去干擾
                if(KEY1==0)   //確認(rèn)按鍵按下
                {
      TR0=1;
                }
                while(KEY1==0);//按鍵鎖定,每按一次count只加1.
        }
        if(KEY2==0)  //判斷是否按下鍵盤
        {
                Delayms(10); //延時,軟件去干擾
                if(KEY2==0)   //確認(rèn)按鍵按下
                {
      TR0=0;
                }
                while(KEY2==0);//按鍵鎖定,每按一次count只加1.
        }       
       
        if(KEY3==0)  //判斷是否按下鍵盤
        {
                Delayms(10); //延時,軟件去干擾
                if(KEY3==0)   //確認(rèn)按鍵按下
                {
      Dir=0;
                }
                while(KEY3==0);//按鍵鎖定,每按一次count只加1.
        }       
       
                if(KEY4==0)  //判斷是否按下鍵盤
        {
                Delayms(10); //延時,軟件去干擾
                if(KEY4==0)   //確認(rèn)按鍵按下
                {
      Dir=1;
                }
                while(KEY4==0);//按鍵鎖定,每按一次count只加1.
        }       
       
       
        }
}

/*******************************************************************************
* 函 數(shù) 名 :Timer0Int
* 函數(shù)功能 :定時器0中斷函數(shù) , 每隔TIME_MS ms進(jìn)入
* 輸    入 :無
* 輸    出 :無
*******************************************************************************/
void Timer0Int() interrupt 1
{
        TH0=(65536-FOSC/12/1000*TIME_MS)/256;
        TL0=(65536-FOSC/12/1000*TIME_MS)%256;
        count++;
        if(count == 2)//1s
        {
                pulse = !pulse;//LED燈閃爍
                count = 0;
        }
}

回復(fù)

使用道具 舉報(bào)

地板
ID:229992 發(fā)表于 2018-1-22 10:07 | 只看該作者
這個是一個大神的測試程序,你可以參照一下
回復(fù)

使用道具 舉報(bào)

5#
ID:321799 發(fā)表于 2018-5-10 11:22 | 只看該作者
你行你叫滿昊啊 發(fā)表于 2018-1-22 10:06
/***************************************************************
* 實(shí) 驗(yàn) 名 :步進(jìn)電機(jī)實(shí)驗(yàn)
* 實(shí)驗(yàn) ...

你好,你有電路圖嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:469480 發(fā)表于 2019-1-17 08:55 | 只看該作者
百度找的
/*-----------------------------------------------  
  名稱:步進(jìn)電機(jī)  
------------------------------------------------*/   
   
#include <reg52.h>   
   
sbit step=P1^0;        //步進(jìn)脈沖,一個正脈沖就轉(zhuǎn)一個步距角   
sbit dir=P1^1;        //1為正轉(zhuǎn),0為反轉(zhuǎn)。   
sbit sleep=P1^2;   
sbit res=P1^3;   
unsigned char sum=0;   
   
/********************毫秒延時函數(shù)***************************/   
void Delay(unsigned int xms)   
{   
    unsigned int i,j;   
    for(i=xms;i>0;i--)   
        for(j=110;j>0;j--);   
}   
   
void ISR_Key(void) interrupt 2  //外部中斷1   
{   
  Delay(20);   
  sum++;   
  if(sum==1)   
  {   
    dir=~dir;   
   }   
  if(sum==1) sum=0;   
   
}   
/******************************************************************/   
/*                   主函數(shù)                                       */   
/******************************************************************/   
main()   
{   
   
  dir=1;         //正轉(zhuǎn)   
  sleep=1;       //休眠無效   
  res=1;         //復(fù)位無效   
  step=1;           
   
  EX1=1;         //外部中斷1開   
  IT1=1;         //邊沿觸發(fā)   
  EA=1;          //全局中斷開   
   
while(1)               
{   
     step=~step;     //輸出脈沖   
     Delay(2);       //需要延時,不延時電機(jī)不動,延時太久也不動。改變這個參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大。   
      
}   
}   
   
回復(fù)

使用道具 舉報(bào)

7#
ID:469525 發(fā)表于 2019-1-17 19:55 | 只看該作者
正常歩進(jìn)電機(jī)的頻率為500HZ,每8步為1循環(huán),具體請看附件(附件為四相八拍的歩進(jìn)電機(jī))

28BYJ-48步進(jìn)電機(jī).doc

271.5 KB, 下載次數(shù): 47

回復(fù)

使用道具 舉報(bào)

8#
ID:288090 發(fā)表于 2019-1-17 20:49 | 只看該作者
dir用高低電平表示方向,step用PWM輸出控制,可控制轉(zhuǎn)速
回復(fù)

使用道具 舉報(bào)

9#
ID:501098 發(fā)表于 2019-6-19 17:01 | 只看該作者
你行你叫滿昊啊 發(fā)表于 2018-1-22 10:07
這個是一個大神的測試程序,你可以參照一下

這也不好用啊
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91资源在线 | 人人做人人澡人人爽欧美 | 一区二区三区免费 | 国产乱码高清区二区三区在线 | 一区二区三区国产精品 | 国产精品无码永久免费888 | 日韩国产精品一区二区三区 | 成人精品鲁一区一区二区 | 国产精品视频 | 精品国产乱码久久久久久中文 | 高清国产午夜精品久久久久久 | 国户精品久久久久久久久久久不卡 | 国产欧美一区二区三区久久手机版 | 日韩影音 | 天天狠狠| 天堂一区二区三区四区 | 99热最新| 激情五月婷婷 | 国产成人精品一区二区三区 | 午夜小电影 | 久久综合99 | 欧美一区在线视频 | 国产精品毛片av | a级大片免费观看 | 亚洲欧美v| 夏同学福利网 | 色噜噜狠狠色综合中国 | 亚洲精品中文字幕 | 国产在线一区二区 | 91久久国产 | 一区二区三区不卡视频 | 国产精品日韩欧美一区二区 | 国产精品99久久久久久久久 | 一区二区三区在线免费观看视频 | 欧美一区二区三区小说 | 韩日三级 | 2021天天干夜夜爽 | 国产精品免费大片 | 一级毛毛片| 亚洲国产精久久久久久久 | 久久国产精品免费一区二区三区 |