学年论文系统详细设计报告

时间:2024.3.31

                     

                学    校:西北师范大学

             学    院:物电学院

             姓    名:王 东 梅

                 班    级:09级电子一班

              指导教师: 王 全 州             

        

 

第1章 绪论........................................................................................................................................................................................... 1

1.1机器人的简述........................................................................................................................................................................... 1

1.2机器人的组成........................................................................................................................................................................... 2

1.3双足竞步机器人的主要研究............................................................................................................................................... 2

第2章 机器人的总体设计............................................................................................................................................................... 3

2.1双足竞步机器人竞赛规程的解读...................................................................................................................................... 3

................................................................................................................................................................................................................ 3

2.4机器人的功能定位

2.5机器人的自由度配置............................................................................................................................................................. 3

第3章 双足竞步机器人的步态规划............................................................................................................................................. 4

3.1步态规划的基本原则............................................................................................................................................................. 4

3.2步态规划的基本方法............................................................................................................................................................. 6

第4章 控制系统软件设计............................................................................................................................................................... 7

4.1流程逻辑.................................................................................................................................................................................... 7

4.1.1程序流程图......................................................................................................................................................................... 7

4.1.2程序流程图简述................................................................................................................................................................ 7

第5章 控制系统的硬件设计......................................................................................................................................................... 11

第6章 系统调试总结...................................................................................................................................................................... 11

附录一 系统源程序........................................................................................................................................................................... 26

                              

                              

                           第一章 绪论

1.1 机器人的简述

机器人是作为现代高新技术的重要象征和发展结果,已经广泛应用于国民生产的各个领域,并正在给人类传统的生产模式带来革命性的变化,影响着人们生活的方方面面。

在研究和开发及不确定环境下作业的机器人的过程中,人们逐步认识到机器人技术的本质是感知、决策、行动和交互技术的结合。随着人们对机器人技术智能化本质认识的加深,机器人技术开始源源不断地向人类活动的各个领域渗透。结合这些领域的应用特点,人们发展了各式各样的具有感知、决策、行动和交互能力的特种机器人和各种智能机器,如移动机器人、微机器人、水下机器人、医疗机器人、军用机器人、空中空间机器人、娱乐机器人等。

机器人技术是一门综合了传感与检测、运动控制、图形图像处理等技术的新型学科,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,涉及到当前许多前沿领域的技术。随着电子技术的飞速发展,智能机器人在越来越多的领域发挥着人类无法代替的作用。

机器人能力的评价标准包括:智能,指感觉和感知,包括记忆、运算、比较、鉴别、判断、决策、学习和逻辑推理等;机能,指变通性、通用性或空间占有性等;物理能,指力、速度、连续运行能力、可靠性、联用性、寿命等。因此,可以说机器人是具有生物功能的三维空间坐标机器。

1.2 机器人的组成

机器人一般由执行机构、驱动装置、检测装置和控制系统等组成。

执行机构:即机器人本体,其臂部一般采用空间开链连杆机构,其中的运动副(转动副或移动副)常称为关节,关节个数通常即为机器人的自由度数。根据关节配置型式和运动坐标形式的不同,机器人执行机构可分为直角坐标式、圆柱坐标式、极坐标式和关节坐标式等类型。出于拟人化的考虑,常将机器人本体的有关部位分别称为基座、腰部、臂部、腕部、手部(夹持器或末端执行器)和行走部(对于移动机器人)等。

驱动装置:其按其动力源的形式,分为电动、气压驱动、液压驱动或其组合形式的驱动,其运动过程可由行程、转矩或轴向推力的大小来控制。具体的实现形式,可以是轮式,履带式或者是关节式。

检测装置:其作用是实时检测机器人的运动及工作情况,根据需要反馈给控制系统,与设定信息进行比较后,对执行机构进行调整,以保证机器人的动作符合预定的要求。作为检测装置的传感器大致可以分为两类:一类是内部信息传感器,用于检测机器人各部分的内部状况,如各关节的位置、速度、加速度等,并将所测得的信息作为反馈信号送至控制器,形成闭环控制。另一类是外部信息传感器,用于获取有关机器人的作业对象及外界环境等方面的信息,以使机器人的动作能适应外界情况的变化,使之达到更高层次的自动化,甚至使机器人具有某种“感觉”,向智能化发展,例如视觉、声觉等外部传感器给出工作对象、工作环境的有关信息,利用这些信息构成一个大的反馈回路,从而将大大提高机器人的工作精度。

机器人产业在二十一世纪将成为和汽车、电脑并驾齐驱的主干产业。从庞大的工业机器人到微观的纳米机器人,从代表尖端技术的仿人型机器人到孩子们喜爱的宠物机器人,机器人正在日益走近我们的生活,成为人类最亲密的伙伴。机器人技术和产业化在全中国甚至全世界拥有一定的现实基础和广阔的市场前景

1.3 双足竞步机器人的主要研究

本本次设计采用ATmega128单片机作为双足竞步机器人控制单元的核心,具备自主决策和智能判断的能力。使用六个模拟舵机作为关节驱动和一个模拟舵机控制板作为模拟舵机的驱动控制机器人完成各种动作。其实现的主要功能有:机器人自主地由步行的方式从起点线走到终点线(场地:相距200cm,限宽60cm),利用身体的各关节做一些预定的动作;先从起点走出3步距离、立正、然后卧下、向前翻跟斗3次,再起立、向前走出3步距离、立正、然后卧下(身体向后)、再向后翻跟斗3次、再起立;然后以轻快步履走向终点,机器人会在4分钟以内完成所有动作。

   第2章  机器人的总体方案设计

2.1  双足竞步机器人竞赛规程的解读

2.1.1  竞赛内容概述

机器人通过步行的方式从起点线走到终点线(相距200cm,限宽60cm)。竞赛开始时,机器人先向前走出3步距离、立正、然后卧下(身体向前)、向前翻跟斗3次,再起立、向前走出3步距离、立正、然后卧下(身体向后)、再向后翻跟斗3次、再起立、然后以轻快步履走向终点、参赛机器人要在4分钟以内完成所有动作。

双足竞步机器人计分规则:

1.机器人行走时跌倒一次扣 10 分,由裁判指定将机器人重新放在原位并继续竞赛,不另补

时。

2.不按指定动作次序运行的机器人将按次序偏差次数扣分,每次偏差扣 10分。

3.机器人行走每出线一次扣 10分。

4.在未经裁判允许的情况下,人为干预一次扣 10分。

5.以扣分少者为胜;在扣分相同条件下,以使用时间短者为胜。

从上面的竞赛内容可知,首先应该确保机器人在规定的区域内活动,然后自主向前行走按照要求执行相应的动作,不会跌倒、踩线等错误的动作,这是比赛顺利进行的前提条件;其次机器人应该在可以准确无误的完成相应制定动作的情况下,尽量使整个过程的耗时最少,这是比赛能否取得胜利的关键。

2.1.2  双足竞步机器人的限制

结构只有双足、并只能以走路的方式来移动,机器人要分清楚正面及背面,以箭头方向作为正面,是自主式脱线控制,用不多于6只伺服马达和一个伺服马达控制板来完成,机器人最大尺寸为200mm(长)X 200mm(宽)X 300mm(高),重量不超过1Kg.,机器人头部要能放入(长)200mm X (宽)100mm长方格内。

机器人通过步行的方式从起点线走到终点线(相距200cm,限宽60cm)。竞赛开始时,机器人先向前走出3步距离、立正、然后卧下(身体向前)、向前翻跟斗3次,再起立、向前走出3步距离、立正、卧下(身体向后)、再向后翻跟斗3次、再起立、然后以轻快步履走向终点、参赛机器人要在4分钟以内完成所有动作。

因此,从上面的限制条件可以知道,对参赛队员制作机器人的材料高度和重量都具有了要求,制作机器人的材料按照使用场合的不同来决定轻重,比如说底盘(机器人的脚底板)在符合条件的情况下,越重越好,这样能使机器人的重心低,在移动过程中保持稳定不会跌倒;而机器人的腿部以上的重量,在符合条件的情况下,越重越好,否则机器人的重心太高,前后卧下的情况下,容易倾倒;这需要参赛队员根据自己的实际情况处理好重量和高度的分配,才能取得满意的效果。

2.1.3场地规格分析及说明

比赛场地(即擂台,如图2.1所示)大小为长、宽分别为是2000 mm,宽600mm的长方形矮台,台上表面即为擂台场地。机器人从出发区启动后,沿着起点线走上擂台。

图2-1 比赛场地

从场地来看,双足竞步机器人的做工一定要精细,做工的精度一定要高,必要时做到标准化。另一方面由于在机器人身上没有各种辅助措施,机器人的稳定性一地要强,应用程序要稳定,各关节的设计要合理可靠等。由于比赛中规定在完成全部动作且得分相同的情况下,按耗时越少排名越高的原则确定名次。所以,最重要的一点是要尽量减少机器人完成动作所用的时间。

2.2  双足竞步机器人总体分析

要设计和开发一个步行机器人,首先应该对其进行总体分析和设计,确定步行机器人的功能、基本结构和系统配置等。

2.2.1 功能定位

根据参赛要求,首先使其能够完成一些基本动作,既开始时先走3步、立正、然后卧下(身体向前)、向前翻跟斗3次,再起立、向前走3步、立正、然后卧下(身体向后)、再向后翻跟斗3次、再起立、然后以轻快步履走向终点、要在指定4分钟或少于指定时间内完成所有动作,及要走到终点。

2.2.2 自由度的配置

该双足竞步机器人设计的目的是要实现拟人下肢多自由度得平稳行走,在实现这个功能的前提下为降低设计的难度,我们按照目前世界上各研究机构普通采用的下肢6个自由度的关节配置形式,来实现行走功能所必须的各关节自由度分布,具体自由度配置为单腿髋关节1个,膝关节1个,踝关节1个。髋关节用于摆动腿,实现迈步,并起到了辅助平衡作用。膝关节主要用来调节重心的高度,及改变摆动腿的着地高度,使之与地形相适应。踝关节用来和髋关节相配合实现支撑腿的移动,以及调整与地面的接触状态。

基于郑元芳博士的理论,来规划自己所要设计的双足机器人的自由度。为了实现这款双足步行机器人的稳步行走,可以规划其运动过程,假设机器人行走步骤:先走3步,立正,然后卧下,向前翻跟斗3次,再起立,向前走3步,立正,然后卧下(身体向后),再向后翻跟斗3次,再起立,然后走向终点。其结构图见下图2-2。

3章 双足竞步机器人步态规划

步态规划是双足竞步机器人研究中的一项重要工作,步态规划的好坏将直接影响机器人行走过程中的稳定性、所需驱动力矩的大小以及姿态的美观性等多个方面,同它也直接影响到控制方法及其实现的难易程度。

3.1步态规划的基本原则

双足竞步机器人的步态规划,是指机器人行走过程中其各组成部分运动轨迹的规划,比如说,脚掌何时离开地面、摆动相中整个脚掌在空中的轨迹、何时落地等。关键之就在于所规划的轨迹必须满足零力矩点(ZMP)稳定条件,否则,机器人不能稳定步行步态规划要解决的问题主要有:

1. 保证机器人本体不和环境或者自身发生干涉,从而导致无法实现预定的轨迹。

2. 保证机器人的稳定性。机器人的稳定性问题一直是困扰两足步行机器人发展的重要问题,由于各个关节间的藕合作用,很难设计出理想的ZMP轨迹。现在使用的步态规划方法主要有如下几种:

(1) 基于实验的规划方法

这种规划方法基于力学的相似原理,基本过程如下:让人模仿机器人行走(如果机器人有几个自由度,那么人在模仿行走的时候也尽量只动相应的关节),同时对此人的行走过程进行正面和侧面的录像,然后对这些录像进行分析,得到此人在步行过程各个主要关节的角度变化与时间的函数,然后根据力学相似原理把这些函数相似地推广到机器人的关节变化上。

(2) 基于能量原理的规划方法

这种方法来源于一个生物学假设:人经过千百万年的进化,其行走方式是能量消耗最低的,而且还能保持步行的稳定性。如果机器人也能满足这个假设,则其行走方式将与人一样或很接近。根据能耗最小原则可以建立一个变分方程,并最终得到机器人的轨迹方程。

(3) 基于力学稳定性的规划方法

在机器人行走过程中,其ZMP点必须落在某个区域范围之内,只有这样才能保证步行机器人稳定地行走。实现方法有两种:

a. 计算出理想的ZMP轨迹,然后推导出各个关节的运动函数以实现理想行走。

b. 先大致规划出双足和躯干的运动轨迹,然后进行ZMP计算,最后选出稳定性最好的结果作为控制方程。

相比前一种方法,后一种可以较快地得到规划结果。在保证了机器人基本性能的前提下,尽量减少控制的工作量,降低成本。所以本文设计将采用第二种方法,结合三次样条插值和机器人的逆运动学规划进行机器人步态的参数化设计。

3.2步态规划的具体方法

合适的步态设计是机器人实现动态行走的关键。在计算各关节轨迹之前,首先要建立机器人所在的空间坐标系。

坐标系的 x轴指向机器人的正面,y轴由右侧指向左侧,z轴垂直向上,原点0位于后脚完全落地时踝关节在地面上的垂直投影处。当机器人沿着直线往前走时,由于只考虑前向运动,双脚和 腰部在侧方向( y轴)上的位置是不变的,因为设定条件为机器人在水平地面行走,且脚面抬起高度为0,所以z轴位置不变。因此,仅仅讨论在 x平面内的轨迹。机器人所在的空间坐标系如图3-1 所示 。

图3-1 机器人的空间坐标系

双足机器人完整的步行过程包括三个阶段

(1) 起步阶段:由初始的双腿并立静止状态变化到行走状态,一条腿向前跨出了半步距离,髋部速度从零上升到恒定值; 

(2) 整步阶段:两条腿交替地向前跨出一步距离,髋部速率保持不变; 

(3) 落步阶段:后腿向前跨出半步,落在与另一条腿并行的部位,髋部速度减少到零,恢复成双腿并立静止状态。

主要讨论整步的轨迹计算。前向运动的规划步骤如下: 

(1) 确定步速和步长; 

(2) 设定初始参数,计算踝关节和髋关节轨迹 ; 

(3) 根据踝关节和髋关节轨迹计算膝关节轨迹; 

(4) 计算ZMP轨迹; 

(5) 改变参数值,返回第 2步; 

(6) 选取具有最大稳定性的轨迹。 

步态规划的流程图如图3-2所示。

图3-2 双足机器人的步态规划流程图

双足步行机器人行走控制的关键是根据踝关节和髋关节的运动轨迹确定膝关节的运动轨迹。在脚面抬起高度为0的情况下,膝关节的轨迹由步幅唯一决定,而步幅和步速则可唯一确定出髋关节的轨迹,其步态周期图如图3-3所示。

图3-3 步态周期图

因为单支撑和双支撑是一个交替的过程,双腿支撑需要有一定时间来保证ZMP点由后脚移动到前脚,所以我们取双支撑的时间间隔为20%个周期。

从上图可以看出在一个完整的步态周期里包括了两个双支撑和两个单支撑时间段,双支撑占20%个周期,单支撑占80%个周期。对于单腿来说整个周期里只有一个摆动周期,占40%个周期,支撑周期由一个单支撑和两个双支撑组成,占60%个周期。

根据机器人自身结构特点,在行走时采用“平行步态”,如图所示。机器人采用这种步态行走时,两脚的落脚痕迹是相互平行的,实现这种步态行走的机器人对其自由度要求较少,但对稳定平衡提出了较高的要求。

第4章 控制系统的软件设计

 为了实现模型样机的实验调试,在硬件基础上进行了系统软件设计,通过对实际机械系统运动控制理论研究,规划了一套简便的调试方案以验证样机设计的合理性,并进行对预订步态的相应关节控制调试和可行性验证。

4.1 ATmega128的介绍

DMAVR-128型AVR单片机学习开发板的设计思想是模块化,将各个模块单独形成功能,再实现与单片机的连接,同时,各个模块与单片机的连接没有完全固定,而是通过跳线帽连接,如果你只是需要学AVR单片机知识,不必自行配置单片机I/O口连接,各个模块的引线和单片机所有的I/O口全部引出,这样的设计是为了方便用户在后期的扩展使用,可以自由良好的使用单片机的I/O口,体现出良好的扩展性和使用的灵活性。AVR单片机采用Atmel公司的megaAVR系列单ATmega128L(ATmega128的宽电压版)支持3.3V-5V电源系统,该型号单片机内部含有128K的FLASH空间、4KB的RAM空间以及4KB的EEPROM空间,其他资源在后面会详细介绍,共有6.5组双向I/O口计53个,分别为PA,PB,PC,PD,PE,PF,PG,所有I/O口全部引出,方便使用,系统板给各个模块分配了对应的控制I/O口。

4.2 程序设计

   在程序设计前首先必须明白舵机控制的原理,并先从单个舵机的控制开始到多个舵机的控制。


    对于舵机,其转角为一个绝对位置,即给一定脉宽的信号,舵机会转动到固定的转角位置,不管其上一个时刻的位置如何。例如:当输入信号的脉宽为2.0ms时,舵机便会转到135°的位置,这个位置的定位是由舵机内部电路自动反馈校正完成的。

    对于舵机的控制就是利用PWM波对舵机进行控制,不同脉宽的PWM波会使舵机转动一定的角度。Meg-128芯片有专门的输出PWM波的I/O口,当控制一个舵机可以用专用口进行控制。但由于控制六个舵机,专用口不够用,因此必须采用模拟PWM波进行控制,即使用六个通用的I/O口,输出六路PWM波,对六个舵机进行控制。

PWM波制作方式:通过让普通的I/O口输出高低电平以产生PWM波。使用两个定时器,一个8位的T0用来控制PWM的脉宽,一个16位的T1用来控制PWM的周期。

        第五章 控制系统硬件设计

利用AltiumDesigner6.9绘制最小系统板原理图,绘制其PCB,并刻板焊接调试。

Meg-128最小系统板原理图如下:

电路图主要分主芯片,复位电路,电源电路,晶振电路,JTAG仿真接口,几大部分。

在最小电路的设计中基本上按照Meg-128所给资料画出原理图即可,需要主要的一点是在画原理图时将模拟地和数字地要用一个零欧电阻隔开,以免在电路中产生干扰。还有一个就是给主控芯片供电和给舵机供电要分开,给芯片供电我们采用一个输出5V的直流稳压电源,而给舵机供电就直接用动力电池(输出7.4)V即可。

               第六章 系统调试总结

在软件部分,就双足竞步机器人的编程中可以体会到,整个程序并不复杂。主要围绕PWM波的控制,通过让单片机输出端口产生高低平而产生PWM波,从控制一个舵机动到控制多个舵机同时动。主要用到两个定时器,一个用来控制PWM波的周期,一个定时器用来控制PWM波的脉宽,通过给舵机赋不同脉宽的PWM波,使得舵机产生不同的角度,以形成一系列的动作,让机器人动起来。

用C语言编程,可以用一些简单的C语言语句实现机器人功能,但这样写出来的程序有点繁琐,最好就是用函数调用写,这样写出来的程序简洁明了。

软件调试中,程序的仿真很重要,AVR单片机中有仿真,很好的运用仿真程序,可以帮助我们较快地发现并解决程序编写上出现的问题。

 硬件电路部分,由于原理图的简单而正确,所以画的PCB,刻出来的单片机的最小系统板也基本是没什么问题的,电路调试阶段主要出现一些焊接上的问题,因为是AD的初学者,所以也会有一点画板子过程当中出现的问题,比如封转画的不合适等。贴片元件的焊接,主要难度在主控芯片的焊接,这是个熟能生巧的活,当然自己的细心很重要。测试时,一点一点的测,发现有问题耐心解决,勿要动不动就重新焊板子,这样解决不了任何问题,只是一味浪费元件材料和时间。

    机械制作方面,尤其对于双足竞步机器人机械构造决不可疏忽。在后期的机器人的调试中,大部分精力都放在了机器人的步伐的分解上。好的硬件结构能够轻松分解出好的步伐,并在成功的程序中很好地执行。我们每年买的电池都有点大,并且有时是用两块电池,一个普通电池给接稳压部分使其输出5V给芯片供电,另一块动力电池,由于两块电池不仅大小不一,且重量不同,所以机械上造成机器人的重量增加和不稳定。建议可以采用两节3.7V的那种圆形的干电池(动力电池,里面只有一节电芯,输出3.7V),这样一样的两块既小又轻的电池放在两条腿上,很好。

     这次我们做的交叉足印机器人始终没有调好的主要问题出在机械结构上,机器人做的太高,后面连接件的螺丝没办法拧紧,导致机器人的两条腿在调试的过程中一直是松松的,而导致很难分解出步伐,总感觉舵机软软的,不能保持动作。

程序附件:

#include<avr/io.h>

#include<avr/interrupt.h> 

//定义动作作态及动作数

 unsigned int dj_number=6;//定义舵机的个数

 unsigned int dj_state=1;//舵机状态数

volatile  unsigned int count=0,count1=0;

unsigned int data[12][6]={             {95,93,85,82,98,85},   //立正到起步

                                                        {93,93,81,90,98,104},

                                                        {93,96,81,53,113,90},

                                                         {82,113,81,53,113,90},

                                                         {82,113,95,53,113,90},

                                                                      

                                                                 {81,104,95,60,117,90},  //循环走路

                                              {81,104,81,60,117,99},

                                                                {117,77,90,89,81,99},

                                              {113,72,90,93,81,81},

                                                                {113,72,81,93,81,90},

                                                                 {95,95,81,60,117,90},

                                                                 {81,104,95,60,117,90} };                             

  volatile unsigned int state=0;

  volatile unsigned int init_dj[6]={90,90,80,80,90,80};

  unsigned int i=10;//是一个全局常量,主要是在舵机角度是否到位数组中用

  unsigned int xunji(void);//引导机器人行走函数

  void change(unsigned int angle);//将角度装换成计数初值得函数

  void servo(int dn,int s);//判断一个舵机是否转到位的函数

void Delay_us(unsigned int count)

{

    unsigned int j = 0,s;

    for(s=count;s>0;s--)

       {

           for(j=16;j>0;j--);

      

       }

}

//----函 数 名:Delay_ms(unsigned int count)

void Delay_ms(unsigned int count1)

{

   unsigned int j;

    for(j=count1;j>0;j--)

       {

           Delay_us(400);

       }

}

//-----------------------------------

//角度与时间转换及初值计算

void change(unsigned int angle)

 {

    int t=0;//将角度转换为时间

     //t=500+(2/180)*angle*1000;

         t=2*(angle*100/9+600); //因为是16M的晶振,如是8m则无需*2            //

     TCNT1H=(int)(65536-t)/256;//在将时间转化为计数初值

     TCNT1L=(int)(65536-t)%256;

        sei(); // 开定时器1,0X02=8分频

 }

//------------------------------------

//---确定输出端口

 void whichout(unsigned int i)

 {

     switch(i)

     {

             case 1:PORTA=0X01;break;

            case 2:PORTA=0X02;break;

            case 3:PORTA=0X04;break;

          case 4:PORTA=0X08;break;

          case 5:PORTA=0X10;break;

          case 6:PORTA=0X20;break;

             case 7:PORTA=0X40;break;

          case 8:PORTA=0X80;break;

                case 0:break;

            default:break;

         }

 }

//--------------------------------------

//----函 数 名:

//----输入参数:

//----输出参数:

//----创 建 者:

//----修改时间:

//----------------------------------------

void servo(int dn,int s)

 {

     

      if(init_dj[dn] != data[s][dn])

            {

                 if (init_dj[dn]>data[s][dn])

                   {

                       init_dj[dn]--;

                      

                       }

           else

                   {

                       init_dj[dn]++;

                    

                       }

          whichout(dn);

                change (init_dj[dn]);

          }

      

           else

                change (1);/*一个极端的延时,主要是为了让程序在执行完比较

                            后可以顺利进入中断,也是为什么不用delay延迟的

                                     原因,大约为1.4ms*/   

          }

 //中断服务程序,判断舵机是否执行到位,完成一组状态

  SIGNAL(SIG_OVERFLOW1)//定时器一溢出中断

  {

   PORTA=0X00;

   cli(); //关闭定时器1的时钟源

   unsigned int m=0;

   unsigned int g;

      i = i + 1;//每执行一次中断,舵机向后走一个

   if(i>=dj_number)

     {

             i=0;

             Delay_ms(10);

      

        

         }/*当所有舵机执行完一个动作后,延时1ms,主要起缓冲作用

            此时将i清零,以便执行完下一个状态时缓冲*/

    for (g=0;g<dj_number;g++)

       {

            if(init_dj[g]!=data[state][g])

               m++;

      

       }//判断所有舵机是否都已经执行到位,只要有一个为执行到位,

            //m就不为0,只有当所有舵机都执行到位后,m才为0

    if(m==0)

       {

            state++;

            Delay_ms(10);

       }

    if(state>=dj_state)

       {

                  

                    state=0;

                     Delay_ms(10);

      

           }

           

     servo(i,state);//舵机函数,用来执行机器人的下一个的状态

   

      

  }

  //主函数

int main(void)

{                                                                                                                                                                               

      TCNT1H=(65536-3000)/256;

         TCNT1L=(65536-3000)%256;

         TCCR1A=0X00;  //普通端口

         TCCR1B=0X02;  //定时器一 8分频

      TIMSK=0X04;   //定时器一 溢出中断使能

      TIFR=0X04;

      sei();       //全局中断时能

        

     

         DDRA=0XFF;

      PORTA=0X00;                                                                                                                                                                                                     

         while(1)

         {

         };  

         }

更多相关推荐:
软件详细设计报告

计算机学院实验中心----Android手机客户端学生姓名:**指导老师:**专业:计算机科学与技术102在移动互联网发展迅猛的今天,在Android完全开源及拥有庞大用户群的环境下,迫切需要为计算机学院实验中…

软件详细设计报告

软件详细设计报告11编写目的2支撑环境222开发工具中间件以及数据库接口32114预期读者和阅读建议125多种支撑环境开发要点4词汇表51引言引言是对这份软件系统详细设计报告的概览是为了帮助阅读者了解这份文档如...

图书管理系统详细设计报告(经典范例)

实验报告课程名称软件工程导论课题名称图书管理系统详细设计报告专业计算机科学与技术班级计算机0903学号姓名指导教师20##年5月24日目录1.1编写目的...21.2背景...21.3定义...31.4参考资料…

软件详细设计报告模板

软件详细设计报告1引言111编写目的112项目风险113文档约定114预期读者和阅读建议115参考资料22支撑环境221数据库管理系统222开发工具中间件以及数据库接口223硬件环境224网络环境325多种支撑...

详细设计报告

一、北斗二代B1信号说明(1)B1信号由IQ两个支路的测距码+导航电文正交调制(QPSK)在载波上构成。表达式如下:式中:A表示信号振幅;C表示测距码;D表示测距码上调制的数据码;f0表示载波频率1561.09…

软件工程详细设计报告

数字化校园系统详细设计KT8231陈俊徐浪江洋目录1基本模块错误未定义书签11人员管理模块错误未定义书签12主要模块时序图错误未定义书签13系统统DFD图2系统各模块概述概述错误未定义书签2122用户管理错误未...

详细设计报告模板

设计报告项目名称东软集团股份有限公司IT人才实训中心版权所有翻版必究更改履历状态新建增加修改删除目录1引言4111213234编制目的4词汇表4参考资料4系统开发环境5系统设计思路5系统公用代码设计541分页组...

学生成绩管理系统详细设计报告

学生成绩管理系统详细设计报告版本历史目录0文档介绍401文档目的402文档范围403读者对象404参考文献405术语与缩写解释41系统概述52设计约束53设计策略54流程图55输入输出设计56界面设计57基本类...

03-人事管理系统详细设计报告

软件工程实验设计实验题目详细设计报告实验学期20xx至20xx学年第2学期班级20xx级计算机科学与技术本科班姓名42505470任课教师实验成绩1引言311编写目的312背景313参考资料314目标32总体设...

类的设计与封装(三)实验报告

浙江大学城市学院实验报告课程名称面向对象程序设计实验实验项目名称类的设计与封装三学生姓名专业学号实验地点实验日期年月日实验目的1掌握package语句与import语句2掌握包的定义和使用方式实验报告1编程实现...

小型超市管理系统详细设计报告

科信学院详细设计说明书项目名称小型超市管理系统专业班级电子信息工程081班小组成员指导老师20xx年11月20日目录1引言111编写目的112背景113定义214参考资料22系统的结构221结构组成模块221软...

医院职工管理系统详细设计报告

青岛理工大学软件工程详细设计实验报告项目医院职工管理系统详细设计研究报告院系计算机工程学院专业计算机科学与技术专业学生姓名班级计算091学号医院职工管理系统详细设计研究报告1程序系统结构系统总体模块图2系统模块...

详细设计报告(26篇)