51微控制器 可調速,多開關控制步進電機驅動

2021-08-19 07:46:17 字數 2480 閱讀 1304

### ==這是乙個基礎的步進電機程式==

```#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型步進電機,此步進電機為雙極性四相,接線共有...