我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 621|回复: 1

步进电机程序

[复制链接]

该用户从未签到

6

主题

7

回帖

0

积分

一级逆天

积分
0

终身成就奖特殊贡献奖

发表于 2019-5-26 15:11:23 | 显示全部楼层 |阅读模式
#include<reg52.h>

void TurnMotor(unsigned long angle);


void main()
{
   TurnMotor(360*25);
   while(1);

}

void delay()
{
    unsigned int i = 200;//     1s÷550=1.8ms,控制节拍刷新时间大于1.8ms , 延时2ms
    while(i--);
}

void TurnMotor(unsigned long angle)
{
    unsigned char temp;
    unsigned char index = 0;
    unsigned long beats = 0;
    unsigned char code BeatCode[8]={
0x0E, 0x0C, 0x0D, 0x09, 0x0B, 0x03, 0x07, 0x06
};
   
    beats = (angle*4076)/360;//计算需要的节拍数,4096拍对应一圈    ,八拍模式时,步进电机转过一圈是需要64个节拍,    1:64转子转64圈,64×64=4096个节拍输出轴才转过一圈,那么一个节拍转动的角度——步进角度就是360/4096
    while(beats--)
    {
      temp = P1;//读取p1的值
      temp = temp & 0XF0;
      temp = temp | BeatCode[index];//即保证高四位值不变,又将第四位赋值
      P1 = temp;
      index++; //步进节拍递增
      index = index & 0x07;//加到8归零
      delay();
    }
    P1|=0xFF; //关闭电机所有的相
}
回复

使用道具 举报

该用户从未签到

1

主题

1215

回帖

0

积分

二级逆天

积分
0

终身成就奖

QQ
发表于 2019-5-28 08:47:38 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表