创新性实验研究报告
实验项目名称 基于MCS-51单片机的步进电机速度控制程序设计
组长姓名 学号
联系电话 E-mail
成员姓名 学号
成员姓名 学号
专 业 电气工程及其自动化 班级
指导教师及职称
2015年 1 月 4 日
四、实验内容
附件:源程序等。
#include
sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1; sbit C1=P1^2; sbit D1=P1^3;
#define LV 1
#define OL 0
#define Coil_A1 {A1=LV;B1=OL;C1=OL;D1=OL;}//A相通电,其他相断电 #define Coil_B1 {A1=OL;B1=LV;C1=OL;D1=OL;}//B相通电,其他相断电 #define Coil_C1 {A1=OL;B1=OL;C1=LV;D1=OL;}//C相通电,其他相断电 #define Coil_D1 {A1=OL;B1=OL;C1=OL;D1=LV;}//D相通电,其他相断电 #define Coil_OFF {A1=OL;B1=OL;C1=OL;D1=OL;}//全部断电
bit flag=1;
unsigned char Speed,count;
/*------------------------------------------------
uS 延时函数
-----------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS 延时函数
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
}
}
/*------------------------------------------------
主函数 ------------------------------------------------*/
void main()
{
TMOD=0X01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; Speed=5; //调整速度
while(1)
{
Coil_OFF
while(flag)
{
Coil_D1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_B1
DelayMs(Speed);
Coil_A1 DelayMs(Speed);
}
Coil_OFF
while(!flag) {
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //改变这个参数可以调整电机转速 ,
//数字越小,转速越大, 力矩越小
Coil_B1
DelayMs(Speed); Coil_C1
DelayMs(Speed); Coil_D1
DelayMs(Speed);
}
}
}
void time0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count>=200)
{
count=0; flag=!flag;
}
}