找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1635|回复: 6
收起左侧

单片机步进马达运行问题,STC89C51可以 STC15F101W不行

[复制链接]
ID:143767 发表于 2020-7-30 16:43 | 显示全部楼层 |阅读模式
各位大侠,下面的程序本人在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. }
复制代码


回复

使用道具 举报

ID:808485 发表于 2020-7-30 16:56 | 显示全部楼层
最有可能是 STC的单片机的 12倍频特性导致的,把延时函数改为原来 6倍或12倍试下
回复

使用道具 举报

ID:213173 发表于 2020-7-30 16:57 | 显示全部楼层
STC15F101W是1T单片机,速度比STC89C51快许多,延时函数不改延时时间就不对了。
回复

使用道具 举报

ID:804115 发表于 2020-7-30 17:11 | 显示全部楼层
Delay(750);        //改变这个参数可以调整电机转速
改为
Delay(750*10);        //改变这个参数可以调整电机转速
试试?
回复

使用道具 举报

ID:143767 发表于 2020-7-30 17:51 | 显示全部楼层
谢谢各位,按照兄台们的办法调试成功。
回复

使用道具 举报

ID:805376 发表于 2020-8-1 17:59 | 显示全部楼层
两者的计算速度不一样,所以简单的delay函数就不能通用,用在STC15上的时候循环数要放大
回复

使用道具 举报

ID:811568 发表于 2020-8-5 17:14 | 显示全部楼层
还是单片机主频不一致吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表