本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
#include <reg52.h>
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
main()
{
unsigned char i,k,l,m;
while(1)
{
P0=0x71;//显示 F 标示正转
for(k=0;k<4;k++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(1000); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
for(l=0;l<3000;l++)
for(m=0;m<3000;m++)
Init_Timer0();
}
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; //重新赋值
TL0=0x00;
P1=0;
}
我想实现步进电机工作数分钟后停止数分钟再继续工作如此往复,现在语法上没错可载入程序后电机不转 |