资源描述
基于单片机控制的双足行走机器人设计摘 要:21世纪机器人发展日新月异,从传统的履带式机器人到如今的双足行走机器人,机器人的应用范围越来越广。本系统以单片机(STC89c52)为系统的中央控制器,以单片机(STC12c5410ad)为舵机控制模块。将中央控制器与舵机控制器,舵机,各类传感设备及受控部件等有机结合,构成整个双足行走机器人,达到行走、做动作的目的。单片机中央控制器与舵机控制器以串口通信方式实现。系统的硬件设计中,对主要硬件舵机控制器和STC89C52单片机及其外围电路进行了详细的讲述。硬件包括舵机控制器,STC12C5410AD 单片机,按键,各种传感器和数据采集与处理单元。软件包括单片机初始化、主程序、信号采集中断程序、通过串口通讯的接收和发送程序。论文的最后部分以双足行走机器人为基础,结合传感器,外围控制设备组成控制系统,并给出了此系统应用领域的一些探讨和研究。关键词:单片机; 舵机控制; STC12C5410ADBipedal robot design based on MCUAbstract:In the 21st century robot development changes with each passing day, from the traditional crawler robot to now bipedal robot, the robots application scope is more and more widely.This system by single chip microcomputer (STC89c52) as the central controller in the system, STC12c5410ad MCU as the steering gear control module. The central controller and the servo controller, Steering gear, all kinds of sensing and control components such as organic combination, make up the whole bipedal robot, the purpose of to walk, do the action.Single chip microcomputer central controller and the servo controller to realize serial communication way.System hardware design, the main hardware servo controller and STC89C52 single-chip microcomputer and peripheral circuit in detail. Hardware including servo controller, STC12C5410AD micro controller, buttons, all kinds of sensor and data acquisition and processing unit. Software includes MCU initialization, the main program, and interrupts program signal collection, through a serial port communication to send and receive procedures. The last part of the paper on the basis of bipedal robot, combined with the sensor, the peripheral control device of control system, this system is also given some discussions and research in the field of application.Keywords: MCU; Servo Control; STC12C5410AD目 录第一章 绪论11.1 课题背景11.2 课题研究的目的及意义21.3 系统设计主要任务3第二章 系统方案设计42.1机器人自由度选择42.2机器人结构的设计42.3驱动方案选型42.4系统总体设计5第三章 系统硬件电路设计63.1单片机控制模块63.2 舵机控制模块73.3 传感器模块电路设计83.4 按键电路设计93.5 机器人电源及通信系统设计9第四章 系统软件设计114.1程序流程图114.2控制流程图124.3动作数据采集124.4数据库的建立13第五章 系统整机调试及功能测试145.1 舵机控制控制模块调试145.2 舵机调试145.3 红外传感设备调试155.4 按键测试155.5 整机调试15第六章 设计总结及技术展望16参考文献17附录18第一章 绪论1.1 课题背景1920年捷克斯洛伐克作家卡佩克写了一本小说叫罗萨姆的机器人万能公司。他幻想并做了一个不吃不喝,不知疲倦的机器人罗伯特(Robot)帮助人们进行工作。人们在产生天天劳动,简单枯燥,于是人们幻想有一种代替人进行工作的机器,这便是罗伯特出现的理由1。机器人其实是个自动化装置,他仍然是机器,但是他能够模仿人完成某些特定的工作。为什么要发展机器人技术?简单的说是有三方面原因:1、干人不愿干的事。2、把人从有毒,有害,危险的环境中解放出来。3、保证工作的效率和准确性。人会累,机器不会。这变相的提高了生产力,解放了劳动力。随着时代的发展,机器人技术也是日新月异,从传统的履带式机器人到如今的双足行走机器人,机器人的应用范围越来越广。机器人作为科技产物,如今已经给人们提供了越来越多的方便,他们可以做人类无法做到的事情,也可以代替人去做一些危险的工作。两足直立行走机器人是未来机器人的发展方向。相比较传统的履带式机器人,它们可以更好的,更方便的为人类服务,模仿人类两足行走的特性可以到达更多传统机器人无法到达的地方。双足机器人不但拥有开阔的工作空间,并且对步行环境要求很低,能适应于各类地面且具有较高的夸越障碍的能力,其步行性能是别的步行结构无法比较的2。研究双足行走机器人具有重要的意义。仿人双足步行是生物界难度最高的步行动作,但其步行性能却是其它步行结构所无法比拟的。双足步行机器人是工程上少有的高阶、非线性、非完整约束的多自由度系统3。给予了对机器人的运动学、动力学及控制理论的研究一个非常理想的实验平台4。此外,双足步行机器人的研究还可以促进仿生学、人工智能、计算机图形、通信等相干学科的发展。机器人技术是科学技术发展的一个综合结果,是社会经济发展的起到重要影响的一门学科。是发展生产力的必然需求。一个国家的机器人技术可以衡量一个国家综合技术水平,发展机器人技术是未来的必然趋势。双足仿人行走机器人更是重中之重。通过研究制作双足行走机器人我们能够更好的认识双足行走机器人,了解其特点,这将为以后的发展,研究打下坚实的基础。1.2 课题研究的目的及意义世界著名机器人专家,日本早稻田大学加藤一教授说过:“步行应当是机器人具有的最大特征之一,步行的移动方式是其他运动方式无法比拟的,具有很大的优越性5”。1.2.1步行的优越性机器人的移动方式分为履带式、轮式、步行等方式。轮式和履带式机器人虽然在平坦的路面表现很优秀,但是他们一旦到了泥泞、松软的土地上进行移动是就会收到很大的阻碍,而步行的方式就不会存在这一问题。步行能适应更多,更复杂的路况,例如:上楼梯、跨越障碍等。我们生活的地球有很多地方不适合轮式或者履带式机器人行动,但是我们的星球上有那么多步行的动物存在,包括我们人类,可见步行应该是自然进化过程中最适合移动的一种方式,是其他行动方式无法比拟的。1.2.2双足步行机器人的优越性步行机器人又很多,包括和蜘蛛一样的八脚机器人、小一点的四脚或者六脚机器人,以及本课题研究的双足机器人。与其他机器人相比,双足机器人灵活性更好,适应环境能力更强。能够方便的上下台阶,通过窄路面等。并且步行的方式占地面积小,更灵活,在此基础上更容易搭载短小紧凑的机械手臂。这是其他步行方式无法比拟的。1.2.3双足行走研究的意义在步行方式中两足步行是最为复杂、自动化水平最高的动态系统。本课题以对两足行走机器人的行走控制为目的,来研究两足机器人的行走过程6。通过对外界环境的判断让机器人处理一些简单的应变。为机器人在以后更为复杂的工作环境稳定工作打下基础。研究双足步行机器人的另外一重要意义就是为了更好的了解人类和其他动物的行走机理,这样在将来可以为下肢瘫痪者提供较理想的假肢7。再者,研究动物行走方式和研究步行机器人是双向互惠的。正确的理解动物行走机理,可以反过来更有效地指导步行机器人的研究和开发8。因此,双足步行机器人的研制具有十分重大的价值和意义。1.3 系统设计主要任务本文利用舵机控制器与单片机STC89C52和各类传感设备及受控部件、支架设计制作的一款机器人行走控制系统。系统的设计包括:系统硬件的设计与调试和控制软件的编写与调试。 1.3.1硬件部分 双足行走机器人系统其硬件部分主要由五大部分构成:(1)控制单元。单片机STC89C52是系统中控制部分关键的元件,它与控制单元组成控制部分功能。负责整个机器行动的方式,以及处理外部环境变化的,改变机器人行走路线的任务。(2) 舵机控制模块。主芯片为STC12C5410AD,模块与控制单元进行串口通信从而达到控制信息的传输。舵机控制模块通过接收控制信息来产生控制舵机的PWM波形。从而实现行走控制。(3) 传感器数据采集系统。利用传感器采集信息,为机器人提供准确的外部环境数据。控制单元通过接收的外部信息来改变控制信号,来让机器人产生行动变化。(4) 受控部件。通过控制舵机,通过精确的角度变化让机器人完成行走的基本目的。其主要受控于舵机模块。通过PWM波控制。(5) 支架。组成机器人的躯干,搭载机器人全部电子器件。 1.3.2 软件部分 软件设计部分主要由三大部分构成:(1)数据采集与数据分析部分。即通过单片机对数据进行实时的采集与处理。通过分析采集到的数据来产生控制机器人的处理信息,从而实现机器人的实时控制的目的9。(2)串口通信部分。两个系统通过串口进行通信,是控制单元和舵机控制模块的主要通信方式,两个模块间良好的通信才能完成系统的设计。(3)分析控制部分。根据采集的信息让系统判断外部环境,并做出相应的对策。这样可以避免机器人在行走过程中的危险,保护机器人的安全,稳定。第二章 系统方案设计基于目前已有的成熟方案,我选择用单片机STC89SC52为主控制芯片,选用STC12C5410AD为核心的舵机控制器,并结合传感器来组成这个系统。系统预留扩展I/O口可用于扩展语音控制芯片等。以STC12C5410AD为核心的舵机控制板拥有大量的舵机借口10,可方便日后扩展手臂功能。2.1机器人自由度选择步行机器人的行走必须依赖于关节,关节越多越灵活,其控制过程也就越复杂。人体的关节大约有400多个自由度。通过分析我们得知实现机器人步行的自由度最少是4个。其控制数据量适中。方便系统调试,顾选择4自由度机器人作为设计的框架,在此基础上进行设计。这4个自由度分别为2个髋关节和2个踝关节。简单的4个关节就能实现基本的行走目的,节约了成本也减少了开发的时间。2.2机器人结构的设计双足行走机器人其基本条件就是有两条腿,我们分别为这2条腿安装一个髋关节和一个踝关节,再通过搭载一个简易的平台来固定两条腿,并搭载所以电子设备,这样就基本形成了一个双足机器人的模样。由于本系统选用的MCU(Micro Control Unit)的速率限制,无法为机器人提供一个很好的平衡算法硬件条件。故装上两个大脚板,来保持行走过程中的平衡问题。这是一中最简单的、成本最故障率最低的实现平衡的方式。2.3驱动方案选型目前主流机器人的驱动方式大致分为气压驱动,液压驱动和电机驱动。气压驱动虽然动作快,但是稳定性不好,比较难控制。液压驱动力矩大,响应速度也比较快,但是成本非常高,很重。而且上述两种方案一般是在大型设备中使用的,并不使用于本系统的小型设计需求,故采用电机驱动。电机种类也比较多,但是大多数都很难做到精确控制,本系统采用的舵机具有非常好的可控制性。精确度度、响应速度也基本能够满足设计的需要。目前的双足机器人也大多采用这种方式。舵机是一种价格低、精度高、安全性能良好、易于维修的一种特殊的伺服电机。最早是用在航空模型的控制上面。通过PWM波来控制转动角度,这更加方便与单片机的编程和实际使用。2.4系统总体设计机器人总体设计如下图所示。从上到下看分别是红外传感器、主控制芯片、舵机控制芯片、外围电路、电池、机器人双足。并且在机器人主控板上预留接口来安装扩展使用的语言控制模块。四个舵机相当于四个关节,这样就完成了机器人的整体系统设计。整体系统设计见图1图1 基于双足行走机器人系统总框图第三章 系统硬件电路设计系统硬件电路包括单片机中央控制器、舵机控制单元、传感器模块、扩展功能I/O口,整体的电路设计简约,可靠性强。硬件设计简图如图2图2 总硬件设计简图3.1单片机控制模块采用STC89C52单片机。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,STC89C52使用经典的MCS-51内核,8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口11。基本满足控制及串口通信要求。本设计使用单片机的P3.0和P3.1串口通信口实现单片机和舵机控制模块的通信,使用P1.0、P1.1、P1.2这三个I/O口来检测按键指令,使用P0.0口来检测红外传感器信号,预留P2.1、P2.2、P2.3三个预留I/O作为语音控制扩展I/O口,方便实现语音控制功能。其他I/O口暂时没有用到,故不接线,方便日后扩展使用。3.2 舵机控制模块选用STC12C5410AD单片机。拥有32PWM波输出功能,可以同时对32个舵机进行任意角度的控制。使用灵活、高效,扩展性强。该模块具有TTL电平串口,可方便的与主控芯片进行通信。该舵机控制模块有相对应的上位机控制软件,可以方便的和电脑进行通信,来采集数据。通信时采用9600波特率,8位数据,1位停止位,进行通信。本舵机模块拥有独立的舵机供电电源输入,不和单片机共用一路电源。这样既可以保证单片机的工作稳定,也利于舵机的动力输出。舵机控制器主芯片图如图3图3 舵机控制模块主芯片图3.3 传感器模块电路设计系统采用红外光传感器来判断机器人前方是否有障碍物,当检测到前方有障碍物时,通知MCU做出相对应的指令。传感器连接到单片机I/O口,单片机通过读取I/O口的电平来判断传感器传来的信息。红外光传感器就像机器人的眼睛,可以让机器人看到前方的事物。红外传感器是一种非常常用的传感器,其结构简单,调节方便,供电电压和单片机类似,可直接与单片机I/O口连接,是一种非常易用的传感模块。红外传感器电路图如图4图4 红外传感器电路图3.4 按键电路设计本系统使用按键来控制机器人是最为方便,直接的一种方式。系统设计三个按键对应三条不同指令来告诉机器人需要做什么,使机器人做出相应的动作。按键直接接I/O口接地,并联的电容可以代替RS触发器来起到去除按键抖动的作用。由于此处按键不是采用AD采样的方式进行读取,因此不必考虑按键本身的电阻对操作的影响。按键电路如图5图5 按键电路图3.5 机器人电源及通信系统设计整个机器人在设计时由于牵涉到2个MCU,1个传感器,4个舵机等大量用电设备,所以必须需要可靠的电源系统。本设计采用的电池为7.4V锂电池,通过2块DC-DC转换器分别给舵机模块和单片机模块供电。由于舵机用电电压需要6.5V左右,可能导致舵机模块和单片机模块串口电平不一。因此采用两个2N7002 MOS管组成串口通信电路,该电路主要应用与不同电平MCU通信。下图中,MCU RXD、MCU TXD、舵机控制TXD、舵机控制RXD为四个信号端,VDD MCU和VDD 舵机控制器为这四个信号的高电平电压.另外限制条件为:1、VDD 舵机控制器=VDD MCU2、S1的低电平门限大于0.7V左右(视NMOS内的二极管压降而定).3、V3s=VDD MCU4、V1s=VDD 舵机控制器系统基本满足上述条件,因此采用该电路进行串口电平转换。更好的保证通信的稳定性。系统采用两块LM2596S芯片的DC-DC模块,该模块具有接线简单、成本低、稳定性好、转换效率高的特点。避免了因电池的不稳定造成对机器人的影响。同时,降低电源电压有利于单片机的稳定工作,延长使用寿命。提供给舵机合适的电压才能使舵机工作在最佳状态。好的供电系统对整个机器人的使用都起到了非常关键的作用。串口通信电路如图6图6 串口通信电路图第四章 系统软件设计如果说红外传感器是机器人的眼睛;舵机及支架是机器人的身体,用于支撑整个机器人;舵机控制器是机器人的小脑,控制四肢运动;那么MCU就是机器人的大脑,用来控制整个机器人的动作,而程序就是机器人的灵魂。本章介绍具体流程。4.1程序流程图程序流程图如图7开始等待命令转动90舞蹈避障行走关节测试测试完前方有障碍舞蹈完是是是否否否图7 程序流程图4.2控制流程图控制流程图如图8舵机控制器模块舵机舵机舵机舵机主控制MCU按键红外传感器按键红外传感器主控制MCU图8 控制流程图4.3动作数据采集利用上位机通过串口与舵机控制器通信,分步调试每个舵机在每种状态下的转动角度,建立数据库,方便程序调用。调试界面如图9图9 上位机调试界面4.4数据库的建立通过上一步骤采集到机器人每次动作的舵机状态,并记录。如站立姿态时4个舵机角度分别是89、86、86、86。建立站立数据发送函数void zhanli() action(#16A89!); action(#31A86!); action(#22A86!); action(#25A86!);将机器人行走过程中第一步动作分解成各个微动作,采集第一步各个微动作建立一步动作函数。 void diyibu() /第一步 action(#25A76!);delay(5);action(#22A76!);delay(50); action(#25A70!);delay(5);action(#22A70!);delay(5); action(#25A66!);delay(5);action(#22A66!);delay(5); action(#16A99!);delay(5);action(#31A96!);delay(5); action(#16A109!);delay(5);action(#31A106!);delay(5); action(#16A119!);delay(5);action(#31A116!);delay(5); action(#25A70!);delay(5);action(#22A70!);delay(5); action(#25A76!);delay(5);action(#22A76!);delay(5); action(#25A86!);delay(5);action(#22A86!);delay(5); action(#22A96!);delay(5);action(#25A96!);delay(5); action(#22A100!);delay(5);action(#25A100!);delay(5); action(#22A106!);delay(5); action(#25A106!);delay(5); action(#31A106!);delay(5); action(#16A109!);delay(5); action(#31A96!);delay(5); action(#16A99!);delay(5); action(#31A86!);delay(5); action(#16A89!);delay(5); action(#31A76!);delay(5); action(#16A79!);delay(5); action(#31A66!);delay(5); action(#16A69!);delay(5); action(#31A56!);delay(5); action(#16A59!);delay(5); action(#22A100!);delay(5);action(#25A100!);delay(5); action(#22A96!);delay(5);action(#25A96!);delay(5); action(#22A86!);delay(5);action(#25A86!);delay(5);通过执行上述两个函数,主MCU便可以发送出动作指令给舵机控制器,舵机控制器读取响应代码来操作舵机转动精确角度,这样便实现了控制机器人行动的目的,其他动作都要进行相似的动作采样。第五章 系统整机调试及功能测试本系统所包含的功能模块有:舵机控制模块、红外传感设备、舵机、按键。本章介绍具体功能。5.1 舵机控制控制模块调试舵机控制器是机器人的传输神经,机器人的每一次动作都由它发出指令。通过它控制舵机的角度变化来实现机器人的抬脚,落脚动作。舵机模块的测试可以使用上位机来进行,通过在上位机条件,观察舵机控制模块是否能够操作舵机进行精确转动。也可用示波器观察输出的PWM波形是否正确来对舵机控制模块进行测试。5.2 舵机调试舵机是机器人的关节。通过舵机控制器发出PWM波来实现精确角度转动,且具有很的动力,本设计采用的舵机最大扭力为2.5KG。所以有它就能够带动一定质量的机身行动。舵机是一种特殊的伺服电机,只能通过PWM波形对它进行控制。它接收一个20ms的信号,通过改变输入信号脉冲宽度来改变舵机转动角度。舵机转动角度与脉冲宽度如下表所示:表1 脉冲宽度与舵机角度对照表脉冲宽度舵机输出轴转角0.5ms-901.0ms-451.5ms02.0ms452.5ms90将舵机装在支架上,通过上位机调节舵机度数是机器人保持站立姿势。这就确定了舵机的初始化角度。如果不确立这一度数,机器人启动时就不能自动的站立前进。5.3 红外传感设备调试红外传感器,能够对前方设定距离内的是否有障碍物进行判断,当有障碍时,检测管脚电平变高,单片机通过读取I/O口数据来判断前方是否有障碍来控制机器人实现避障。红外传感器上有一指示电平高低的指示灯,通过观察灯的暗、灭就可以知道现在输出的是什么电平,通过万用表检测观察传感器是否正常工作。5.4 按键测试通过按键来改变单片机I/O口的高低电平让MCU接受动作命令,从而让机器人完成相对应的动作,实现各种功能。按键的目的是使单片机对应定义过的I/O口电平产生变化。单片机读取到电平变化,根据程序就能执行下一步操作。按键的好坏直接关系到功能是否可以实现。在进行机器人制作时,因用万用表检测按键按下是否可以导通,导通是否稳定,只有一个好的按键才能保证操作的准确的顺利进行。5.5 整机调试将单片机与电脑串口连接,上电,通过观察串口数据来验证程序是否实现,按下按键观察数据是否发生变化,分析数据是否与设计要求一致。将舵机控制器和舵机连接,舵机控制器连接电脑,通过上位机软件操作舵机控制器控制舵机,观察舵机是否可以准确的转动一定角度。判断整个一个关节系统是否正常工作。确定无误后将单片机和舵机控制器串口连接,上电。观察机器人是否按照程序设计要求进行动作,按下每个动作指定的按键观察是否执行了响应的操作,如果存在问题则分析问题具体原因,是硬件问题还是软件逻辑问题,或者数据记录错误导致的问题。找到问题的真正原因并排除,直到整个系统能够实现设计的目的,这样一个就基本完成了双足行走机器人的制作。此时还可以将语音扩展模块,接到机器人上观察是否可以控制机器人行动。将机器人放在一特定环境下,观察是否可以进行避障行走。如果不能因及时调整软件算法来改变这一状况。至此,整个机器人系统的软件、硬件设计就完成了。第六章 设计总结及技术展望双足行走机器人是未来发展的趋势,这次设计仅仅是很简单的一个双足机器人模型,离真正意义上的双足行走还有很大的差距。设计时才用的大脚板可以使机器人行走稳定,这只是从结构方面来解决了平衡性问题。要想真正解决平衡性问题还有很长的路要走,就像我们从婴儿学步一样我们仅仅迈出了第一步。本设计虽然简单,但基本满足了双足行走的基本要求,并实现了一定的简单功能,也让我基本了解了双足机器人行走的方式,及控制方法。以后可以通过增加关节数量,使用更多的传感设备,来模仿人类的行走方式。随着未来科技的发展,这种类关节运动还可以模仿手臂,头部等活动方式。制造高精度的机械手臂来帮助人们做一些很难做到的事。仿人双足步行是生物界难度最高的步行动作,但其步行性能却是其它步行结构所无法比拟的。双足步行机器人是工程上罕有的高阶、非线性、非完整约束的多自由度系统这对机器人的运动学、动力学及控制理论的研究给予了一个非常理想的实验平台12。此外,双足步行机器人的研究还可以促进仿生学、人工智能、计算机图形、通讯等相关学科的发展。研究双足步行机器人的另外一重要意义就是为了更好的了解人类和其他动物的行走机理,并为下肢瘫痪者提供较理想的假肢。此外,动物行走机理的研究和步行机器人的开发是双向互惠的13。一旦对动物行走机理有了正确的理解,便可以反过来更有效地引导步行机器人的研究和开发。因此,双足步行机器人的研制具有十分重大的价值和意义。 参考文献1赵欣. 工业机器人:“中国制造”必然之选J. 科技智囊,2013,08:32-37.2田阳. 小型双足仿人机器人的设计与研发D.中国海洋大学,2013.3孙付春. 步行机器人的行走控制D.成都理工大学,2006.4刘海涛. 工业机器人的高速高精度控制方法研究D.华南理工大学,2012.5赵大伟. 双足机器人的步态规划与仿真研究D.北京邮电大学,2009.6唐矫燕. 载人两足步行椅机器人稳定性分析与控制策略D.上海交通大学,2011.7姚丽萍. 双足步行机器人的设计与研究D.江南大学,2007.8赵旦谱. 非结构地形轮足式移动机器人设计与步态规划研究D.清华大学,2010.9自动化技术、计算机技术J. 中国无线电电子学文摘,2011,05:167-246.10E.J. Herrera-Lpez,B. Castillo-Toledo,R. Femat. Fuzzy servo controller for CSTB with substrate inhibition kineticsJ. Journal of Process Control,2012,226:.11陈淑芳. 基于51单片机的教学实验系统的设计与开发D.中国海洋大学,2011.12M. Xie,Z.W. Zhong,L. Zhang,L.B. Xian,L. Wang,H.J. Yang,C.S. Song,J. Li. A deterministic way of planning and controlling biped walking of LOCH humanoid robotJ. Industrial Robot: An International Journal,2009,364:.13SYBIL E FARMER. Key factors in the development of lower limb co-ordination: implications for the acquisition of walking in children with cerebral palsyJ. Disability & Rehabilitation,2003,2514:.附录附1:部分元器件清单舵机控制器、STC89C52、红外传感器等附2:程序清单#include unsigned char t;unsigned int i; /动作判断 1行走 2跳舞 3测试 4检测到障碍回头sbit xingzou=P20;sbit tiaowu=P21;sbit ceshi=P22;sbit csb=P27;void sys_init() /串口初始化 根据实际情况进行设置 TMOD=0x20; /定时器1方式2 TH1=0xFd; /11.0592MHz晶振 SCON=0x50; /串口方式1 PCON=0x00; /9600 RI=0; TI=0; TR1=1;void delay(unsigned int dt) / 通用延时程序 unsigned int i,j; for(i=0;idt;i+) for(j=0;j1000;j+);void action(const char *p) / 舵机串口发送函数 while(*p!=0) SBUF=*p; p+; while(TI!=1); /等待发送完毕 TI=0; /清标志 void zhanli() /站立 action(#16A89!); action(#31A86!); action(#22A86!); action(#25A86!); void qianjin() /前进 /*侧片*/ action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A66!);delay(4);action(#22A66!);delay(4); /*跨步*/ action(#31A66!);delay(4); action(#16A69!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A86!);delay(4);action(#16A89!);delay(4); action(#31A96!);delay(4);action(#16A99!);delay(4); action(#31A106!);delay(4);action(#16A109!);delay(4); action(#31A116!);delay(4); action(#16A119!);delay(4); /*回正*/ action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A86!);delay(4);action(#22A86!);delay(4); /*侧偏*/ action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A106!);delay(4); action(#25A106!);delay(4); /*跨步*/ action(#31A106!);delay(4); action(#16A109!);delay(4); action(#31A96!);delay(4); action(#16A99!);delay(4); action(#31A86!);delay(4); action(#16A89!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A66!);delay(4);action(#16A69!);delay(4); action(#31A56!);delay(4); action(#16A59!);delay(4); /*回正*/ action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A86!);delay(4);action(#25A86!);delay(4); void diaotou() /向后转 /*侧片*/ action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A66!);delay(4);action(#22A66!);delay(4); /*跨步*/ action(#31A66!);delay(4); action(#16A69!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A86!);delay(4);action(#16A89!);delay(4); action(#31A96!);delay(4);action(#16A99!);delay(4); action(#31A106!);delay(4);action(#16A109!);delay(4); action(#31A116!);delay(4); action(#16A119!);delay(4); /*回正*/ action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A86!);delay(4);action(#22A86!);delay(4); /*侧偏*/ action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A106!);delay(4); action(#25A106!);delay(4); /*跨步*/ action(#31A106!);delay(4); action(#16A109!);delay(4); action(#31A96!);delay(4); action(#16A99!);delay(4); action(#31A86!);delay(4); action(#16A89!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A66!);delay(4);action(#16A69!);delay(4); action(#31A56!);delay(4); action(#16A59!);delay(4); /*回正*/ action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A86!);delay(4);action(#25A86!);delay(4);void wudao() /舞蹈 /*侧片*/ action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A66!);delay(4);action(#22A66!);delay(4); /*跨步*/ action(#31A66!);delay(4); action(#16A69!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A86!);delay(4);action(#16A89!);delay(4); action(#31A96!);delay(4);action(#16A99!);delay(4); action(#31A106!);delay(4);action(#16A109!);delay(4); action(#31A116!);delay(4); action(#16A119!);delay(4); /*回正*/ action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A86!);delay(4);action(#22A86!);delay(4); /*侧偏*/ action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A106!);delay(4); action(#25A106!);delay(4); /*跨步*/ action(#31A106!);delay(4); action(#16A109!);delay(4); action(#31A96!);delay(4); action(#16A99!);delay(4); action(#31A86!);delay(4); action(#16A89!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A66!);delay(4);action(#16A69!);delay(4); action(#31A56!);delay(4); action(#16A59!);delay(4); /*回正*/ action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A86!);delay(4);action(#25A86!);delay(4);void ceshidongzuo() /测试动作 /*侧片*/ action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A66!);delay(4);action(#22A66!);delay(4); /*跨步*/ action(#31A66!);delay(4); action(#16A69!);delay(4); action(#31A76!);delay(4); action(#16A79!);delay(4); action(#31A86!);delay(4);action(#16A89!);delay(4); action(#31A96!);delay(4);action(#16A99!);delay(4); action(#31A106!);delay(4);action(#16A109!);delay(4); action(#31A116!);delay(4); action(#16A119!);delay(4); /*回正*/ action(#25A70!);delay(4);action(#22A70!);delay(4); action(#25A76!);delay(4);action(#22A76!);delay(4); action(#25A86!);delay(4);action(#22A86!);delay(4); /*侧偏*/ action(#22A96!);delay(4);action(#25A96!);delay(4); action(#22A100!);delay(4);action(#25A100!);delay(4); action(#22A106!);delay(4); action(#25A106!);delay(4); /*跨步*/ action(#31A106!);delay(4); action(
展开阅读全文