欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
stm32四相五線步進電機驅動程序
[打印本頁]
作者:
yishuxiaoli
時間:
2018-9-20 13:58
標題:
stm32四相五線步進電機驅動程序
引腳A4-A7作為電機的四個控制信號。
單片機源程序如下:
//頭文件
#include "stm32f10x.h"
#include "usart.h"
#include "led.h"
#include "RTC_Time.h"
#include <stdio.h>
#include "delay.h"
//=============================================================================
//函數名稱:Delay
//功能概要:延時函數
//參數說明:無
//函數返回:無
//=============================================================================
//=============================================================================
//函數名稱:main
//功能概要:主函數
//參數說明:無
//函數返回:int
//=============================================================================
#define uchar unsigned char
#define uint unsigned int
void motor3(void);
void motor4(void);
u16 moto0_time=11000; //電機1的運行時間
u16 moto1_time=2000; //電機2的運行時間
void Delay1 (uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
void delay1_ms(u16 time)
{
u16 i=0;
while(time--)
{
i=12000;
while(i--) ;
}
}
int main(void)
{
u8 k=0;
//初始化LED
USART1_Config();
LED_GPIO_Config();
while (1)
{
LED0_OFF;
if(KEY0==0) //正轉按鈕
{
Delay1(0x00FFFF);
//motor1( );
motor3( );
MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;
MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;
k=1;
}
if(KEY1==0) //反轉按鈕
{
Delay1(0x00FFFF);
//motor2( );
motor4();
MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;
MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;
k=0;
}
}
}
//正轉函數
void motor3(void)
{
u8 j=0;
u16 i;
for(i=0;i<moto0_time;i++)
{
switch(j)
{
case 0:{
{ MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
if(i<moto1_time)
{ MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 1:{
{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
if(i<moto1_time)
{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 2:{
{ MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;}
if(i<moto1_time)
{ MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 3:{
{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;}
if(i<moto1_time)
{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 4:{
{MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;}
if(i<moto1_time)
{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 5:{
{ MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{ MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 6:{
{ MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{ MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 7:{
{ MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{ MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
}
j++;
if(j>=8) j=0;
Delay1(0x01222);
//delay1_ms(1);
}
}
//反轉函數
void motor4(void)
{
u8 j;
u16 i;
j=0;
for(i=0;i<moto0_time;i++)
{
switch(j)
{
case 0:{
{ MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{ MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 1:{
{ MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 2:{
{ MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;}
if(i<moto1_time)
{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 3:{
{ MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;}
if(i<moto1_time)
{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 4:{
{ MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;}
if(i<moto1_time)
{ MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_OFF; }
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 5:{
{ MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;}
if(i<moto1_time)
{ MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 6:{
{ MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
if(i<moto1_time)
{ MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
case 7:{
{MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;}
if(i<moto1_time)
{ MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;}
else { MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_OFF;}
};break;
}
j++;
if(j>=8) j=0;
Delay1(0x01222);
// delay1_ms(2);
}
LED0_ON;
}
/*
四拍
void motor1(void) 反轉
{
u8 j;
u16 i;
j=0;
for(i=0;i<1000;i++)
{
switch(j)
{
case 0:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
case 1:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
case 2:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
case 3:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;
}
j++;
if(j>=4) j=0;
//delay_ms(10);
Delay1(0x003FFF);
}
LED0_ON;
}
void motor2(void) 正轉
{
u8 j;
u16 i;
j=0;
for(i=0;i<1000;i++)
{
switch(j)
{
case 0:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;
case 1:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
case 2:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
case 3:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
}
j++;
if(j>=4) j=0;
//delay_ms(5);
Delay1(0x003FFF);
}
}
*/
/*
八拍加四拍混合
void motor5(void) 反轉
{
u8 j;
u16 i;
j=0;
for(i=0;i<2000;i++)
{
switch(j)
{
case 0:{MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;
case 1:{MOTOR_A1_ON; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;
case 2:{MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_OFF; MOTOR_D1_OFF;};break;
case 3:{MOTOR_A1_OFF; MOTOR_B1_ON; MOTOR_C1_ON; MOTOR_D1_OFF;};break;
case 4:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_OFF;};break;
case 5:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_ON; MOTOR_D1_ON;};break;
case 6:{MOTOR_A1_OFF; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;};break;
case 7:{MOTOR_A1_ON; MOTOR_B1_OFF; MOTOR_C1_OFF; MOTOR_D1_ON;};break;
case 8:{MOTOR_A_ON; MOTOR_B_ON; MOTOR_C_OFF; MOTOR_D_OFF;
MOTOR2_A_ON; MOTOR2_B_ON; MOTOR2_C_OFF; MOTOR2_D_OFF;};break;
case 9:{MOTOR_A_OFF; MOTOR_B_ON; MOTOR_C_ON; MOTOR_D_OFF;
MOTOR2_A_OFF; MOTOR2_B_ON; MOTOR2_C_ON; MOTOR2_D_OFF;};break;
case 10:{MOTOR_A_OFF; MOTOR_B_OFF; MOTOR_C_ON; MOTOR_D_ON;
MOTOR2_A_OFF; MOTOR2_B_OFF; MOTOR2_C_ON; MOTOR2_D_ON;};break;
case 11:{MOTOR_A_ON; MOTOR_B_OFF; MOTOR_C_OFF; MOTOR_D_ON;
MOTOR2_A_ON; MOTOR2_B_OFF; MOTOR2_C_OFF; MOTOR2_D_ON;};break;
}
j++;
if(j>=8) j=0;
Delay1(0x002FEE);
// delay1_ms(2);
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
2.四相五線 步進電機 兩個小電機同步轉90度.rar
(402.96 KB, 下載次數: 76)
2018-9-20 16:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-9-20 16:49
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1