标题: 51单片机控制步进电机指定角度旋转程序 [打印本页]

作者: 闫明涛    时间: 2020-10-24 21:36
标题: 51单片机控制步进电机指定角度旋转程序
本帖最后由 闫明涛 于 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, 下载次数: 37, 下载积分: 黑币 -5


作者: admin    时间: 2020-10-25 02:51
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




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