找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3771|回復: 1
收起左側

單片機步進電機的正反轉控制(含源碼和仿真文件)

[復制鏈接]
ID:900766 發(fā)表于 2021-6-4 11:21 | 顯示全部樓層 |閱讀模式
能夠實現(xiàn)步進電機正轉3圈,反轉3圈和停止。內(nèi)容很基礎,供大家學習參考。仿真圖如下:
1.png

單片機源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code FFW[]=
  5. {
  6.         0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
  7. };    //正轉

  8. uchar code REV[]=
  9. {
  10.         0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
  11. };    //反轉

  12. sbit K1 = P3^0;
  13. sbit K2 = P3^1;
  14. sbit K3 = P3^2;

  15. void DelayMS(uint ms)
  16. {
  17.         uchar i;
  18.         while(ms--)
  19.         {
  20.                  for(i=0;i<120;i++);
  21.         }
  22. }

  23. void SETP_MOTOR_FFW(uchar n)    //電機正轉函數(shù),n為圈數(shù)
  24. {
  25.         uchar i,j;
  26.         for(i=0;i<5*n;i++)
  27.         {
  28.                  for(j=0;j<8;j++)
  29.                 {
  30.                          if(K3 == 0)        break;    //檢測K3是否按下,如果按下則停止轉動
  31.                         P1 = FFW[j];
  32.                         DelayMS(25);
  33.                 }
  34.         }
  35. }

  36. void SETP_MOTOR_REV(uchar n)    //電機反轉函數(shù),n為圈數(shù)
  37. {
  38.         uchar i,j;
  39.         for(i=0;i<5*n;i++)
  40.         {
  41.                  for(j=0;j<8;j++)
  42.                 {
  43.                          if(K3 == 0)        break;
  44.                         P1 = REV[j];
  45.                         DelayMS(25);
  46.                 }
  47.         }
  48. }

  49. void main()
  50. {
  51.         uchar N = 3;    //轉3圈
  52.         while(1)
  53.         {
  54.                  if(K1 == 0)
  55.                 {
  56.                          P0 = 0xfe;    //正轉指示燈點亮
  57.                         SETP_MOTOR_FFW(N);
  58.                         if(K3 == 0) break;
  59.                 }
  60.                 else if(K2 == 0)
  61.                 {
  62.                          P0 = 0xfd;    //反轉指示燈點亮
  63.                         SETP_MOTOR_REV(N);
  64.                         if(K3 == 0) break;
  65.                 }
  66.                 else
  67.                 {
  68.                          P0 = 0xfb;    //停止指示燈點亮
  69.                         P1 = 0x03;    //?
  70.                 }
  71.         }
  72. }
復制代碼

所有資料51hei提供下載:
步進電機的正反轉控制.rar (42.2 KB, 下載次數(shù): 67)

評分

參與人數(shù) 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:350104 發(fā)表于 2021-6-8 09:41 | 顯示全部樓層
推薦學習實用  不錯
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表