基于51单片机的四足机器人

合集下载

一种基于单片机的四足步行机器人设计及步态研究.

一种基于单片机的四足步行机器人设计及步态研究.

一种基于单片机的四足步行机器人设计及步态研究周晓东,汤修映,农克俭中国农业大学工学院,北京(100083E-mail:摘要 :本论文通过对四足动物结构及其行走步态的研究, 设计制作了一台四足步行机器人样机, 按照多足步行机器人行走的稳定性原则, 设计出了慢走和对角小跑两种步态的具体过程,并采用单片机作为控制系统,实现了这两种步态,实验证明,所设计的步态具有良好的稳定性。

关键词:四足机器人;步态;慢走;对角小跑中图法分类号:TP2421. 引言步行机器人是一种腿式移动机构, 具有轮式、履带式等移动机器人所不具备的优点, 该类机器人能够在复杂的非结构环境中稳定地行走, 代替人完成许多危险作业, 被广泛地应用于军事运输、矿山开采、核能工业、星球表面探测、消防及营救、建筑业、农业及森林采伐、示教娱乐等众多行业。

因此, 长期以来, 多足步行机器人技术一直是国内外机器人领域研究的热点之一 [1][2]。

而四足机器人具有实现静态步行的最少腿数 [3],也适合于动态步行,以实现高速移动,因此,对四足步行机器人的研究,具有特殊的重要性。

本文以四足爬行动物为模仿对象, 通过对其结构和步态的分析和研究, 设计出了一台四足步行机器人, 采用单片机控制系统,使其能够模仿四足动物的慢走、对角小跑等步态。

2. 四足步行机构总体结构设计与自由度2.1步行机构总体结构分析图 1为所设计的四足步行机器人总体结构示意图, 由图可知, 该机构由四条腿及机体组成,每条腿的结构完全相同,在各主动驱动关节(膝关节、臀关节、髋关节上分别装有直1踝关节 2小腿 3膝关节 4大腿 5臀关节6髋关节 7机体 8控制系统电路板图 1 总体结构示意图Fig.1 The sketch of the overall configuration流电机,整个机体上共装有 12个独立的驱动电机。

而被动关节(踝关节采用球铰链结构, 脚底部粘上胶皮以增大和地面的摩擦力, 同时可对脚与地面之间的撞击起到缓冲作用, 小腿和大腿组成平面连杆机构, 它们均可以绕着自身的关节轴在一定的角度范围内摆动, 而整条腿又可以绕着髋关节转动。

基于51单片机的智能搬运机器人系统设计

基于51单片机的智能搬运机器人系统设计

基于51单片机的智能搬运机器人系统设计智能搬运机器人系统是一种能够根据预先设置的路径和任务,自主完成物品搬运的机器人系统。

本文将以51单片机为基础,设计一个简单的智能搬运机器人系统。

1. 系统架构设计:智能搬运机器人系统的基本架构由以下几个部分组成:- 外设控制模块:包括传感器模块、执行机构模块等。

传感器模块用于感知环境和物品状态,执行机构模块用于实现机器人的运动和搬运动作。

- 控制中心:由51单片机控制。

负责接收和处理传感器模块的数据,生成相应的控制信号,控制机器人的运动和搬运动作。

- 电源管理模块:包括电池管理模块、电源转换模块等。

负责为机器人供电,并保证各个模块的稳定工作。

2. 传感器模块设计:传感器模块的设计是智能搬运机器人系统的基础。

常用的传感器包括红外线传感器、超声波传感器、接近开关等。

这些传感器可以用于检测障碍物、测量距离、检测物品状态等。

3. 执行机构模块设计:执行机构模块的设计用于实现机器人的运动和搬运动作。

常用的执行机构包括直流电机、步进电机等。

直流电机可以用于机器人的运动控制,步进电机可以用于机器人的准确定位和精确搬运。

4. 控制算法设计:控制算法是智能搬运机器人系统的核心。

通过传感器模块获取的环境和物品信息,结合机器人的当前状态,控制中心根据预先设置的路径和任务,生成相应的控制信号,控制机器人的运动和搬运。

常用的控制算法包括PID算法、模糊控制算法等。

5. 路径规划设计:为了完成预先设置的路径和任务,机器人需要进行路径规划。

路径规划算法可以根据机器人的当前位置和目标位置,计算出最佳的路径。

常用的路径规划算法包括最短路径算法、A*算法等。

6. 人机交互界面设计:为了方便操作和监控机器人的运行状态,可以设计一个人机交互界面。

人机交互界面可以通过LCD显示屏、按键等方式实现。

通过人机交互界面,用户可以设置机器人的路径和任务,监控机器人的运行状态。

7. 电源管理模块设计:电源管理模块用于为机器人供电,并保证各个模块的稳定工作。

四足机器人方案设计书

四足机器人方案设计书

浙江大学“海特杯”第十届大学生机械设计竞赛“四足机器人”设计方案书“四足机器人”设计理论方案自从人类发明机器人以来,各种各样的机器人日渐走入我们的生活。

仿照生物的各种功能而发明的各种机器人越来越多。

作为移动机器平台,步行机器人与轮式机器人相比较最大的优点就是步行机器人对行走路面的要求很低,它可以跨越障碍物,走过沙地、沼泽等特殊路面,用于工程探险勘测或军事侦察等人类无法完成的或危险的工作;也可开发成娱乐机器人玩具或家用服务机器人。

四足机器人在整个步行机器中占有很大大比重,因此对仿生四足步行机器人的研究具有很重要的意义。

所以,我们在选择设计题目时,我们选择了“四足机器人”,作为我们这次比赛的参赛作品。

一.装置的原理方案构思和拟定:随着社会的发展,现代的机器人趋于自动化、高效化、和人性化发展,具有高性能的机器人已经被人们运用在多种领域里。

特别是它可以替代人类完成在一些危险领域里完成工作。

科技来源于生活,生活可以为科技注入强大的生命力,基于此,我们在构思机器人的时候想到了动物,在仔细观察了猫.狗等之后我们找到了制作我们机器人的灵感,为什么我们不可以学习小动物的走路呢,于是我们有了我们机器人行走原理的灵感。

为了使我们所设计的机器人在运动过程中体现出特种机器人的性能及其运动机构的全面性,我们在构思机器人的同时也为它设计了一些任务:1. 自动寻找地上的目标物。

2. 用机械手拾起地上的目标物。

3.把目标物放入回收箱中。

4. 能爬斜坡。

图一如图一中虚线所示的机器人的行走路线,机器人爬过斜坡后就开始搜寻目标物体,当它发现目标出现在它的感应范围时,它将自动走向目标,同时由于相关的感应器帮助,它将自动走进障碍物中取出物体。

二.原理方案的实现和传动方案的设计:机器人初步整体构思如上的图二和图三,四只腿分别各有一个电机控制它的转动,用一个电机驱动两条腿的抬伸。

根据每只腿的迈步先后实现机器人的前进,后退,左转和右转,在机器人腿迈出的同时,它也会相应地进行抬伸,具体实现情况会在下文详细说明。

基于AT89C51单片机设计的简易智能机器人

基于AT89C51单片机设计的简易智能机器人

基于AT89C51单片机设计的简易智能机器人引言随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。

这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。

1 设计思想与总体方案1.1 简易智能机器人的设计思想本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。

同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线间的距离,最后能停在指定地点,显示出整个运行过程的时间。

1.2 总体设计方案和框图本设计以A T89C5l单片机作为检测和控制核心。

采用红外光电传感器检测路面黑线及障碍物,使用金属传感器检测路面下金属铁片,应用光电码盘测距,用光敏电阻检测、判断车库位置,利用PWM(脉宽调制)技术动态控制电动机的转动方向和转速。

通过软件编程实现机器人行进、绕障、停止的精确控制以及检测数据的存储、显示。

通过对电路的优化组合,可以最大限度地利用51单片机的全部资源。

P0口用于数码管显示,P1口用于电动机的PWM驱动控制,P2,P3口用于传感器的数据采集与中断控制。

这样做的优点是:充分利用了单片机的内部资源,降低了总体设计的成本。

该方案总体方案见图1。

2 系统的硬件组成及设计原理此系统的硬件部分由单片机单元、传感器单元、电源单元、声光报警单元、键盘输入单元、电机控制单元和显示单元组成,如图2所示。

2.1 单片机单元本系统采用A T89C51单片机作为中央处理器。

其主要任务是扫描键盘输入的信号启动机器人,在机器人行走过程中不断读取传感器采集到的数据,将得到的数据进行处理后,根据不同的情况产生占空比不同的PWM脉冲来控制电机,同时将相关数据送显示单元动态显示,产生声光报警信号。

以MCS—51单片机为核心研制的四脚步行机器人分布...

以MCS—51单片机为核心研制的四脚步行机器人分布...

以MCS—51单片机为核心研制的四脚步行机器人分布...刘多伟
【期刊名称】《电讯技术》
【年(卷),期】1990(030)002
【摘要】本文描述一个四脚步行机器人的微处理器分布式实时控制系统,介绍系统的主从分布式松耦合结构.该系统采用了2只8088CPU,一只8087协处理器和14只8031单片机.文中设计了一个系统管理员来负责整个系统的时序控制,用C写的系统管理程序具有移植性好和执行速度快的特点.而松耦合的任务处理器则根据系统管理员的指令来执行特定的算法.本文将首先介绍把整个系统控制分解为一组单独执行的任务(即电机伺服)的方法,然后重点讨论基于8031单片机的全数字式直流伺服系统的设计以及步行机的实时控制等问题.模块化设计、并行处理、数字化和分布控制技术使得整个控制系统的性能和可靠性均得到了提高.
【总页数】6页(P71-76)
【作者】刘多伟
【作者单位】无
【正文语种】中文
【中图分类】TP242
【相关文献】
1.基于Protues仿真的MCS-51单片机教学实践与探讨--利用仿真软件解决MCS-51单片机教学中常见的问题 [J], 侯俊才;杨蜀秦
2.基于MCS-51单片机的智能机器人迷宫车设计 [J], 李雪霞;何扣芳
3.基于四脚支持的四足机器人斜面步行研究 [J], 王利利;张磊
4.基于增强型MCS-51单片机的可避障竞步机器人控制系统设计 [J], 陆宽; 蒋善超
5.基于Intel 8088微处理器和MCS-51单片机的四脚步行机器人分步式控制系统[J], 刘多伟
因版权原因,仅展示原文概要,查看原文内容请购买。

四足机器人设计方案书

四足机器人设计方案书

浙江大学“海特杯”第十届大学生机械设计竞赛“四足机器人”设计方案书“四足机器人”设计理论方案自从人类发明机器人以来,各种各样的机器人日渐走入我们的生活。

仿照生物的各种功能而发明的各种机器人越来越多。

作为移动机器平台,步行机器人与轮式机器人相比较最大的优点就是步行机器人对行走路面的要求很低,它可以跨越障碍物,走过沙地、沼泽等特殊路面,用于工程探险勘测或军事侦察等人类无法完成的或危险的工作;也可开发成娱乐机器人玩具或家用服务机器人。

四足机器人在整个步行机器中占有很大大比重,因此对仿生四足步行机器人的研究具有很重要的意义。

所以,我们在选择设计题目时,我们选择了“四足机器人”,作为我们这次比赛的参赛作品。

一.装置的原理方案构思和拟定:随着社会的发展,现代的机器人趋于自动化、高效化、和人性化发展,具有高性能的机器人已经被人们运用在多种领域里。

特别是它可以替代人类完成在一些危险领域里完成工作。

科技来源于生活,生活可以为科技注入强大的生命力,基于此,我们在构思机器人的时候想到了动物,在仔细观察了猫.狗等之后我们找到了制作我们机器人的灵感,为什么我们不可以学习小动物的走路呢,于是我们有了我们机器人行走原理的灵感。

为了使我们所设计的机器人在运动过程中体现出特种机器人的性能及其运动机构的全面性,我们在构思机器人的同时也为它设计了一些任务:1. 自动寻找地上的目标物。

2. 用机械手拾起地上的目标物。

3.把目标物放入回收箱中。

4. 能爬斜坡。

图一如图一中虚线所示的机器人的行走路线,机器人爬过斜坡后就开始搜寻目标物体,当它发现目标出现在它的感应范围时,它将自动走向目标,同时由于相关的感应器帮助,它将自动走进障碍物中取出物体。

二.原理方案的实现和传动方案的设计:机器人初步整体构思如上的图二和图三,四只腿分别各有一个电机控制它的转动,用一个电机驱动两条腿的抬伸。

根据每只腿的迈步先后实现机器人的前进,后退,左转和右转,在机器人腿迈出的同时,它也会相应地进行抬伸,具体实现情况会在下文详细说明。

基于单片机的仿生四足机器人设计与实现

基于单片机的仿生四足机器人设计与实现

基于单片机的仿生四足机器人设计与实现
徐永前;马西沛;程晓舟;熊绍托;黄友权
【期刊名称】《产业与科技论坛》
【年(卷),期】2024(23)9
【摘要】仿生四足机器人有着广泛的应用和研究价值,它可用于运输、作为机械宠物、辅助工人工作或代替人类在某些特殊环境下进行作业。

而对生物行为的模拟,
也可能让我们发现某些机械结构所具备的运动和力学优势,并将这些仿生机械结构
应用到更多领域。

本仿生四足机器人采用全肘式腿型配置,大腿由舵机直接带动其
旋转;小腿的运动则采用空间四杆机构,通过杠杆的方式使其摆动。

步态选择为对角
步态,单片机采用英飞凌TC264。

仿生四足机器人还装有陀螺仪,用于感知运动姿态。

为了方便发送指令和查看反馈数据,该仿生四足机器人除板载按键以外,还配有无线
转串口模块和蓝牙模块两种通讯模块。

【总页数】3页(P36-38)
【作者】徐永前;马西沛;程晓舟;熊绍托;黄友权
【作者单位】上海工程技术大学机械与汽车工程学院;上海工程技术大学继续教育
学院
【正文语种】中文
【中图分类】TP2
【相关文献】
1.基于STC单片机的仿生六足机器人设计
2.基于单片机的六足仿生机器人设计
3.基于单片机的四足智能机器人设计与实现
4.基于STM32的四足仿生机器人控制系统设计与实现
5.基于STM32单片机的四足仿生蜘蛛机器人控制系统设计
因版权原因,仅展示原文概要,查看原文内容请购买。

基于单片机的四足仿生机械狗设计

基于单片机的四足仿生机械狗设计

构稳定性,可改装为钢板等其它材1-4:仿生机械狗四足结构;5:电机;6:控制平台图1机械结构件设计的控制芯片是51单片机,具有很很小。

系统主要以传感器和输入输出部分包括电机、显示屏。

电源容量电池来供电,能够提供足够动电机转动和系统运作,系统机带。

振电路如图2所示。

图2晶振电路1.2复位电路部分设计其复位部分是由外部复位电路实现,接在单片RST引脚上,需要手动按下复位按键。

采用可充的电池来作为电源部分,提供动力。

的如图3所示。

图3复位电路2.2电机控制电路设计这里采用的是直流电机,当单片机输出为1时,继电器得电。

电机工作这里面得电源也是接可充电得电池。

其中三极管是为了增加电机的启动电压。

其输入基金项目:安徽新华学院2016年度省级新训练项目《四足仿生机械狗设计》(AH201612216051)。

63Science&Technology Vision科技视界端接在P1.0引脚,如图4所示。

图4电机电路电源部分本系统采用可充电的大容量电池来供电,能够提供足够的电压以及电流来驱动电机转动和系统运作。

2.3传感器及显示电路设计以单片机为核心,通过温度传感器DS18B20对当前温度的检测送到单片机进行处理与系统设定温度的比较,控制主电路双向晶闸管的导通与关断,接在单片机的P3.7引脚上,如图5所示。

图5传感器电路系统显示电路采用1602液晶屏进行显示,主要对温度数据进行显示,处理后的数据和设定阈值,均通过送单片机P0.0到P0.7口连接的显示电路以显示当前温度,如图6所示3程序设计由于基本功能比较简单,系统应用了AT89C51类型的单片机,因为能耗低,操作简单易学,其基本功能也满足机器人的需求。

本系统主要功能有:电机转动、图6显示器电路图7主程序流程图图8温度传感器子程序流程图2子程序当子程序检测到信号用子程序,首先进行初始化时序,然后发出读温度令,读出数据,最后子程序返回。

如图8所示。

结论通过构建自由度少的械结构来支撑整体框架,需要的驱动力较小,能够稳的进行行走。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学期末考试试卷开/闭卷开卷A/B卷N/A课程编号13032700011303270002 课程名称EDA技术与实践(2) 学分2、0命题人(签字) 审题人(签字) 2015 年10 月20 日设计考试题目:完成一个集成电路或集成系统设计项目基本要求: 2-3位同学一组, 完成一个完整的集成电路设计项目或就是一个集成系统设计项目。

规格说明:1.题目自定。

1)集成电路设计项目i.若为IC设计项目需要完成IC设计的版图。

ii.若采用FPGA实现数字集成电路设计,需要进行下板测试。

2)集成系统设计项目,需使用FPGA开发板或嵌入式开发板,完成一个完整的集成系统作品。

3)作品需要课堂现场演示,最后提交报告,每个小组单独一份报告,但需阐述各个成员的工作。

2.评分标准:2015年第二学期,建议作品内容:•完成一个行走机器人,基本要求o2-8只脚o能行走o可以用单片机,嵌入式,FPGA方案一、设计目的:通过设计一个能够走动的机器人来增加对动手能力,与对硬件电路设计的能力,增强软件流程设计的能力与对设计流程实现电路功能的能力,在各个方面提升自己对电子设计的能力。

二、设计仪器与工具:本设计就是设计一个能走动的机器人,使用到的仪器与工具分别有:sg90舵机12个、四脚机器人支架一副、单片机最小系统一个、电容电阻若干、波动开关一个、超声遥控模块一对、杜邦线若干、充电宝一个。

三、设计原理:本次设计的机器人就是通过51单片机控制器来控制整个电路的。

其中,舵机的控制就是通过产生一个周期为20毫秒的高电平带宽在0、5到2、5ms 之间的pwm信号来控制。

12路Pwm信号由单片机的定时器来产生。

51单片机产生12路pwm信号的原理就是:以20毫秒为周期,把这20毫秒分割成8个2、5ms,因为,每个pwm信号的高电平时间最多为2、5ms,然后在前六个2、5ms中分别输出两个pwm信号的高电平,例如,在第一个2、5ms 中输出第一个与第二个pwm信号的高电平时,首先开始时,把信号S1、S2都置1,然后比较两个高电平时间,先定时时间短的高电平时间,把高电平时间短的那个信号置0,再定时两个高电平时间差,到时把高电平时间长的按个信号置0,然后,定时(2、5-较长那个高电平时间),在第二个2、5ms开始时,把S3、S4置1,接下来与上面S1、S2一样,以此类推,在六个2、5ms 中输出12路pwm信号来控制舵机。

原理图如图1、通过超声模块来控制机器人前进、后退、向前的左转、向前的右转、向后的左转、向后的右转几个动作。

控制模块电路,D0,D1,D2,D3分别为超声接受模块的输出,输出为高电平,要加NPN作为开关。

四、设计步骤:1、设计好硬件电路,焊接51单片机的最小系统与各个硬件电路。

2、设计好软件的流程图,如图2。

3、写产生12路控制舵机的pwm信号的程序并在proteus中测试,如图3。

4、设计出行走步态,四脚机器人的步态就是采用对角的相互前进来实现的,如图4。

5、写出流程图中各个模块的软件,包括前进函数、后退函数、左转与右转的函数,并逐个烧到单片机中测试。

6、按流程图把各个函数组合到主函数中,完成所有软件的编写,并烧到单片机中测试,并不断的调试。

图2、流程图图3、在proteus里测试并调试pwm信号初始状态:先迈一对脚迈另一对并另一对支撑身体前进图4,行走步态五、遇到的问题及解决:1、此设计的pwm信号输出使用定时器来产生每个信号的高电平与低电平,每次定时时间到,都会会关掉定时器并执行中断函数,在此过程中会消耗一定的时间,等到给定时器赋值下一次定时时间并开始定时时,就会产生一定的时间延时,造成每次高电平时间都会变长一点,且总的加起来会使20ms周期变长,因此,需要稍微减小高电平的定时时间,并结合proteus仿真确定最准确值。

2、由于机器人的四个脚都就是自己组装的,可能会有存在不平衡与对称,当对角的两只脚同时向前迈同一个角度时,会使机器人向一个方向偏转而不沿直线前进,这时要结合实际测试来调整机器人的各个脚的前迈角度来使机器人平衡的沿直线前进,比如,一只脚迈多点,另一边的脚迈少点。

六、心得与体会:通过这次设计,我更加的熟悉基本的硬件电路与软件的设计,特别就是软件的流程图设计。

更加熟悉软硬件电路结合的测试与调试。

六、实验实物图:设计代码:#include<reg51、h>#define uchar unsigned char#define uint unsigned intuint pwm[12],p_min1,p_max1,p_min2,p_max2,p_min3,p_max3,p_min4,p_max4,p_min5,p_max5, p_min6,p_max6,p1,p2,p3,p4,p5,p6,p11,p21,p31,p41,p51,p61;//高电平带宽sbit s0=P2^0;//12路输出信号sbit s1=P2^1;sbit s2=P2^2;sbit s3=P2^3;sbit s4=P2^4;sbit s5=P2^5;sbit s6=P2^6;sbit s7=P2^7;sbit s8=P0^6;sbit s9=P0^4;sbit s10=P0^2;sbit s11=P0^0;sbit up=P1^0;sbit right=P1^4;sbit left=P1^2;sbit down=P1^6;uchar s_num,f,b,r,l,back_flag;forward_flag;void back();//后退void forward(); //前进void back_right(); //后右转、前左转void back_left(); //后左转、前右转void scan_key();//遥控监控void labor_init();//机器人的初始状态void delay(uint i) //延时函数,延时一秒{uint j;for(i;i>0;i--)for(j=110;j>0;j--);}void init(void)//中断初始函数{TMOD=0x01;TR0=1;ET0=1;EA=1;}void rate(uint p[12])//pwm的排序函数{p_min1=(p[0]<=p[1]?(p[0]):(p[1]))-40;p_max1=p[0]>p[1]?(p[0]):(p[1]);p_min2=(p[2]<=p[3]?p[2]:p[3])-64;p_max2=p[2]>p[3]?p[2]:p[3];p_min3=(p[4]<=p[5]?p[4]:p[5])-64;p_max3=p[4]>p[5]?p[4]:p[5];p_min4=(p[6]<=p[7]?p[6]:p[7])-64;p_max4=p[6]>p[7]?p[6]:p[7];p_min5=(p[8]<=p[9]?p[8]:p[9])-64;p_max5=p[8]>p[9]?p[8]:p[9];p_min6=(p[10]<=p[11]?p[10]:p[11])-64;p_max6=p[10]>p[11]?p[10]:p[11];p1=p_max1-p_min1-21;p2=p_max2-p_min2-42;p3=p_max3-p_min3-42;p4=p_max4-p_min4-42;p5=p_max5-p_min5-42;p6=p_max6-p_min6-42;p11=2400-p_max1;p21=2400-p_max2;p31=2400-p_max3;p41=2400-p_max4;p51=2400-p_max5;p61=15500-p_max6;TH0=-p_min1/256;TL0=-p_min1%256;s_num=0;s0=1;s1=1;init();}void scan_key(){if(P1!=0xff){delay(5);if(up==0){f=0;}if(down==0)b=0;if(right==0)r=0;if(left==0)l=0;}}void time0() interrupt 1 //中断产生12路pwm信号{TR0=0;switch(s_num){case 0:if(pwm[0]<=pwm[1]){if(pwm[0]==pwm[1]){s0=0;s1=0;s_num++;TH0=-(p1-0)/256;TL0=-(p1-0)%256;break;} elses0=0;}elses1=0;TH0=-p1/256;TL0=-p1%256;s_num++;break;case 1:if(pwm[0]>pwm[1])s0=0;elses1=0;TH0=-p11/256;TL0=-p11%256;s_num++;break;case 2:s2=1;s3=1;TH0=-p_min2/256;TL0=-p_min2%256;s_num++;break;case 3:if(pwm[2]<=pwm[3]){if(pwm[2]==pwm[3]){s2=0;s3=0;s_num++;TH0=-p2/256;TL0=-p2%256;break;}elses2=0;}elses3=0;TH0=-p2/256;TL0=-p2%256;s_num++;break;case 4:if(pwm[2]>pwm[3])s2=0;elses3=0;TH0=-p21/256;TL0=-p21%256;s_num++;break;case 5:s4=1;s5=1;TH0=-p_min3/256;TL0=-p_min3%256;s_num++;break;case 6:if(pwm[4]<=pwm[5]){if(pwm[4]==pwm[5]){s4=0;s5=0;s_num++;TH0=-p3/256;TL0=-p3%256;break;} elses4=0;}elses5=0;TH0=-p3/256;TL0=-p3%256;s_num++;break;case 7:if(pwm[4]>pwm[5])s4=0;elses5=0;TH0=-p31/256;TL0=-p31%256;s_num++;break;case 8:s6=1;s7=1;TH0=-p_min4/256;TL0=-p_min4%256;s_num++;break;case 9:if(pwm[6]<=pwm[7]){if(pwm[6]==pwm[7]){s6=0;s7=0;s_num++;TH0=-p4/256;TL0=-p4%256;break;} elses6=0;}elses7=0;TH0=-p4/256;TL0=-p4%256;s_num++;break;case 10:if(pwm[6]>pwm[7])s6=0;elses7=0;TH0=-p41/256;TL0=-p41%256;s_num++;break;case 11:s8=1;s9=1;TH0=-p_min5/256;TL0=-p_min5%256;s_num++;break;case 12:if(pwm[8]<=pwm[9]){if(pwm[8]==pwm[9]){s8=0;s9=0;s_num++;TH0=-p5/256;TL0=-p5%256;break;} elses8=0;}elses9=0;TH0=-p5/256;TL0=-p5%256;s_num++;break;case 13:if(pwm[8]>pwm[9])s8=0;elses9=0;TH0=-p51/256;TL0=-p51%256;s_num++;break;case 14:s10=1;s11=1;TH0=-p_min6/256;TL0=-p_min6%256;s_num++;break;case 15:if(pwm[10]<=pwm[11]){if(pwm[10]==pwm[11]){s10=0;s11=0;s_num++;TH0=-p6/256;TL0=-p6%256;break;}elses10=0;}elses11=0;TH0=-p6/256;TL0=-p6%256;s_num++;break;case 16:if(pwm[10]>pwm[11])s10=0;elses11=0;TH0=-p61/256;TL0=-p61%256;s_num++;break;case 17:s0=1;s1=1;s_num=0;TH0=-p_min1/256;TL0=-p_min1%256;break;}scan_key();TR0=1;}void motor_init1()//给所有信号都设高电平时间为1、5毫秒{uchar i;for(i=0;i<12;i++)pwm[i]=1500;}void labor_init()//机器人的初始状态{motor_init1();l=1;f=1;r=1;b=1;back_flag=0;forward_flag=0;rate(pwm);//delay(200);while(1){if(r==0){r=1;back_right();}if(l==0){l=1;back_left();}if(f==0){f=1;forward();}if(b==0){b=1;back();}}}void back(){back_flag=1;forward_flag=0;motor_init1();pwm[8]=pwm[8]+300;pwm[9]=pwm[9]-250;pwm[2]=pwm[2]+150;pwm[3]=pwm[3]-150;pwm[7]=pwm[7]+50;//pwm[0]=pwm[0]-80;//pwm[5]=pwm[5]+80;//pwm[11]=pwm[11]-30;rate(pwm);delay(500);pwm[3]=pwm[3]+320;pwm[8]=pwm[8]-200;pwm[4]=pwm[4]+600;pwm[5]=pwm[5]+600;pwm[6]=pwm[6]+600;pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600;pwm[5]=pwm[5]-600;pwm[6]=pwm[6]-600;pwm[7]=pwm[7]-600;rate(pwm);delay(300);while(1){if(r==0){r=1;back_right();}if(l==0){l=1;back_left();}if(f==0){f=1;forward();}if(b==0)b=1;pwm[3]=pwm[3]-320;pwm[8]=pwm[8]+200;pwm[2]=pwm[2]-270;pwm[9]=pwm[9]+320;pwm[1]=pwm[1]-600;pwm[0]=pwm[0]-600;pwm[10]=pwm[10]-600;pwm[11]=pwm[11]-600;rate(pwm);delay(300);pwm[1]=pwm[1]+600;pwm[0]=pwm[0]+600;pwm[10]=pwm[10]+600;pwm[11]=pwm[11]+600;rate(pwm);delay(500);pwm[2]=pwm[2]+270;pwm[9]=pwm[9]-320;pwm[3]=pwm[3]+320;pwm[8]=pwm[8]-200;pwm[4]=pwm[4]+600;pwm[5]=pwm[5]+600;pwm[6]=pwm[6]+600;pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600;pwm[5]=pwm[5]-600;pwm[6]=pwm[6]-600;pwm[7]=pwm[7]-600;rate(pwm);delay(500);if(P1!=0xff)forward();}}void back_right(){motor_init1();pwm[8]=pwm[8]+50;pwm[9]=pwm[9]-50;//pwm[2]=pwm[2]+150;//pwm[3]=pwm[3]-150;pwm[7]=pwm[7]+100;//pwm[0]=pwm[0]-80;//pwm[5]=pwm[5]+80;//pwm[11]=pwm[11]-30; rate(pwm);delay(300);pwm[3]=pwm[3]-70;pwm[8]=pwm[8]-70;pwm[4]=pwm[4]+600; pwm[5]=pwm[5]+600; pwm[6]=pwm[6]+600; pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600; pwm[5]=pwm[5]-600; pwm[6]=pwm[6]-600; pwm[7]=pwm[7]-600;rate(pwm);delay(300);while(1){if(r==0){if(back_flag==1){r=1;back_right();}if(forward_flag==1){r=1;back_left();}}if(l==0){if(back_flag==1){l=1;back_left();}if(forward_flag==1){l=1;back_right();}}if(f==0){f=1;forward();}if(b==0){b=1;back();}pwm[3]=pwm[3]+70; pwm[8]=pwm[8]+70; pwm[2]=pwm[2]-70; pwm[9]=pwm[9]-70; pwm[1]=pwm[1]-600; pwm[0]=pwm[0]-600; pwm[10]=pwm[10]-600; pwm[11]=pwm[11]-600; rate(pwm);delay(300);pwm[1]=pwm[1]+600; pwm[0]=pwm[0]+600;pwm[10]=pwm[10]+600;pwm[11]=pwm[11]+600;rate(pwm);delay(500);pwm[2]=pwm[2]+70;pwm[9]=pwm[9]+70;pwm[3]=pwm[3]-70;pwm[8]=pwm[8]-70;pwm[4]=pwm[4]+600;pwm[5]=pwm[5]+600;pwm[6]=pwm[6]+600;pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600;pwm[5]=pwm[5]-600;pwm[6]=pwm[6]-600;pwm[7]=pwm[7]-600;rate(pwm);delay(300);}}void back_left(){motor_init1();pwm[8]=pwm[8]+50;pwm[9]=pwm[9]-50;//pwm[2]=pwm[2]+150;//pwm[3]=pwm[3]-150;pwm[6]=pwm[6]+50;pwm[7]=pwm[7]+100;//pwm[0]=pwm[0]-80;//pwm[5]=pwm[5]+80;//pwm[11]=pwm[11]-30; rate(pwm);delay(300);pwm[3]=pwm[3]+70;pwm[8]=pwm[8]+70;pwm[4]=pwm[4]+600; pwm[5]=pwm[5]+600; pwm[6]=pwm[6]+600; pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600; pwm[5]=pwm[5]-600; pwm[6]=pwm[6]-600; pwm[7]=pwm[7]-600;rate(pwm);delay(300);while(1){if(r==0){if(back_flag==1){r=1;back_right();}if(forward_flag==1){r=1;back_left();}}if(l==0){if(back_flag==1){l=1;back_left();}if(forward_flag==1){l=1;back_right();}}if(f==0){f=1;forward();}if(b==0){b=1;back();}pwm[3]=pwm[3]-70; pwm[8]=pwm[8]-70; pwm[2]=pwm[2]+70; pwm[9]=pwm[9]+70; pwm[1]=pwm[1]-600; pwm[0]=pwm[0]-600; pwm[10]=pwm[10]-600; pwm[11]=pwm[11]-600; rate(pwm);delay(300);pwm[1]=pwm[1]+600; pwm[0]=pwm[0]+600;pwm[10]=pwm[10]+600;pwm[11]=pwm[11]+600;rate(pwm);delay(500);pwm[2]=pwm[2]-70;pwm[9]=pwm[9]-70;pwm[3]=pwm[3]+70;pwm[8]=pwm[8]+70;pwm[4]=pwm[4]+600;pwm[5]=pwm[5]+600;pwm[6]=pwm[6]+600;pwm[7]=pwm[7]+600;rate(pwm);delay(300);pwm[4]=pwm[4]-600;pwm[5]=pwm[5]-600;pwm[6]=pwm[6]-600;pwm[7]=pwm[7]-600;rate(pwm);delay(300);}}void forward(){forward_flag=1;back_flag=0;motor_init1();pwm[2]=pwm[2]-150;pwm[3]=pwm[3]+220;pwm[8]=pwm[8]+10;pwm[11]=pwm[11]-20; rate(pwm);delay(500);pwm[3]=pwm[3]-300; pwm[8]=pwm[8]+300; pwm[4]=pwm[4]+600; pwm[5]=pwm[5]+600; pwm[6]=pwm[6]+600; pwm[7]=pwm[7]+600; rate(pwm);delay(300);pwm[4]=pwm[4]-600; pwm[5]=pwm[5]-600; pwm[6]=pwm[6]-600; pwm[7]=pwm[7]-600; rate(pwm);delay(300);while(1){if(r==0){r=1;back_left();}if(l==0){l=1;back_right();}if(b==0){b=1;back();}if(f==0)f=1;pwm[3]=pwm[3]+300; pwm[8]=pwm[8]-300; pwm[2]=pwm[2]+300; pwm[9]=pwm[9]-280; pwm[1]=pwm[1]-600; pwm[0]=pwm[0]-600; pwm[10]=pwm[10]-600; pwm[11]=pwm[11]-600; rate(pwm);delay(300);pwm[1]=pwm[1]+600; pwm[0]=pwm[0]+600; pwm[10]=pwm[10]+600; pwm[11]=pwm[11]+600; rate(pwm);delay(500);pwm[2]=pwm[2]-300; pwm[9]=pwm[9]+280; pwm[3]=pwm[3]-300; pwm[8]=pwm[8]+300; pwm[4]=pwm[4]+600; pwm[5]=pwm[5]+600; pwm[6]=pwm[6]+600; pwm[7]=pwm[7]+600; rate(pwm);delay(300);pwm[4]=pwm[4]-600; pwm[5]=pwm[5]-600; pwm[6]=pwm[6]-600; pwm[7]=pwm[7]-600; rate(pwm);delay(500);if(P1!=0xff)back();}}void main(void){labor_init();}。

相关文档
最新文档