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

 找回密码
 立即注册
搜索
查看: 625|回复: 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立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

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