机器人制作之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单片机控制步进电机
  • Autolisp编程实现CAD的二次开发
  • NX 10.0怎么关闭启用大小调整
  • AutoForm R7 如何更换鼠标的操作环境
  • 普通cad里如何插入图,并将图中要素与cad对齐?
  • UG10.0练习三维建模一百三十一之曲柄
  • 热门搜索
    关于梅花的手抄报 诚实手抄报 数学的手抄报 有关古诗的手抄报 我爱你中国手抄报 安全乘车手抄报 关于月亮的手抄报图片 英语故事手抄报 节约用纸的手抄报 小学五年级手抄报