第3讲:第二章--单片机输出接口与伺服电机控制
发布时间:2021-06-05
发布时间:2021-06-05
机器人课程第3章
第二章
单片机输出接口与 伺服电机控制
深圳市德普施科技有限公司 DEPUSH SHENZHEN DEPUSH.TECHLONOGY CO.,LTD 单片机输出接口与机器人伺服电机控制
Slide 1
机器人课程第3章
本讲摘要● C51单片机的输入/输(I/O)出接口I/O口的主要作用
● 单灯闪烁控制unsigned int及while循环控制语句
● 机器人伺服电机控制零点标定 控制电机正反转
● 电机循环控制for循环控制语句
● 用计算机控制机器人运动scanf格式输入函数
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 2
机器人课程第3章
C51单片机的输入/输出接口输入/输出(I/O)接口是单片机和外部设备之间信息交换和控制的桥梁。 它主要有以下几个作用: 1.实现和不同外部设备的速度匹配 1.实现和不同外部设备的速度匹配 不同的外设工作速度差别很大,而且一般来讲外设的响应速度远远小 于CPU的运算速度。所以接口电路就必须适应CPU和外设的速度上的这个矛盾。 2.改变数据传送的方式 2.改变数据传送的方式 I/O数据有并行和串行两种方式。 3.按照需要为CPU提供更多资源, RAM和 3.按照需要为CPU提供更多资源,如RAM和ROM 按照需要为CPU提供更多资源 4.改变信号的性质和电平 4.改变信号的性质和电平 CPU和外设之间的信号有几类:数据型(程序代码和计算结果等)、 状态型(反映外设的工作状态,如启动、忙、空闲等)和控制 控制型(控制外设的 控制 工作状态,如外设的开和关、电机的转动和停止、速度的控制等)。单片机输出接口与机器人伺服电机控制
DEPUSH
Slide 3
机器人课程第3章
C51单片机的输入/输出接口51系列单片机有4个8位的并行I/O口:P0、P1、P2和P3。既可作为普通的 I/O口、也可用作特殊功能。
AT89S52引脚I/O定义图DEPUSH 单片机输出接口与机器人伺服电机控制
Slide 4
机器人课程第3章
单灯闪烁控制LED电路搭建 LED电路搭建●确保LED的短针脚(阴极、负极)通过电阻与P1_0相连 ●确保LED的长针脚(阳极、正极)插入“VCC”接口
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 5
机器人课程第3章
单灯闪烁控制例程: 例程:HighLowLed.c建立项目HighLowLed,输入并保存以下程序,查看运行结果。(过程参考第一章)#include<BoeBot.h> #include<uart.h> int main(void) { uart_Init();//初始化串口 printf("The LED connected to P1_0 is blinking!\n"); while(1) { P1_0=1; // P1_0输出高电平 delay_nms(500); //延时500ms P1_0=0; // P1_0输出低电平 delay_nms(500); //延时500ms } }DEPUSH 单片机输出接口与机器人伺服电机控制
Slide 6
机器人课程第3章
单灯闪烁控制头文件: 头文件:BoeBot.h该头文件中定义了两个延时函数: (1)delay_nms(unsigned int n); 毫秒级延时 delay_nms(unsigned delay_nms( (2)delay_nus(unsigned int n); 微秒级延时 delay_nus(unsigned delay_nus( unsigned int
:无符号整型类型 int unsigned int 16 16 长度(单位 ) 长度(单位bit) 范围 -32768~+32767 0~+65535
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 7
机器人课程第3章
单灯闪烁控制while语句 while语句while语句是一种循环控制语句。 在实际问题中,常常需要进行大量的重复处理,循环结构可以使我们只写很少的语 句,而让计算机反复执行,从而完成大量类同的计算。 while语句是当型循环控制语句,一般形式为:
While(表达式 语句; 表达式) While(表达式) 语句;语句部分称为循环体,当需要执行多条语句时,应使用复合语句(使用“{}”)。 while语句的特点是:先判断表达式值,后执行,若条件不成立,则跳出循环,执 行下面语句。
其它循环控制语句do...while语句 for语句
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 8
机器人课程第3章
单灯闪烁控制
时序图—— 时序图——反应高、低电压信号与时间的关系图 ——
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 9
机器人课程第3章
机器人伺服电机控制信号伺服电机的安装
伺服电机实物图
伺服电机与教学底板的连线原理图和实际接线示意图
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 10
机器人课程第3章
机器人伺服电机控制信号零点标定信号—— 零点标定信号——使电机停止转动 ——
while(1) { P1_0=1; //P1_0输出高电平 delay_nus(1500); //延时1.5ms P1_0=0; //P1_0输出低电平 delay_nus(20000); //延时20ms }
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 11
机器人课程第3章
机器人伺服电机控制信号测试伺服电机while(1) { P1_0=1; delay_nus(1300); P1_0=0; delay_nus(20000); } while(1) { P1_0=1; delay_nus(1700); P1_0=0; delay_nus(20000); }DEPUSH
1.3 ms的控制脉冲序列使电机顺时针全速旋转
1.7 ms的连续脉冲序列使电机逆时针全速旋转 Slide 12
单片机输出接口与机器人伺服电机控制
机器人课程第3章
计数并控制循环次数在实际的机器人控制过程中,经常要求机器人运动一段给定的距离或者 一段固定的时间。
for循环控制语句 循环控制语句for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已 知循环次数的情况。它的一般形式为:
for(表达式1;表达式2;表达式3) 语句 for(表达式1;表达式2;表达式3) 表达式1;表达式2;表达式
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 13
机器人课程第3章
计数并控制循环次数for(表达式1;表达式2;表达式3) 语句 for(表达式1;表达式2;表达式3) 表达式1;表达式2;表达式表达式1:给控制变量赋初值; 表达式2:循环控制条件; 表达式3:给控制变量增量或减量; 语句:循环体,当有多条语句时,必须使用复合语句(“{ }”)。 语句执行过程: 首先计算表达式1,然后计算表达式2,若表达式2为真
,则执行循环体; 否则,退出for循环,执行for循环后面的语句。 如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计 算表达式2,依此循环,直至表达式2的值为假,退出循环。
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 14
机器人课程第3章
计数并控制循环次数使用for循环语句,控制电机运行: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,而“--”是操作数减1,即: “x=x+1;”等同于“x++”; “x=x-1;”等同于“x--;”
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 15
机器人课程第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.7ms(左电机,与P1_1相连) +1.3ms(右电机,与P1_0相连) +20ms(延时时间) =23ms 总共运行时间:130 X 0.023s = 3sDEPUSH 单片机输出接口与机器人伺服电机控制
Slide 16
机器人课程第3章
计数并控制循环次数例程: 例程:BothServosThreeSeconds.c用以下两个for循环语句代替HighLowLed.c中的while循环语句。for(counter=1;counter<=130;counter++) for(counter=1;counter<=130;counter++) { P1_1=1;delay_nus(1700);P1_1=0; P1_0=1;delay_nus(1300);P1_0=0; delay_nms(20); } } { P1_1=1;delay_nus(1300);P1_1=0; P1_0=1;delay_nus(1700); P1_0=0; delay_nms(20);
执行程序,观察机器人是否向一个方向运行3秒钟后又反射运行3秒钟。
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 17
机器人课程第3章
用计算机控制机器人运动在第一章中你已经知道C51单片机可以通过串口向计算机调试终端发送信息, 该任务将使用串口由你从计算机向单片机发送数据来控制机器人的运动。
scanf函数 scanf函数scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指 定的变量之中。它的一般形式为: scanf(“格式控制字符串”,地址表列); scanf(“格式控制字符串” 地址表列); 格式控制字符串 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 也就是不能显示提示字符串,即要求以%开关。 地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。 如&PulseNumber表示变量PulseNumber的地址,这个地址是编译系统在内存中给变 量分配的地址,用户不需要关心具体地址是多少。例如: scanf(“%d”,&PulseNumber);将把用户输入的整数赋给变量PulseNumber
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 18
机器人课程第3章
用计算机控制机器人运动例程: 例程:ControlServoWithComputer
.cprintf(“Program Running!\n”); printf("Please input pulse number:\n"); scanf("%d",&PulseNumber); printf("Please input pulse duration:\n"); scanf("%d",&PulseDuration); for(Counter=1;Counter<=PulseNumber;Counter++) { …… delay_nus (PulseDuration); …… }
DEPUSH
单片机输出接口与机器人伺服电机控制
Slide 19
上一篇:10.3摄影光圈快门14
下一篇:《普通心理学试题及答案