单片机输出接口与伺服电机控制.pptxVIP

  • 7
  • 0
  • 约2.49千字
  • 约 11页
  • 2022-10-27 发布于上海
  • 举报
会计学 1 单片机输出接口与伺服电机控制 C51单片机的输入/输出接口 机器人伺服电机控制信号 计数并控制循环次数 第1页/共11页 C51单片机的输入/输出接口 • 控制机器人伺服电机以不同速度运动 是通过让单片机的输入/输出(I/O)口 输出不同的脉冲序列来实现的。51系 列单片机有4个8位的并行I/O口:P0、 P1、P2和P3。这4个接口,既可以作 为输入,也可以作为输出;可按8位处 理,也可按位方式(1位)使用。右图 是单片机STC89C52RC的引脚定义 图,这是一个标准的40引脚双列直插 式集成电路芯片。 第2页/共11页 任务一 机器人伺服电机控制信号 • • • 控制伺服电机转速为零的时序 控制伺服电机顺时针全速旋转的时序 控制伺服电机逆时针全速旋转的时序 第3页/共11页 任务一 机器人伺服电机控制信号 • 关于驱动电机的IO口 – P1_0专门控制右轮伺服电机 – P1_1专门控制左轮伺服电机 伺服电机与教学底板的连线原理图(左)和实际接线示意图(右) 第4页/共11页 任务一 机器人伺服电机控制信号 • 连接到P1_0的伺服电机分别为停止,全速顺时针旋转和逆时针旋转 的程序。 while(1) { P1_0=1; //P1_0输出高电平 delay_nus(1300); //延时1.3ms P1_0=0; //P1_0输出低电平 delay_nus(20000); //延时20ms } while(1) { P1_0=1; //P1_0输出高电平 delay_nus(1500); //延时1.5ms P1_0=0; //P1_0输出低电平 delay_nus(20000); //延时20ms } while(1) { P1_0=1; //P1_0输出高电平 delay_nus(1500); //延时1.7ms P1_0=0; //P1_0输出低电平 delay_nus(20000); //延时20ms } 第5页/共11页 任务一 机器人伺服电机控制信号 • 该你了,让机器人的两个轮子全速旋转。 #includeBoeBot.h #includeuart.h int main(void) { uart_Init(); //初始化串口 printf(The LEDs connected to P1_0 and P1_1 are blinking!\n ); while(1) { P1_0=1; //P1_0输出高电平 P1_1=1; //P1_1输出高电平 delay_nus(1300); //延时500ms P1_0=0; //P1_0输出低电平 P1_1=0; //P1_1输出低电平 delay_nms(20); //延时20ms } } 第6页/共11页 任务二 计数并控制循环次数 • for语句 – – – – for语句的执行过程 for语句的形式:for(循环变量赋初值;循环条件;循环变量增/减值) 语句 自增和自减 for循环控制电机的运行时间 • 第7页/共11页 任务二 计数并控制循环次数 • 与 P1_1 连接的电机逆时针旋转2.17 秒,然后与P1_0 连接 的电机旋转4.34秒 for(Counter=1;Counter=100;i++) { P1_1=1; delay_nus(1700); P1_1=0; delay_nms(20); } delay_nus(1700)持续1.7 ms,delay_nms(20)持续20ms,其他语句的执行时间很少,可忽略。 那么for 循环整体执行一次的时间是:1.7 ms + 20 ms = 21.7ms,本循环执行100 次,即就是 21.7ms 乘以100,时间=100*21.7ms =100*0.0217 秒=2.17 秒。 第8页/共11页 任务二 计数并控制循环次数 • 一个电机正向旋转3秒,另一个电机同时的反向旋转3 秒。 想让两个电机同时运行,给与P1_

文档评论(0)

1亿VIP精品文档

相关文档