【ch03】循环程序设计-让机器人动起来_第1页
【ch03】循环程序设计-让机器人动起来_第2页
【ch03】循环程序设计-让机器人动起来_第3页
【ch03】循环程序设计-让机器人动起来_第4页
【ch03】循环程序设计-让机器人动起来_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器人程序设计(C语言)新工科建设之路·机器人技术与应用系列循环程序设计一让机器人动起来第三章C51单片机的输入/输出接口控制机器人运动的伺服电机以不同速度运动是通过单片机的输入/输出(I/O)接口输出不同脉冲序列来实现的。C51系列单片机有4个8位的并行I/O接口:P0、P1、P2和P3。AT89S52引脚:AT89S52有44根引脚,其中32根是I/O端口引脚,如图3-1所示。其中有29根具备两种用途(用圆括号写出),既可作为I/O端口,也可作为控制信号或地址及数据线。单灯闪烁控制01为了验证P1接口的输出电平是不是由你编写的程序控制,可以采用一个非常简单的办法,就是在想验证的接口引脚上接一个发光二极管。当输出高电平时,发光二极管灭;输出低电平时,发光二极管亮。单灯闪烁控制单灯闪烁控制LED电路元器件(1)红色发光二极管,2个。(2)470Ω电阻,2个。单灯闪烁控制LED电路搭建在搭建电路前先认识面包板。教学板前端,那块白色的、有许多孔或插座的区域称为无焊料的面包板。面包板连同它三边黑色插孔称为原型区域,如图3-2所示。单灯闪烁控制LED电路搭建单灯闪烁控制LED电路搭建在面包板插孔插上元器件,如本任务用到的电阻、LED灯,就可以构成本书例程的电路。元器件靠面包板插孔彼此连接。单灯闪烁控制LED电路搭建面包板上共17列插孔,列与列之间互不相通。整个面包板通过中间槽分为两块,它们之间的插座互不相通。每一小列由5个插孔组成,这5个插孔在面包板上是电气相连的。单灯闪烁控制现在按照图3-3所示电路,在教学板的面包板上搭建起实际电路。LED电路搭建单灯闪烁控制图3-3所示的电路原理图指引你如何连接电路元器件,使用唯一的符号来表示不同的元器件。这些器件符号用细线相连,表示它们是电气相连的。在电路原理图中,当两个器件符号用细线相连时,表示它们之间是电气连接的。细线还可以将元器件和电压端口连接。LED电路搭建单灯闪烁控制图3-4为元器件电路符号与实际元器件的对应图。元器件符号图的上方就是该元器件的零件图。LED电路搭建单灯闪烁控制LED电路搭建根据图3-3实际搭建好的电路参考图3-5所示。单灯闪烁控制LED电路搭建实际搭建电路时应注意:确认发光二极管的短针脚(阴极)插入面包板,通过电阻与P10相连。确认发光二极管的长针脚(阳极)插入"+5V"插口,这里+5V就是电路图上的Vcc。单灯闪烁控制HighLowLed.c是如何工作的与第1章程序相比,本例程多使用了一个头文件BoeBot.h,其中定义了两个延时函数;voiddelay_nms(unsignedinti)和voiddelay_nus(unsignedinti)。单灯闪烁控制修饰符unsigned放到int前面,指定后面的变量为无符号数。如果加上修饰符signed,则指定是“有符号数”。如果既不指定signed,也不指定为unsigned,则隐含为有符号(signed)。实际上,signed是可以省略的。无符号整型数据unsignedint单灯闪烁控制单片机端口引脚信号随时间的变化可以用时序图来描述,一个端口引脚的时序图反应的是其高、低电压信号与时间的变化关系图。时序图简介机器人伺服电机控制信号02机器人伺服电机控制信号图3-8所示是高电平持续1.5ms,低电平持续20ms,然后不断重复地控制脉冲序列。该脉冲序列发给经过零点标定后的伺服电机,伺服电机不会旋转。如果此时电机旋转,那么表明电机需要标定。机器人伺服电机控制信号由图3-8、图3-9和图3-10可知,控制电机运转速度的是高电平持续的时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转;当高电平持续时间1.7ms时,电机逆时针全速旋转。按照任务1中给单片机微控制器编程,使P1端口的两个引脚(P1_0和P1_1)控制两个LED灯闪烁,重新给单片机编程,就可以给这两个引脚发出伺服电机的控制信号。机器人伺服电机控制信号机器人伺服电机控制信号按照图3-12所示的伺服电机与教学板的连接原理图和实际接线图,将两个电机的连接线连接到教学板上。具体连接时,注意将P1_0引脚的控制输出用来控制右边的伺服电机,P1_1则用来控制左边的伺服电机。机器人伺服电机控制信号机器人伺服电机控制信号单片机编程发给伺服电机的高、低电平信号必须具备更精确的时间。机器人伺服电机控制信号用下面的程序片段代替例程HighLowLed.c中相应的程序片段,编译、连接、执行代码,观察连接到P1_0脚的机器人轮子是不是逆时针全速旋转。计数并控制循环次数03计数并控制循环次数for语句最方便的控制一段代码执行次数的方法是利用for循环,语法如下:for(表达式1;表达式2;表达式3)语句计数并控制循环次数for语句它的执行过程如下:(1)求解表达式1。(2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行第(3)步;若其值为假(0),则结束循环,转到第(5)步。(3)求解表达式3。(4)转回第(2)步继续执行。(5)循环结束,执行for语句下面的一个语句。计数并控制循环次数for语句for语句最简单的应用形式,也就是最易理解的形式如下:for(循环变量赋初值;循环条件;循环变量增/减值)语句计数并控制循环次数自增和自减C语言有两个很有用的运算符-—自增和自减,即“++”和“_”。运算符“艹”是操作数加1,而“-”是操作数减1。换句话说:“x=x+1”同“x++”,“x=x-1”同“x—”。计数并控制循环次数for循环控制电机的运行时间下面是for循环的例子,它会使电机运行几秒钟。用计算机来控制机器人的运动04用计算机来控制机器人的运动scanf()函数scanf()函数与printf()函数对应,在C语言库的stdio.h中定义。它的一般形式如下:scanf("格式控制字符串",地址列表);用计算机来控制机器人的运动scanf()函数程序运行结果如图3-13所示。①输出“ProgramRunning!”和“Pleaseinputpulsenumber:”。②程序处于等待状态,等待输入数据。③在发送区(显示窗口下面的窗口)输入数据并回车,然后单击“发送”按钮,将数据发送给变量PulseNumber。④scanf()函数收到数据后,执行下面的语句,输出“Pleaseinputpulseduration:”。⑤处于等待状态。用计算机来控制机器人的运动scanf()函数程序运行结果如图3-13所示。⑥在发送区再输入数据,然后单击“发送”按钮,将数据发送给变量PulseDuration。⑦程序接收到两个数据后执行剩余的程序,让伺服电机运转。用计算机来控制机器人的运动scanf()函数用计算机来控制机器人的运动工程素质和技能归纳本章涉及的主要技能①C51系列单片机的引脚定义和分布。②用C51单片机的P1端口的位输出控制单灯和双灯闪烁,时序图的概念,while循环的引入和延时函数的使用。③机器人伺服电机的控制脉冲序列,通过给C51编程让其输出这些控制脉冲序列。④自增运算符的使用。⑤for循环的使用以控制机器人的运动。⑥如何通过串口输入数据控制机器人的运动。用计算机来控制机器人的运动科学精神的培养①比较BS2微控制器与C51单片机微控制器输入、输出接口的使用方法。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论