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

合集下载

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

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

基于51单片机的智能搬运机器人系统设计基于51单片机的智能搬运机器人系统设计包括以下几个方面:1. 硬件设计:a. 机器人底盘:选择适合搬运任务的底盘结构,如四轮驱动或履带式底盘。

b. 传感器:选择合适的传感器,如红外线传感器、超声波传感器、编码器等,用于感知环境、测量距离和速度等。

c. 电机驱动:选择合适的电机驱动模块,用于控制底盘的运动。

d. 通信模块:添加无线通信模块,如蓝牙或Wi-Fi模块,用于与上位机或其他设备进行通信。

e. 电源管理:设计合适的电源管理电路,确保机器人系统的稳定供电。

2. 软件设计:a. 系统控制:使用51单片机的编程语言(如C语言)编写控制程序,实现机器人的基本运动控制、路径规划和避障等功能。

b. 传感器数据处理:编写程序读取传感器数据,并进行数据处理和分析,以获取环境信息。

c. 通信协议:设计合适的通信协议,实现机器人与上位机或其他设备的数据交互。

d. 状态监测与反馈:编写程序实现机器人状态的监测与反馈,如电池电量监测、运动状态监测等。

3. 系统功能设计:a. 路径规划:根据预设的目标位置和环境信息,设计路径规划算法,使机器人能够自主选择最优路径进行搬运任务。

b. 避障功能:基于传感器数据,设计避障算法,使机器人能够自主避开障碍物,确保安全运行。

c. 自主充电功能:设计机器人自主充电功能,当电池电量低于一定阈值时,机器人能够自动返回充电桩进行充电。

d. 远程控制功能:通过无线通信模块,实现机器人的远程控制,使用户可以通过上位机或移动设备对机器人进行控制和监控。

以上是基于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单片机智能机器人实验报告智能机器人实验报告电子稿实验一教你的机器人“走路”一、要求与目的熟悉机器人用于走路的“脚”,要教你的机器人学会走路,同时你要掌握控制机器人走路的基本方法。

二、内容1、机器人为什么会“走”要想让机器人移动,就要控制电机的转动。

控制机器人“行走”的基本指令是motor(x,y)函数和drive(x,y)函数。

2、驱动电机的函数通过JC程序控制电机转动,使机器人行走的指令有两个,它们是motor(x,y)函数和drive(x,y)函数,介绍:一、motor(x,y)函数此函数是“启动”电机,x取值1、2,分别表示左右两个电机;y表示电机转速两个电机同时以相同速度启动,意味着什么?机器人将怎样运动?答:机器人将直走。

进一步讨论:如果将一侧电机速度改为0,机器人将会怎样运动?(顺时针、逆时针旋转)答:左侧电机速度为零,则逆时针旋转;反之,则顺时针旋转。

实验题一:让机器人顺时针、逆时针旋转(1)用vjc语言或者流程图让能力风暴顺时针走直径约1米的圆形路径;程序:void main(){while(1){motor( 1 , 80 );motor( 2 , 20 );}stop();}(2)用vjc语言或者流程图让能力风暴逆时针走约1米立方的正方形路径;程序:void main(){while(1){drive( 100 ,0);wait( 1.000000 );stop();motor( 1 , -20 );motor( 2 , 20 );wait( 0.500000 );stop();}}实验题二:首先机器人前进2秒,之后机器人逆时针旋转1.8秒,然后机器人前进1秒,最后停下来。

小结:motor函数主要是实现旋转。

实验代码:Void main(){Drive(60,0);Wait(2.000000);Stop();Drive(0,-60);Wait(1.800000);Stop();Drive(80,0);Wait(1.000000);Stop();}二、drive(x,y)函数此函数是“直行”,x表示基准速度,y表示左右电机与基准速度的差。

基于单片机的工业机器人控制器设计

基于单片机的工业机器人控制器设计

基于单片机的工业机器人控制器设计摘要:随着工业自动化的不断发展,工业机器人在生产领域的应用越来越广泛。

而工业机器人的控制系统是整个系统的关键部分,其中单片机作为控制器的核心部件起着至关重要的作用。

本文主要介绍了一种基于单片机的工业机器人控制器设计方案,以及相关的硬件和软件设计。

设计方案中采用了先进的单片机芯片作为控制器的核心,结合相关外围模块和传感器实现了工业机器人在生产中的各项功能。

在软件设计方面,通过对控制算法的优化和相关模块的编程实现了工业机器人的精确控制和复杂任务的执行。

该设计方案在实际应用中具有较高的可靠性和灵活性,能够满足不同生产场景下的工业机器人控制需求。

1.引言工业机器人是指在工业生产中用于替代人工完成物料搬运、零部件装配、焊接、喷涂等工作的自动化设备。

随着工业化程度的不断提升,工业机器人的应用范围逐渐扩大,已经成为现代工业生产不可或缺的一部分。

工业机器人的控制系统是其核心部分,决定了机器人的性能和功能,而单片机作为控制器的核心部件,其设计质量和性能对整个系统的稳定性和可靠性具有重要影响。

2.1 控制器选型在工业机器人控制器的设计中,单片机的选型是至关重要的。

对于工业机器人来说,其控制系统需要具备高性能、高可靠性和较大的扩展性,因此在选用控制器的时候需要考虑这些因素。

本设计方案中选用了一款性能较为优异的32位单片机芯片作为控制器的核心,该芯片具备较高的运算速度和较大的存储空间,同时支持多种外设接口和通信接口,可以满足工业机器人在生产中的各项需求。

2.2 外围模块设计除了单片机芯片之外,工业机器人控制器还需要配备各种外围模块,包括驱动模块、传感器模块、通信模块等。

驱动模块用于控制机器人的各个执行机构,需要提供足够的功率和精确的控制能力;传感器模块用于获取机器人在生产中的各项参数,如位置、速度、力等;通信模块则用于和上位机或其他设备进行数据交换和控制指令的传输。

在本设计方案中,针对不同的外围模块,设计了相应的电路和接口,确保其能够和单片机芯片进行稳定可靠的通信和数据交换。

四足机器人设计方案书

四足机器人设计方案书

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

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

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

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

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

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

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

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

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

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

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

4. 能爬斜坡。

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

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

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

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

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

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

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

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

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

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

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

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

基于C51单片机设计的机器人

基于C51单片机设计的机器人
答辩记录表
学生姓名:学号:班级:ቤተ መጻሕፍቲ ባይዱ
答辩地点:J523实验室
答辩内容记录:
答辩成绩
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
答辩小组成员(签字):
年月日
成绩评定表
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。
4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。
Keywords:Embedded systems;AT89C51; Sensor; The ring car

嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如小车上的一个小型的电机,当接收到某种信号时启动电机。基于AT89C51芯片的单片机与多种传感器和舵机的组合设计成的擂台小车就是一个嵌入式系统,通过传感器检测到的数据来做出判断,以执行各种命令,实现擂台格斗的功能。传感器是一种将非电量转换为电量信号的检测装置,灵活的运用它,可以赋予小车感知能力。
3.应用C语言的各种知识;
4.学习编程技术和技巧
条件:
每人一套“C51+AVR版两轮教育机器人套件“
任务:
设计擂台机器人,在规定的场地内活动,搜索对手,找到对手,并将对手推出场地。

四足机器人运动及稳定控制关键技术综述

四足机器人运动及稳定控制关键技术综述

四足机器人运动及稳定控制关键技术综述目录一、内容概览 (2)1. 四足机器人概述 (3)2. 研究背景与意义 (4)3. 研究现状和发展趋势 (5)二、四足机器人运动原理及结构 (7)1. 四足机器人运动原理 (8)1.1 动力学模型建立 (9)1.2 运动规划与控制策略 (10)2. 四足机器人结构组成 (11)2.1 主体结构 (13)2.2 关节与驱动系统 (14)2.3 感知与控制系统 (17)三、四足机器人运动控制关键技术 (19)1. 运动规划算法研究 (20)1.1 基于模型预测控制的运动规划算法 (21)1.2 基于优化算法的运动规划策略 (22)2. 稳定性控制策略研究 (23)2.1 静态稳定性控制策略 (25)2.2 动态稳定性控制策略 (26)3. 路径规划与轨迹跟踪控制技术研究 (27)3.1 路径规划算法研究 (28)3.2 轨迹跟踪控制策略设计 (29)四、四足机器人稳定控制实现方法 (31)1. 基于传感器反馈的稳定控制方法 (32)1.1 传感器类型与布局设计 (34)1.2 传感器数据采集与处理技术研究 (35)2. 基于优化算法的稳定控制方法应用探讨 (37)一、内容概览四足机器人运动机制:阐述四足机器人的基本运动模式,包括行走、奔跑、跳跃等,以及不同运动模式之间的转换机制。

稳定性分析:探讨四足机器人在运动过程中的稳定性问题,包括静态稳定性和动态稳定性,以及影响稳定性的因素。

运动控制关键技术:详细介绍四足机器人运动控制的关键技术,包括运动规划、轨迹跟踪、力控制等,以及这些技术在实现机器人稳定运动中的应用。

传感器与感知技术:介绍四足机器人运动及稳定控制中涉及的传感器与感知技术,包括惯性测量单元(IMU)、激光雷达、视觉传感器等,以及这些技术在机器人运动控制中的作用。

控制算法与策略:探讨四足机器人运动及稳定控制中常用的控制算法与策略,包括基于模型的控制、智能控制方法等,以及这些算法在实际应用中的效果。

  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();}。

相关文档
最新文档