#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zheng[]={0xfc,0xf6,0xf3,0xf9 }; //2相励磁正转表
uchar code fan[]={0xf9,0xf3,0xf6,0xfc }; //2相励磁反转表
uchar code ting[]={0x00};
sbit k1=P3^0; //定义K1开关
sbit zheng_LED=P2^1 ;
sbit fan_LED=P2^2;
uint m=1;
void delay(uint x) //延时函数
{
uchar i;
while(x--) //i=x即延时约x毫秒
for(i=0;i<60;i++);
}
/********以下是步进电机正转函数********/
void setp_motor_zheng(uchar n)
{ uchar i,j;
for(i=0;i<5*n;i++) //转n圈
{
for(j=0;j<4;j++)
{
P1=zheng[j]; //取正转数据
delay(250); //转一个角度停留的时间,可调节转速
}
}
}
/********以下是步进电机反转函数********/
void setp_motor_fan(uchar n)
{ uchar i,j;
for(i=0;i<5*n;i++) //转n圈
{
for(j=0;j<4;j++)
{
P1=fan[j]; //取反转数据
delay(250); //转一个角度停留的时间,可调节转速
}
}
}
/********以下是行程开关中断子程序********/
sbit k2=P3^1;
/********以下是主程序********/
void main(void)
{
while(m--) //电机转m圈
{ if(k1==1) //K1送入高电平
{ delay(10);
if(k1==1)
{ zheng_LED=1;
fan_LED=0;
setp_motor_zheng(3); //调用电机正转函数
}
}
else //K1送入低电平
{
delay(10);
zheng_LED=0;
fan_LED=1;
setp_motor_fan(3); //调用电机反转函数
}
}
}
|