### ==這是乙個基礎的步進電機程式==
```#include "reg52.h"
//電機io
#define gpio_motor p1
unsigned char code ffw[8] = ; //反轉順序
void delay(unsigned int t);
void motor();
void main(void)
}void motor()
}void delay(unsigned int t) //延時函式 }}
```### ==下面我們加點開關控制和感測器==
### # 事實上 ++按鍵的功能可以根據需要自己定製++
```#include "reg51.h"
#define gpio_motor p1 //電機輸出
#define speed_max 500 //電機轉速
#define start_speed 300
#define speed_min 100
#define change_speed 20 //每次改變的速度
sbit k1 = p3 ^ 0; //這些是可以使用的開關和按鍵
sbit k2 = p3 ^ 1;
sbit k3 = p3 ^ 2;
sbit k4 = p3 ^ 3;
sbit k5 = p3 ^ 4;
sbit k6 = p3 ^ 5;
sbit k0 = p3 ^ 6;
sbit senser_l= p2 ^ 0; //外部感測器,用來檢測運動的終點
sbit senser_r= p2 ^ 1;
bit end_l, end_r; //用來儲存感測器的值
//***以下定義控制步進電機轉動陣列,從0到7依次將訊號傳送給電機,可以使電機進行相應轉動
unsigned char code ffw[8] = ; //反轉
unsigned char code ffz[8] = ; //正轉
bit direction; //用於控制轉向
bit roll; //轉動總開關
unsigned char speed; //轉速
void delay(unsigned int t); //延時函式
void motor(); //轉動函式
void stop(); //剎車函式
void main(void)
while ((i<200) && (k1 == 0)) //鬆手 ,下同
i = 0;
} if (k2 == 0) //如果k2按下,使其反轉,即改變direction=0。
while ((i<200) && (k2 == 0))
i = 0;
} if (k3 == 0) //如果k3按下,使其加速,即改變speed。每次加乙個change_speed.
while ((i<200) && (k3 == 0))
i = 0;
} if (k4 == 0) //如果k4按下,使其減速,即改變speed。每次減乙個change_speed.
while ((i<200) && (k4 == 0))
i = 0;
} if (k5 == 0) //自動正轉,直到感測器檢測到到達終點後停止,速度為auto_speed.
while ((i < 200) && (k4 == 0))
i = 0;
} if (k6 == 0) //自動反轉,直到感測器檢測到到達終點後停止,速度為auto_speed.
while ((i < 200) && (k4 == 0))
i = 0;
} if (k0 == 0) //總開關 如果k0按下,改變roll,即對其取反。
while ((i<200) && (k2 == 0))
i = 0;
} if (roll) //roll 為真時 執行轉動函式
motor();
else
stop(); }}
void motor()
else
else
if (!end_l) //感測器檢測到左側側邊界 禁止左轉
else
delay(speed); //調節轉速
senser_l = 1; //拉高感測器電平重新檢測
senser_r = 1;
//如果感測器電平被拉低,認為已經到了某側邊界
if (!senser_l || !senser_r)
if (!senser_r)
} }}
void delay(unsigned int t) }}
void stop()
```
基於51微控制器步進電機控制
1 用矩陣鍵盤設定電機目標轉速及旋轉方向,範圍 100 300 轉 分 2 測量 顯示電機實際轉速和方向 正轉顯示 p 反轉顯示 n 從實現功能上分析,軟體可以分解3個功能模組 1,步進電機控制模組 2,矩陣鍵盤輸入模組 3,顯示輸出模組 步進電機通過輸入脈衝訊號進行控制,即電機的總轉動角度由輸入脈...
51微控制器紅外控制步進電機
include 定義一些特殊暫存器 typedef unsigned char u8 typedef unsigned int u16 u8 code ffw 8 轉動陣列 u8 code rev 8 u16 code smgduan 17 u8 irvalue 6 u8 time u8 read ...
51微控制器控制四相步進電機
接觸微控制器快兩年了,不過只是非常業餘的興趣,實踐卻不多,到現在還算是個初學者吧。這幾天給自己的任務就是搞定步進電機的微控制器控制。以前曾看過有關步進電機原理和控制的資料,畢竟自己沒有做過,對其具體原理還不是很清楚。今天從 網買了乙個epson的umx 1型步進電機,此步進電機為雙極性四相,接線共有...