标题: 单片机步进马达运行问题,STC89C51可以 STC15F101W不行 [打印本页]

作者: dj3365191    时间: 2020-7-30 16:43
标题: 单片机步进马达运行问题,STC89C51可以 STC15F101W不行
各位大侠,下面的程序本人在STC89C51上能够通过,马达正常运行。但烧录在STC15F101W里面后,步进马达不转,只是震动,不知什么原因,请大家帮忙分析一下,谢谢!

/*
1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
可以按照给的原理图接线
*/
  1. #include <reg52.h>


  2. unsigned char code F_Rotation[4]={0x04,0x08,0x10,0x20};//正转表格
  3. unsigned char code B_Rotation[4]={0x20,0x10,0x08,0x04};//反转表格

  4. void Delay(unsigned int i)//延时
  5. {
  6.          while(--i);
  7. }

  8. main()
  9. {
  10.         unsigned char i;

  11.          while(1)
  12.          {
  13.                   for(i=0;i<4;i++)      //4相
  14.              {
  15.                      P3=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
  16.                      Delay(750);        //改变这个参数可以调整电机转速
  17.                  }
  18.           }
  19. }
复制代码



作者: gbchang    时间: 2020-7-30 16:56
最有可能是 STC的单片机的 12倍频特性导致的,把延时函数改为原来 6倍或12倍试下
作者: wulin    时间: 2020-7-30 16:57
STC15F101W是1T单片机,速度比STC89C51快许多,延时函数不改延时时间就不对了。
作者: 1692483014    时间: 2020-7-30 17:11
Delay(750);        //改变这个参数可以调整电机转速
改为
Delay(750*10);        //改变这个参数可以调整电机转速
试试?
作者: dj3365191    时间: 2020-7-30 17:51
谢谢各位,按照兄台们的办法调试成功。
作者: disorder    时间: 2020-8-1 17:59
两者的计算速度不一样,所以简单的delay函数就不能通用,用在STC15上的时候循环数要放大
作者: lvxiangbei    时间: 2020-8-5 17:14
还是单片机主频不一致吧





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1