欢迎来到天天文库
浏览记录
ID:57200125
大小:1.54 MB
页数:11页
时间:2020-08-03
《单片机输出接口与伺服电机控制.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言编程控制伺服电机C51单片机的输入/输出接口机器人伺服电机控制信号计数并控制循环次数C51单片机的输入/输出接口•控制机器人伺服电机以不同速度运动是通过让单片机的输入/输出(I/O)口输出不同的脉冲序列来实现的。51系列单片机有4个8位的并行I/O口:P0、P1、P2和P3。这4个接口,既可以作为输入,也可以作为输出;可按8位处理,也可按位方式(1位)使用。右图是单片机STC89C52RC的引脚定义图,这是一个标准的40引脚双列直插式集成电路芯片。任务一机器人伺服电机控制信号•••控制伺服电机转速为零的时序控制伺服电机顺时针全速旋转
2、的时序控制伺服电机逆时针全速旋转的时序任务一机器人伺服电机控制信号•关于驱动电机的IO口–P1_0专门控制右轮伺服电机–P1_1专门控制左轮伺服电机伺服电机与教学底板的连线原理图(左)和实际接线示意图(右)任务一机器人伺服电机控制信号•连接到P1_0的伺服电机分别为停止,全速顺时针旋转和逆时针旋转的程序。while(1){P1_0=1;//P1_0输出高电平delay_nus(1300);//延时1.3msP1_0=0;//P1_0输出低电平delay_nus(20000);//延时20ms}while(1){P1_0=1;//P1_0输
3、出高电平delay_nus(1500);//延时1.5msP1_0=0;//P1_0输出低电平delay_nus(20000);//延时20ms}while(1){P1_0=1;//P1_0输出高电平delay_nus(1500);//延时1.7msP1_0=0;//P1_0输出低电平delay_nus(20000);//延时20ms}任务一机器人伺服电机控制信号•该你了,让机器人的两个轮子全速旋转。#include#includeintmain(void){uart_Init();//初始化串口pri
4、ntf("TheLEDsconnectedtoP1_0andP1_1areblinking!");while(1){P1_0=1;//P1_0输出高电平P1_1=1;//P1_1输出高电平delay_nus(1300);//延时500msP1_0=0;//P1_0输出低电平P1_1=0;//P1_1输出低电平delay_nms(20);//延时20ms}}任务二计数并控制循环次数•for语句––––for语句的执行过程for语句的形式:for(循环变量赋初值;循环条件;循环变量增/减值)语句自增和自减for循环控制电机的运行时间•任务
5、二计数并控制循环次数•与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.7ms,delay_nms(20)持续20ms,其他语句的执行时间很少,可忽略。那么for循环整体执行一次的时间是:1.7ms+20ms=21.7ms,本循环执行100次,即就是21.7ms乘以100,时间=100*21.7ms=100*0.0217
6、秒=2.17秒。任务二计数并控制循环次数•一个电机正向旋转3秒,另一个电机同时的反向旋转3秒。想让两个电机同时运行,给与P1_1连接的电机发出1.7ms的脉宽,给与P1_0连接的电机发出1.3ms的脉宽,现在每通过循环一次要用的时间是:1.7ms–与P1_1连接的电机1.3ms–与P1_0连接的电机20ms–中断持续时间----------------------------------------一共是23ms如果你想使机器人运行一段确定的时间,可以计算如下:脉冲数量=时间/0.023秒=时间/0.023假如你想让电机运行3秒,计算如下
7、:脉冲数量=3/0.023=130现在,你可以将for循环中作如下修改,程序如下任务二计数并控制循环次数•一个电机正向旋转3秒,另一个电机同时的反向旋转3秒。for(counter=1;counter<=130;i++){P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);}该你了:1.使电机向一个方向旋转3秒,然后反向旋转?2.如何减速?3.如何实现以一个轮子为支点旋转?
此文档下载收益归作者所有