实验9步进电机控制实验-1207082107-陈永超.doc
文本预览下载声明
PAGE
PAGE 30
《单片机原理与应用》实验报告
实验序号:09 实验项目名称: 步进电机控制实验
学 号1207082107姓 名陈永超专业、班12物联网实验地点实验楼1#416指导教师许华荣实验时间一、实验目的
1.了解KEIL C51 集成开发环境及软件仿真;
2. 掌握单片机烧写方法;
3. 理解步进电机的工作原理;
4. 熟练步进电机的控制。
二、实验设备(环境)及要求
硬件:PC机,51单片机开发板;
软件:PC机操作系统windows XP,KEIL C51集成开发环境。
三、实验内容与步骤
参考书上的例程,三个按键K1、K2、K3和LED1、LED2、LED3及一个步进电机。按下K1,步进电机正传3圈,LED1灯亮。按下K2,步进电机反转3圈,K2灯亮。按下K3,步进电机停止,且LED3灯亮。
四、实验结果与数据处理
#include reg52.h
sbit Motor_A = P1^5; // 步进电机的A相位
sbit Motor_B = P1^6; // 步进电机的B相位
sbit Motor_C = P1^7; // 步进电机的C相位
sbit Motor_D = P3^5; // 步进电机的D相位
static unsigned char MotorRunPhase = 0;
/**********************************************
功能:
延时
输入参数:
n: 延时时长
输出参数:
无
返回值:
**********************************************/
//顺时针转:
void MotorRunCW(void)
{
/*电机是一拍一拍运转,我们用switch case 语句来实现*/
switch(MotorRunPhase)
{
case 0://第一拍
/*注意采用的是ULN2003,反相器*/
Motor_A = 1;
Motor_B = 0;
Motor_C = 0;
Motor_D = 0;
break;
case 1://第二拍
Motor_A = 1;
Motor_B = 1;
Motor_C = 0;
Motor_D = 0;
break;
case 2://第三拍
Motor_A = 0;
Motor_B = 1;
Motor_C = 0;
Motor_D = 0;
break;
case 3://第四拍
Motor_A = 0;
Motor_B = 1;
Motor_C = 1;
Motor_D = 0;
break;
case 4://第五拍
Motor_A = 0;
Motor_B = 0;
Motor_C = 1;
Motor_D = 0;
break;
case 5://第六拍
Motor_A = 0;
Motor_B = 0;
Motor_C = 1;
Motor_D = 1;
break;
case 6://第七拍
Motor_A = 0;
Motor_B = 0;
Motor_C = 0;
Motor_D = 1;
break;
case 7://第八拍
Motor_A = 1;
显示全部