C51单片应用与C语言程序设计第三章.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 C语言函数与机器人巡航控制 深圳市鸥鹏科技有限公司 黄曦 2009.3.21 摘要 任务一 基本巡航动作 任务二 匀加速/减速运动 任务三 用函数调用简化运动程序 任务四 高级主题――用数组建立复杂运动 字符型数据 数组 switch语句 工程素质和技能归纳 科学精神的培养 任务一 基本巡航动作 向前巡航,持续时间为3秒。 源程序请参照教材第37页RobotForwardThreeSeconds.c 原理: 输出相应的脉冲序列,使左侧电机逆时针旋转,右侧电机顺时针旋转。程序反复执行130次,需要3秒时间,机器人也向前运动3秒。 尝试调节距离和速度。 尝试通过调节高电平脉宽,从而调节机器人的运动方向。 任务一 基本巡航动作 命令组合,让机器人向前走、左转、右转和向后走。 源程序请参照教材第39页的ForwardLeftRightBackward.c。 尝试1个轮子不动,另一个轮子全速旋转,从而以一个轮子为支点,原地旋转。 源程序请参照教材第41页。 任务二 匀加速/减速运动 编程目的:使机器人的运动更平稳,增长电机的寿命。 编程原理:电机控制信号高电平宽度为1500微秒,如要顺时针加速,则delay_nus()的参数从1500逐渐减小到1300,如要逆时针旋转,则从1500逐渐增大到1700。脉宽变得越快,加/减速的效果就更明显。 任务二 匀加速/减速运动 例程:电机速度逐渐增加到全速然后逐步减小的实现。 源代码参照教材第43页的StartAndStopWithRamping.c 尝试更改变量pulseCount的变化值,调节加速度或减速度。 尝试更改变量pulseCount的变化上限,调节加速或减速的持续时间。 任务三 用函数调用简化运动程序 C语言提供了强大的函数定义功能。一个C程序就是由一个主函数和若干个其它函数构成,由主函数调用其它函数,其它函数也可以相互调用。同一个函数可以被一个或多个函数调用任意多次。 无论机器人要执行何种动作,都离不开前面讨论的各种基本动作。为了各种应用程序方便使用这些基本动作程序,你可以将这些基本动作放在函数中,供其它函数调用来简化程序。 任务三 用函数调用简化运动程序 函数的种类 从函数的定义来看: 标准函数,即库函数,由集成开发环境提供。 用户自定义函数,解决自己的专门需要。 从函数有无返回值来看: 有返回值函数。 无返回值函数。 从主调函数和被调函数来看: 无参数函数。 有参数函数。 任务三 用函数调用简化运动程序 函数的形式: 其中类型标识符和函数名称为函数头。 类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。函数名是由用户定义的标识符。 函数名后有一个括号(不可少写),若函数无参数,则括号内可不写内容或写“void”;若有参数,则形式参数列表给出各种类型的变量,各参数之间用逗号间隔。 {}中的内容称为函数体。函数体中的声明部分,是对函数体内部用到的变量的类型说明。 在很多情况下都不要求函数有返回值,此时函数类型符可以写为void。 任务三 用函数调用简化运动程序 main函数是不能被其它函数调用的,那它的返回值类型int是怎么回事呢? 其实不难理解,main函数执行完之后,它的返回值是给操作系统的。虽然在main函数体内并没有什么语句来指出返回值的大小,但系统默认的处理方式是:当main函数成功执行,它的返回值为1;否则为0。 任务三 用函数调用简化运动程序 下边的Forward函数可以使机器人向前运动1.5秒。该函数是无形参、无返回值的函数,没有太大的使用价值。 任务三 用函数调用简化运动程序 给前面一页的Forward函数增加脉冲数和速度等两个参数,从而可以灵活的设置这些参数,让函数成为一个真正有用的模块。 任务三 用函数调用简化运动程序 注释:在函数定义的下方,有一行注释,提醒我们使用该函数的时候,速度是在0到200之间。 除“//”外,C语言还提供了另一种语句注释符——“/*”和“ */”。 “/*”和“*/”必须成对使用,在它们之间的内容将被注释掉。它的作用范围比“//”大:“//”仅仅对它所在的一行起注释作用;但“/*…*/”可以对多行注释。 注释是你在学习程序设计时要养成的良好习惯。 任务三 用函数调用简化运动程序 完整的使用向前、左转、右转和向后四个函数的例程。 源码参照教材第48页的MovementsWithFuncitons.c 该例程的效果与任务1的ForwardLeftRightBackward.c产生的效果是一致的。 在该程序中,除了main函数以外,其他的四个函数代表了四个方向,具有相同的形参——脉冲个数和速度参数。这四个函数的功能是可以集成在同一个函数中的。

文档评论(0)

wcc543543 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档