实验9 步进电机控制实验 182107陈永超.docx

上传人:b****0 文档编号:12782270 上传时间:2023-04-22 格式:DOCX 页数:22 大小:66.52KB
下载 相关 举报
实验9 步进电机控制实验 182107陈永超.docx_第1页
第1页 / 共22页
实验9 步进电机控制实验 182107陈永超.docx_第2页
第2页 / 共22页
实验9 步进电机控制实验 182107陈永超.docx_第3页
第3页 / 共22页
实验9 步进电机控制实验 182107陈永超.docx_第4页
第4页 / 共22页
实验9 步进电机控制实验 182107陈永超.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验9 步进电机控制实验 182107陈永超.docx

《实验9 步进电机控制实验 182107陈永超.docx》由会员分享,可在线阅读,更多相关《实验9 步进电机控制实验 182107陈永超.docx(22页珍藏版)》请在冰豆网上搜索。

实验9 步进电机控制实验 182107陈永超.docx

实验9步进电机控制实验182107陈永超

《单片机原理与应用》实验报告

实验序号:

09  实验项目名称:

步进电机控制实验

学  号

1207082107

姓  名

陈永超

专业、班

12物联网

实验地点

实验楼1#416

指导教师

许华荣

实验时间

一、实验目的

1.了解KEILC51集成开发环境及软件仿真;

2.掌握单片机烧写方法;

3.理解步进电机的工作原理;

4.熟练步进电机的控制。

二、实验设备(环境)及要求

硬件:

PC机,51单片机开发板;

软件:

PC机操作系统windowsXP,KEILC51集成开发环境。

三、实验内容与步骤

参考书上的例程,三个按键K1、K2、K3和LED1、LED2、LED3及一个步进电机。

按下K1,步进电机正传3圈,LED1灯亮。

按下K2,步进电机反转3圈,K2灯亮。

按下K3,步进电机停止,且LED3灯亮。

四、实验结果与数据处理

#include

sbitMotor_A=P1^5;//步进电机的A相位

sbitMotor_B=P1^6;//步进电机的B相位

sbitMotor_C=P1^7;//步进电机的C相位

sbitMotor_D=P3^5;//步进电机的D相位

 

staticunsignedcharMotorRunPhase=0;

/**********************************************

功能:

延时

输入参数:

n:

延时时长

输出参数:

返回值:

**********************************************/

 

//顺时针转:

voidMotorRunCW(void)

{

/*电机是一拍一拍运转,我们用switchcase语句来实现*/

switch(MotorRunPhase)

{

case0:

//第一拍

/*注意采用的是ULN2003,反相器*/

Motor_A=1;

Motor_B=0;

Motor_C=0;

Motor_D=0;

break;

case1:

//第二拍

Motor_A=1;

Motor_B=1;

Motor_C=0;

Motor_D=0;

break;

case2:

//第三拍

Motor_A=0;

Motor_B=1;

Motor_C=0;

Motor_D=0;

break;

case3:

//第四拍

Motor_A=0;

Motor_B=1;

Motor_C=1;

Motor_D=0;

break;

case4:

//第五拍

Motor_A=0;

Motor_B=0;

Motor_C=1;

Motor_D=0;

break;

case5:

//第六拍

Motor_A=0;

Motor_B=0;

Motor_C=1;

Motor_D=1;

break;

case6:

//第七拍

Motor_A=0;

Motor_B=0;

Motor_C=0;

Motor_D=1;

break;

case7:

//第八拍

Motor_A=1;

Motor_B=0;

Motor_C=0;

Motor_D=1;

break;

default:

break;

}

if(0==MotorRunPhase)//运行下一步

{

MotorRunPhase=7;

}

else

{

MotorRunPhase--;

}

}

 

voidDelay(unsignedintn)

{

unsignedinti,j;

for(i=0;i

{

j=1;

while(j--);

}

}

//顺时针转:

voidMotorRunCW1(void)

{

/*电机是一拍一拍运转,我们用switchcase语句来实现*/

switch(MotorRunPhase)

{

case0:

//第一拍

/*注意采用的是ULN2003,反相器*/

Motor_A=1;

Motor_B=0;

Motor_C=0;

Motor_D=0;

break;

case1:

//第二拍

Motor_A=1;

Motor_B=1;

Motor_C=0;

Motor_D=0;

break;

case2:

//第三拍

Motor_A=0;

Motor_B=1;

Motor_C=0;

Motor_D=0;

break;

case3:

//第四拍

Motor_A=0;

Motor_B=1;

Motor_C=1;

Motor_D=0;

break;

case4:

//第五拍

Motor_A=0;

Motor_B=0;

Motor_C=1;

Motor_D=0;

break;

case5:

//第六拍

Motor_A=0;

Motor_B=0;

Motor_C=1;

Motor_D=1;

break;

case6:

//第七拍

Motor_A=0;

Motor_B=0;

Motor_C=0;

Motor_D=1;

break;

case7:

//第八拍

Motor_A=1;

Motor_B=0;

Motor_C=0;

Motor_D=1;

break;

default:

break;

}

if(7==MotorRunPhase)//运行下一步

{

MotorRunPhase=0;

}

else

{

MotorRunPhase++;

}

}

 

/*---------------------------------------------------------------------------------------------------------*/

/**********************************************

主函数,实现步进电机转动

**********************************************/

voidmain(void)

{

unsignedshortintMotorRunStep=512;//电机运行180度需要的步数

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

////////////////////////////////////////////////

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

MotorRunStep=512;

while(MotorRunStep)

{

MotorRunCW1();//让电机运行一步

Delay(50);//延时

MotorRunStep--;

}

 

/////////////////////////////////////////////////////

 

while

(1);

}

 

五、分析与讨论

六、教师评语

签名:

日期:

成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1