资料编号:091 下面是相关功能视频演示:
91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)
功能介绍:通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:程序采用C语言,并且有中文注释,新手容易看懂,仿真采用Proteus,编程工具采用keil5
下面是部分程序展示:
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;
}
}
下面是该资料的分享下载链接: