電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

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

單片機(jī)C語言實(shí)例-263-帶停機(jī) 步進(jìn)電機(jī)正反轉(zhuǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-3-12 10:34:45 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)C語言實(shí)例-263-帶停機(jī) 步進(jìn)電機(jī)正反轉(zhuǎn)

/*-----------------------------------------------
  名稱:步進(jìn)電機(jī)
  公司:上海浩豚電子科技有限公司
  網(wǎng)站:www.doflye.cn
  編寫:師訪
  日期:2009.5
  修改:無
  內(nèi)容:1、本程序用于測(cè)試4相步進(jìn)電機(jī)常規(guī)驅(qū)動(dòng)
        2、需要用跳帽或者杜邦線把信號(hào)輸出端和對(duì)應(yīng)的步進(jìn)電機(jī)信號(hào)輸入端連接起來
        3、速度不可以調(diào)節(jié)的過快,不然就沒有力矩轉(zhuǎn)動(dòng)了
                4、按s4(設(shè)置成獨(dú)立按鍵模式)可以控制正反轉(zhuǎn)
------------------------------------------------*/

#include <reg52.h>

unsigned char Flag;//定義正反轉(zhuǎn)和停止標(biāo)志位
sbit KEY = P3^3;


unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正轉(zhuǎn)表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反轉(zhuǎn)表格
/******************************************************************/
/*                    延時(shí)函數(shù)                                    */
/******************************************************************/
void Delay(unsigned int i)//延時(shí)
{
while(--i);
}
/******************************************************************/
/*                   主函數(shù)                                       */
/******************************************************************/
main()
{

unsigned char i;


  EX1=1;         //外部中斷0開
  IT1=1;         //邊沿觸發(fā)
  EA=1;          //全局中斷開

while(Flag==0)            
{
  P0=0x71;//顯示 F 標(biāo)示正轉(zhuǎn)
  for(i=0;i<4;i++)      //4相
     {
     P1=F_Rotation;  //輸出對(duì)應(yīng)的相 可以自行換成反轉(zhuǎn)表格
     Delay(500);        //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大
         }
  }
while(Flag==1)
{
  P0=0x7C;//顯示 b 標(biāo)示反轉(zhuǎn)
  for(i=0;i<4;i++)      //4相
     {
     P1=B_Rotation;  //輸出對(duì)應(yīng)的相
     Delay(500);        //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,數(shù)字越小,轉(zhuǎn)速越大
         }
  }
while(Flag==2)  //停止
{
  P0=0x6D;//   顯示 S
  P1=0;
  }
}
/******************************************************************/
/*                   中斷入口函數(shù)                                 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(500);
if(!KEY)
{

Flag++;         //s3按下觸發(fā)一次
if(Flag==3)
   Flag=0;
  }
}


更多詳情參考附件文檔

游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表