舞蹈机器人步进机仿真

舞蹈机器人步进机仿真

应用介绍

舞蹈机器人步进机仿真

#include "reg51.h"
#include "intrins.H"
//8步式步进电机脉冲序列
//unsigned char steps[8] = {0x77,0x33,0xbb,0x99,0xdd,0xcc,0xee,0x66};
unsigned char steps[8] = {0x2,0x6,0x4,0xc,0x8,0x9,0x1,0x3};
//当前各电机在上述序列中的位置
unsigned char cur_step[8] = {0,0,0,0,0,0,0,0};
//这个文件用于记录舞步信息序列
char speed_tickers[8] = {0,0,0,0,0,0,0,0};
//从上述文件中读出的当前舞步信息
unsigned char speeds[8] = {0,0,0,0,0,0,0,0};
unsigned char data_pointer = 0;//指向舞步数据的指针
unsigned char time_t = 0;//指定重新读取一次 speeds 值的计时周期
code char dancedata[] = {54,15,12,12,87,95,65,45,-89,-88,-54,-54,54,68,-45,-65,-65,-48,101,121,115,117,19,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,109,104,-30,-102,-104,-106,110,100,
54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,102,102,
100,130,30,10,-90,-120,87,102,102,100,130,30,10,-90,-120,87,102,103,105,54,15,12,12,87,95,65,45,-89,-88,-54,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,109,104,-30,-102,-104,-106,110,
100,130,30,10,-90,-120,87,102,102,100,130,30,10,-90,-120,87,-120,87,102,103,105,109,104,-30,-102,-104,-106,110,
54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,102,102,
54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,102,102,
54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,102,102,
54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,102,102,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54,
-98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54,
};
code char pin[8] = {1,2,4,8,16,32,64,128};
char MAX_SPEED_TICKER = 120;
unsigned char i; //电机序号

void InitTimer(void) //初始化计数器
{
  TH0 = 0xFA;  //设置触发周期:1000次
  TL0 = 0x24;
  TMOD = TMOD |0x01;  //select mode 1
  TR0 = 1; //start timer0
  ET0 = 1; //enable timer 0 interrupt
  EA =1; //global interrupt enable
}

void SetAllSpeeds(void)  //设置各电机的速度,并让它运动起来
{
  char delta;  //旋转方向 1:正 -1:反  0:停
  for(i=0;i<8;i++)
  {
    P2=pin[i]; //发送锁存信号
    speed_tickers[i] += speeds[i]; //计数值增加 speed[i]越高,增加得越多
    if(speed_tickers[i] >= MAX_SPEED_TICKER) //如果计数值超过预定最大值,就发送脉冲
    {
      speed_tickers[i] = 0;
      delta = 1;
    }
    else if(speed_tickers[i] <= -MAX_SPEED_TICKER) //同上,反响旋转
    {
      speed_tickers[i] = 0;
      delta = -1;
    }
    else delta = 0;
    cur_step[i] += delta;
    cur_step[i] &= 0x07; //计算当前应发脉冲
    P0 = steps[cur_step[i]];
    P2 = 0;
  }
}

void OnTimer(void) interrupt 1 using 2
{
  unsigned char j;
  SetAllSpeeds();
  InitTimer();
  time_t++;
  if(time_t==200) //每200次触发读取一次新舞步数据
  {
    for(j=0;j<8;j++)
      speeds[j] = dancedata[data_pointer+j];
    data_pointer += 8;
    time_t = 0;
  }
}

void main()  //程序的入口
{
  InitTimer();  //初始化后等中断
  while(1);
}
    

文件列表(部分)

名称 大小 修改日期
123.DSN16.76 KB2019-06-24
123.PWI0.36 KB2019-06-24
Last Loaded 123.DBK16.77 KB2019-06-24
robot1.93 KB2019-06-24
robot.c1.16 KB2019-06-24
robot.hex0.85 KB2019-06-24
robot.lnp0.02 KB2019-06-24
robot.LST1.71 KB2019-06-24
robot.M511.20 KB2019-06-24
robot.OBJ2.07 KB2019-06-24
robot.Opt0.65 KB2019-06-24
robot.plg0.20 KB2019-06-24
robot.Uv20.86 KB2019-06-24
robot.__i0.03 KB2019-06-24
robot_Opt.Bak0.65 KB2019-06-24
robot_Uv2.Bak0.83 KB2019-06-24
robot0.00 KB2019-06-24
0044、舞蹈机器人步进机仿真0.00 KB2019-06-24

立即下载

相关下载

[舞蹈机器人步进机仿真] 舞蹈机器人步进机仿真

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部