手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

机器人制作之STC单片机控制步进电机

时间:2024-10-12 00:10:26

1、#include <STC15F2K60S2.H>//2相4凹厕疔义拍,STEP1-STEP2-STEP3-STEP4是顺时针转动,STEP1-STEP4-STEP3-STEP2是逆时蛤靴狡珂针转动。#define STEP1 {A1=1;A2=0;B1=1;B2=0;}#define STEP2 {A1=1;A2=0;B1=0;B2=1;}#define STEP3 {A1=0;A2=1;B1=0;B2=1;}#define STEP4 {A1=0;A2=1;B1=1;B2=0;}sbit EN1 = P1^0;sbit A1 = P1^1;sbit A2 = P1^2;sbit EN2 = P1^3;sbit B1 = P1^4;sbit B2 = P1^5;

2、//延时函数void DelayMS(unsigned int a){ unsigned int i; while( a-- != 0){ for(i = 0; i < 600; i++); }}

3、/*****函数名:步进电机控制调用:stepper(bit direction,unsigne蟠校盯昂d char speed,unsigned long steps)参数:direction(控制方向0为顺时针,1为逆时针),speed(控制速度最快是1,速度快容易失步),steps(走多少步)返回值:无*****/void stepper(bit direction,unsigned char speed,unsigned long steps){ unsigned long j; unsigned long k=0; //stepsX4=steps/4; if(direction==0){ //顺时针 for(j=0;j<steps;j++){ STEP1; DelayMS(speed); k++; if(k==steps){break;} //steps一步是1.8度,到达设定步数就跳出循环 STEP2; DelayMS(speed); k++; if(k==steps){break;} STEP3; DelayMS(speed); k++; if(k==steps){break;} STEP4; DelayMS(speed); k++; if(k==steps){break;} } }else{ //逆时针 for(j=0;j<steps;j++){ STEP1; DelayMS(speed); k++; if(k==steps){break;} STEP4; DelayMS(speed); k++; if(k==steps){break;} STEP3; DelayMS(speed); k++; if(k==steps){break;} STEP2; DelayMS(speed); k++; if(k==steps){break;} } }}

4、//主函数void main(void){ EN1=1; EN2=1; while(1){ stepper(0,5,200); DelayMS(1000); stepper(1,1,200); DelayMS(1000); } }

机器人制作之STC单片机控制步进电机
© 手抄报圈