找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2718|回复: 1
收起左侧

51单片机控制步进电机指定角度旋转程序

[复制链接]
ID:642809 发表于 2020-10-24 21:36 | 显示全部楼层 |阅读模式
本帖最后由 闫明涛 于 2020-10-26 16:06 编辑
  1. #include <reg52.h>
  2. unsigned long beats=0;
  3. void startmotor(unsigned long angle);
  4. void main()
  5. {
  6.         EA=1;
  7.         TMOD=0X01;
  8.         TH0=0XF8;//2ms
  9.         TL0=0XCD;
  10.         ET0=1;
  11.         TR0=1;
  12.         startmotor(360);
  13.         while(1);
  14. }
  15. void startmotor(unsigned long angle)
  16. {
  17.         EA=0;
  18.         beats=(angle*4076)/360;//防止因为中断导致计算错误,因为以后的中断中需要使用到beats
  19.         EA=1;
  20. }
  21. void InterruptTimer0() interrupt 1
  22. {
  23.         unsigned char tmp;
  24.         static unsigned char index=0;
  25.         unsigned char code beetcode[8]={0xe,0xc,0xd,0x9,0xb,0x3,0x7,0x6};//节拍对应IO口代码
  26.         TH0=0XF8;
  27.         TL0=0XCD;
  28.         if(beats!=0)
  29.         {
  30.                 tmp=P1&0xf0;
  31.                 tmp|=beetcode[index];
  32.                 P1=tmp;
  33.                 index++;
  34.                 if(index>=8)index=0;
  35.                 beats--;
  36.         }
  37.         else
  38.                 P1=P1|0X0F;//关闭所有相位
  39. }

  40. 电机引脚接P1^0~P1^3;
  41. 主函数调用void startmotor(unsigned long angle);即可设置指定角度旋转精度为1度
复制代码


步进电机控制角度旋转.rar

18.06 KB, 下载次数: 35, 下载积分: 黑币 -5

回复

使用道具 举报

ID:1 发表于 2020-10-25 02:51 | 显示全部楼层
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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