行走机器人功能分析与调试 毕业设计.doc_第1页
行走机器人功能分析与调试 毕业设计.doc_第2页
行走机器人功能分析与调试 毕业设计.doc_第3页
行走机器人功能分析与调试 毕业设计.doc_第4页
行走机器人功能分析与调试 毕业设计.doc_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河北能源职业技术学院行走机器人功能分析与调试40摘要:虽然机器人的研究、制作和使用已经有几十年的历史,但是双足直立行走的机器人世界上很少。主要因为稳定性控制及双足行走控制非常复杂,但为了研究出与人更加接近的机器人,这是必须克服的难关。主要是解决直立行走机器人腿部平衡的问题,包括硬件设计和软件的设计,侧重于对硬件的设计,即着重介绍直立行走机器人腿部平衡系统的相关知识、设计目的、设计思路、方案的确定、原理设计及分析、硬件调试。行走机器人是最典型的机电一体化数字化装备,是集机械、电子、控制、计算机、传感器、人工智能等多学科先进技术于一体的智能机器人。它代表了机器人的尖端技术,是当代科技的研究热点之一。目前,国内双足机器人研究与世界先进水平相比还有较大差距,特别是在教学机器人方面的研究更是寥寥无几。为改善这种局面,提高我国高校师生的综合技能,本论文在研制教学双足机器人方面进行了有益的尝试和大胆的实践,设计并制作出了一款适用于高校教学开发使用的小型双足行走机器人。 本文详细阐述了双足机器人机构设计和控制系统的研发过程,包括控制系统的硬件电路设计和制作,机器人双足的外形设计与加工,以及双足行走机器人的驱动和控制技术。结合对人类行走步态的研究,规划了双足机器人行走的姿态及轨迹,推导了双足机器人稳定步行的条件,并据此进行了实物实验,实现了稳定的低速静态步行。 本论文重点讨论了静态步行的算法设计和仿真,详细分析了基于零力矩点的双足机器人动态步行运动规划方法,根据运动学约束条件计算出各个关节的运动轨迹。使用matlab软件,以zmp点的轨迹作为约束条件,进行了前向离线规划试验和zmp误差补偿试验,实验证明本文所采用的步态规划方法可以满足机器人连续稳定行走的要求。教学双足机器人运动平稳,系统控制精度高,具有良好的教学功能和广阔的应用开发前景。 本文针对教学双足行走机器人方面进行了深入的研究,对他人今后进行教学双足机器人的研究提供了一套系统的研究方法,对同行具有借鉴和引导作用。目录序11、自动机器人平台总述21.1自动机器人平台的总体构成31.2自动机器人平台按键部分41.3机器人平台的充电42、自动机器人平台系统结构42.1自动机器人平台机械部分42.1.1机器人平台机械部分组成42.1.2机器人平台运动详解52.2自动机器人平台控制系统62.2.1概述63、自动机器人平台的装配和调试133.1机器人装配过程133.1.1主动轮电机装配133.1.2电机安装至铝合金架板133.1.3从动轮及传感器安装133.1.4电路板的安装133.2机器人平台的调试144、可行性的上部机器手臂设计方案145、驱动软件的编写及调试176、取得的成果38序2012年2月,在寒假期间,比赛用机器人平台运抵学校,学校验收后交付使用,3月份开学初,我和于长波组织学生开始筹备学习机器人平台的使用,研究了平台的硬件电路和软件程序的编写,因今年机器人比赛的题目没定下来,只能等待。2012年5月16日接到全国职业院校技能大赛规程,离正式比赛仅有20天。需要添购通讯模块等部分设备,否则不准参赛,之后立即申报购买部分设备,包括通讯模块,交通灯,工件,电源等,同时组织学生学习研究通讯模块用法,并对参赛规程进行分析,规划比赛场地,制定可行性设计方案,三易其稿并着手采购机器人上部机构零件。期间攻坚克难无数,同学们非常辛苦。在规划场地时,比赛场地尺寸:大小为8米*6米。其中外围档板高10cm,材质为木工板,上面贴有30mm宽的白色引导条。我们采用普通透明胶带加普通打印纸来代替比赛用的白色一道条,实验室场地场地不够大,仅有6米*5米多。怎么办,若对每个方格都按比例缩小,那么小车将无法完成正常转向,我们分析比赛规则后,规划出小车的理想行驶轨迹,把部分不重要的方格由原来的0.5米*0.5米压缩到0.5米*0.2米,这样原来的的正方形格畸变成长方形,整个比赛场地严重变形,经过大家的多次精密计算,最终解决了比赛模拟场地面积不够的问题,同时白色导条也以最小的经济成本得以解决。之后我们分析了机器人上部机构传动形式,分析各种电机的运动特点,排除了使用伺服电机,直流减速电机等驱动形式。查找各种电机的型号,价位并上网采购步进电机及其配套的驱动器,之后又分析链条,齿轮,导条的传动的特点,确定采用导条为支撑和传动骨架,并上网查找配件型号同时进行采购。咨询多位老教师(卢恩贵,李瑞春,魏国江等),排除了谐波齿轮,滚珠丝杠等多种传动方法最后敲定了机器人手部形式,如何能有效的夹取工件,由于目前技术原因,机器人很多技术都不成熟,没有太多的有效资料可供参考,我们边想边做,花费很多时间,进展很慢。另外采购角铝,电钻,方铁管等配件,期间费了很大周折。1、自动机器人平台总述自动机器人平台是专门为高职类机器人大赛提供的一个统一的机器人底盘。使用者可以根据大赛任务的要求,在此平台上进一步设计制作各种抓取、投放机构,利用机器人平台提供的主控制板实现整体机器人的控制。1.1自动机器人平台的总体构成机器人平台包括主动车轮、从动车轮、铝合金框架、直流电机、电池、电路板以及安装在底部的16路传感器组成。1.2自动机器人平台按键部分自动机器人平台上共有三个按键,12v电源开关、24v电源开关以及启动按钮。在开机时,注意先打开12v电源开关,再打开24v电源开关,最后按下启动按钮,机器人开始运行;关机时,先关闭24v电源开关,再关闭12v电源开关。1.3机器人平台的充电机器人平台的电源为三节铅酸电池。电池充满电压可以达到13v,额定工作电压12v。其中一节电池专门给主控制板和传感器信号处理板供电,另2节电池串联成24v,给电机驱动板供电,用于驱动机器人上的各种电机,为了提高整体的抗干扰性能,12v和24v的电池不要共地。电池可重复充电1000次以上。充电时需先取出电池。我们可按下面步骤进行:1.关闭机器人平台的电源;2.拔掉连接线,将电池依次取出,充电。3重新装上充好的电池。每个平台配备了一个充电器,可以给一个电池充电,充电时,充电器上面的指示灯呈蓝色,充电完毕呈红色。2、自动机器人平台系统结构2.1自动机器人平台机械部分2.1.1机器人平台机械部分组成机器人平台的机械部分是指机器人执行具体功能时所要用到的机械部件,共有以下几个部分:1.主动轮机器人平台的主动轮有两只,金属铝芯,外包三根o型圈,能够完成向前直走,向后转弯,左转,右转等这些平地上的技术动作。2.从动轮机器人平台有1只从动轮,和两只主动轮形成三角支撑着机器人的身体。从动轮随着主动轮的方向改变自己的方向。众所周知,三点支撑结构是最稳定的结构,从动轮和两个主动轮形成了一个稳定的支撑结构。3.直流电机机器人平台上有两个2台额定电压24vdc、150转/分、70w功率直流减速电机。4铝合金框架机器人平台的框架使用了铝合金型材制成,可以很方便地利用配备的专用螺母将设计的上部机构安装在平台上。5铝板机器人平台上铺设了5块4mm厚的铝板,可以根据自己的需要在这些铝板上打孔,用于固定安装上部机构,若需要这些铝板,可以自行卸下,以减轻整体重量。2.1.2机器人平台运动详解1机器人的动作机器人一共有三种动作:1)前进两个电机等速正转时,机器人前进。2)后退两个电机等速反转时,机器人后退。3)转弯两个电机按一定比例不等速正转时,机器人转弯。2机器人运动原理机器人运动时,通过直流电机的轴转动来驱动两个主动轮的运动,利用两个主动轮来控制底盘的各种运动(前进,后退或者转弯)。底盘前端的从动轮前端有一个传感器,用于探测地面白条的位置。探测后把相关数据传给控制装置(单片机),控制装置分析计算后把相应运动指令转化为pwm脉宽调速信号来控制电机的转速,从而使机器人能够沿着白条运行。2.2自动机器人平台控制系统2.2.1概述自动机器人平台控制系统包括16路巡线传感器、传感器信号处理板、主控制板、电机驱动板和其他待开发扩展部件组成。组成框图如图2.1所示。图2-1机器人平台控制系统组成框图图2-1中,虚线框中的部分是机器人平台已经配备的部分,其他部分需要在设计中根据所设计的上部机构的动作情况自行开发,并用主控制板统一控制。2.2.2主控制板1.概述主控制板是机器人的大脑,承担着信息接收、处理、外部设备控制的重要任务,主控制板中处理器选用了stc12c5a60s2芯片为主控芯片,控制板支持两大类输入,既16通道专用巡线传感器输入,和8通道传感器输入;输出也是支持2大类,即可调速行走电机控制输出和不可调速行走电机控制输出;具有一个可扩展接口。stc12c5a60s2单片机是宏晶科技生产的单时钟/机器周期(1t)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成max810专用复位电路,2路pwm,8路高速10位a/d转换(250k/s),抗干扰能力强,适合应用在强干扰场合。具体功能和参数可以参考stc12c5a60s2数据手册。主控制板使用的是40个引脚的单片机,共有35个i/o接口,其中,p0、p2和p4.6口用于输入,共17个端口,p1和p3部分接口用于输出,共12个端口。主控制板实物如图2-2所示。图中,12v电源输入插座连接12v电源,12v电源输出插座连接传感器信号处理板的12v电源插座(注意板子上的电源正极标志,不要插反),巡线传感器输入接口用于连接传感器信号处理板,启动按钮输入插座连接面板上启动按钮,左右车轮电机接口连接驱动板上的电机信号控制插座,程序下载接口用于程序的在线下载,8通道传感器输入接口可以用于连接8个npn型传感器,非调速电机输出接口用于上部机构各种电机的控制。图2-2主控制板外形图图中,为了减少对单片机端口的占用,使用了2片74hc245总线驱动电路构成对单片机p2的复用,用单片机p4.4口的信号加以控制。当p4.4为低电平时,p2口接收到的是16路传感的低8位信号qq0-qq7,当p4.4为高电平时,p2口接收到的是16路传感器的高8位信号q8-qq15。28通道传感器输入接口8通道传感器输入接口用于连接光电、接近或者超声传感器等,可以在整体设机器人时,充分利用各种传感器探测外部信息,其中4通道输入接口电路图如图2-3所示。图2-3 通道传感器输入接口图中,展示了4路传感器输入接口,输入信号使用了单片机的p0.0-p0.3口,插座j8-j11分别接4个不同传感器,传感器直接使用市场现有的成熟产品,主要有:图2-4所示的红外传感器,在机器人中,主要用来探测四周是否存在障碍或者是否到达预定物体附近,图2-4 红外传感器 图2-5接近开关其最大探测距离根据所用型号的不同,有30cm、1m、2m多种;图2-5所示为接近开关,主要用在机器人上探测一些运动部件是否到位,探测距离一般在5mm以下。传感器上有3根引线,分别接j8-j11的3个引脚。需要注意的是:使用的传感器必须是npn型,工作电压在6v-36v之间。图2-3所示的的电路均为低电平有效,即传感器探测到目标时,反相器输出端即单片机的p0-p3脚为低电平信号,否则为高电平。3pwm和电机方向控制电路图2-6 pwm和电机方向控制电路pwm和电机方向控制电路如图2-6所示,stc12c5a60s2本身具有2路pwm输出,即p1.3和p1.4为pwm输出端口,分别控制左(p1.4控制)右(p1.3控制)电机的转速,图2-6中,p15和p12分别是左(p1.5控制)右(p1.2控制)电机的方向控制信号,需要注意的是,p1.5和p1.2是低电平有效,即p1.5和p1.2是低电平时,电机驱动板上的继电器常开触点闭合,电机反转。5非调速电机输出接口本电路板上设置了8个非调速电机输出接口,可以用来控制4个正反转直流电机或者8个单向运转直流电机,电路图如图2-7所示。图2-7中,p16、p17,p32-p37为8个控制信号,使用了单片机的p1.6、p1.7和p3.2-p3.7口,同样需要注意,这些信号均是低电平有效。图2-7 非调速电机输出接口6扩展接口主控制板中,p1.0和p4.5两个接口没有使用,用插座对外引出,参赛队可以根据自己机器人的设计情况加以使用。7下载接口本电路板上有一个db9串口接口,可以用来实现程序的在线下载。在线下载的主要步骤为:1)首先关闭本电路板的12v电源,取出串口连接线。一头接本电路板的db9下载口,另一头接pc机箱后的9针串口。如果你的电脑后面没有空余9针串口,可以使用usb转串口转接头。2)打开stc-isp在线下载软件,进行程序的下载,具体操作方法见stc12c5a60s2数据手册;下载完毕,从电路板上取下串口下载线。2.2.3巡线传感器自动机器人平台底部安装了16路巡线传感器,可以可靠地探测到地面白条以及白条的十字交叉点。光源发射部分采用了16个高亮led发射管,用16个光敏电阻接受地面反射回来的光线,输出插座连接传感器信号处理板的巡线传感器输入接口。2.2.4传感器信号处理板1概述传感器信号处理板仅自动机器人平台使用,电路板实物如图2-8所示。图中,巡线传感器输入接口连接安装在机器人平台底部的16路巡线传感器;信号输出接口连接单片机控制板,插座jp接12v电源,注意板子上的电源正极标志,不要插反。图2-8 传感器信号处理板16路巡线传感器将采集到的地面白条信息送入本电路板,对于采集的信息先进行放大处理,放大后的信号跟标准电压比较,保留白条反射的有效信号,过滤掉地面背景反射信号,有效信号再通过稳压、反向、放大处理后送入单片机控制板,同时用发光二极管的亮暗指示当前某路传感器是否在地面白条上。2信号放大电路本电路板使用了16路信号放大电路,第一路传感器信号放大电路如图2-9所示。(其余15路电路均相同)图2-9 信号放大电路2-9中,q0为单路传感器输入信号,数值很小,若巡线传感器在地面白条上,大约在0.9v左右;若巡线传感器不在地面白条上,数值大约在0.3v左右,此信号输入到由运放lm324组成的同相放大电路,调节电位器rw1可以改变整个放大电路的放大倍数(实际电路中,rl使用了阻值1k的排阻),即调节了放大电路输出的qq0。若q0为地面白条反射的有效信号,通过调节rw1,使qq0的电压输出为9.5v-10v左右,若q0为地面背景反射的信号,根据地面背景的颜色以及光滑程度,qq0大致在4-6v左右,越低越好。3、自动机器人平台的装配和调试3.1机器人装配过程机器人底盘安装即把主动轮,电机,从动轮,传感器依次安装至底盘铝合金框架上以及完成线路板之间的连接。3.1.1主动轮电机装配安装步骤:从左至右,依次结合螺栓,主动轮,连接钢板,以及电机,并且旋紧,把三个轮套套在主动轮上。3.1.2电机安装至铝合金架板直流电机直接对准相应钢板部位,螺丝旋紧即可。3.1.3从动轮及传感器安装从动轮和传感器直接对准相应部位,螺丝旋紧即可。3.1.4电路板的安装1将三个电池固定在平台上。2将传感器信号处理板、电机驱动板、主控制板从下至上叠加在一起,固定了平台上。3连接信号线:用20芯排线连接16路巡线传感器的输出和传感器信号处理板的传感器输入接口;用20芯排线连接传感器信号处理板的信号输出接口与主控制板的16路传感器输入接口;面板上的启动按钮连接主控制板的启动按钮插座;用10芯排线连接主控制板的左右车轮电机接口与电机驱动板的控制信号接口;左右车轮电机连接电机驱动板的左右电机输出插座。4连接电源线:12v电源线连接主控制板的12v电源输入插座;主控制板的12v电源输出插座连接传感器信号处理板的12v电源输入插座;24v电源连接电机驱动板的24v电源插座。连接电源时,务必确认主板上电源插座的正负极,切勿插反。3.2机器人平台的调试在机器人平台全部安装完毕,初步检查无误后,下一步就进行必要的调试,主要的调试步骤如下:1进行传感器信号处理板的调试。2将程序下载到单片机中。3将机器人平台放到场地上。4先后打开12v电源和24v电源,按下启动按钮,观察机器人平台运行情况。4、可行性的上部机器手臂设计方案第一代旋转机构主要采用舵机控制云台见下图:但是第一代机器人上部机构设计完成后,发现设计过于复杂,所用的传感器在不接扩展板的情况下,用一片单片机远远不能对其进行精密控制,导致第一代机器人设计失败。鉴于此情况我们参赛小组又连日赶制第二代上部机构,第二代机器人的上部机构去掉了旋转云台,采用二维设计,这种设计的灵活度虽没有第一代上部机构灵活度高,但便于控制,如图:连日来赶制的第二代机器人上部机构终于完工,但小组成员并没有高兴起来,因为二代机器人上部机构由于y轴步进电机的功率过小,导致不能正常的驱动机器手进行上下移动,此时小组成员以陷入困境。辛辛苦苦做出来的二代机器手却因为y轴步进电机功率过小而不能使机器手动作,鉴于此情况我们当中的一位成员突然想到电梯的结构,大多数电梯都有配重装置,我们马上开工,对二代上部机构进行改进,做出了第三代机器人上部机构,如下图:此处说明:y轴步进电机不能采用功率非常大的电机,因为y轴步进电机的动作是最频繁的,功率过大后很有可能导致蓄电池的电能在没有完成任务之前就没电啦。5、驱动软件的编写及调试 ;-*河北能源职业技术学院机器人小组调试程序*-;-*以下为伪指令定义程序*-num equ 7fh ;count equ 7eh ;需要循迹的路线条数hlwp bit p1.0 ;start bit p1.1 ;rdir bit p1.2 ; ;右电机rpwm bit p1.3 ;lpwm bit p1.4 ;ldir bit p1.5 ; ;左电机ccon equ 0d8h;pca 控制寄存器cl equ 0e9h; /pca 计数器低位ch equ 0f9h; /pca 计数器高位cmod equ 0d9h; /pca 工作模式寄存器ccap0l equ 0eah; /pca 模块 0 的捕捉/比较寄存器低 8 危ccap0h equ 0fah; /pca 模块 0 的捕捉/比较寄存器高 8 位ccap1l equ 0ebh; /pca 模块 1 的捕捉/比较寄存器低 8 位。ccap1h equ 0fbh; /pca 模块 1 的捕捉/比较寄存器高 8 位。fosc_0 equ 79h;fosc_0为pwm0占空比设置形参 ,右电机fosc_1 equ 7ah;fosc_1为pwm1占空比设置形参,左电机ccapm0 equ 0dah; /pca 模块0 pwm 寄存器ccapm1 equ 0dbh; /pca 模块1 pwm 寄存器pca_pwm0 equ 0f2h; /pca 模块0 pwm 寄存器pca_pwm1 equ 0f3h; /pca 模块1 pwm 寄存器?forward equ 1 ;backward equ 0 ;p1m1 equ 91h ;p1m0 equ 92h ;p2m1 equ 95h ;p2m0 equ 96h ;p4sw equ 0bbh ;- 以下为传感器低高8位-;-hlwp=0时读取低八位,wl_wp=1时读取高八位-wp_0_8 equ p2.0 ;wp_1_9 equ p2.1 ;wp_2_10 equ p2.2 ;wp_3_11 equ p2.3 ;wp_4_12 equ p2.4 ;wp_5_13 equ p2.5 ;wp_6_14 equ p2.6 ;wp_7_15 equ p2.7 ;-s2con equ 9ah ;ie2 equ 0afh ;s2buf equ 9bh ;auxr equ 8eh ;auxr1 equ 0a2h ;brt equ 9ch ;iap_contr equ 0c7h ;reload_count equ 0fdh;串行口波特率设置为9600;-*以下为主程序*-org 0000hljmp mainorg 0043hljmp main_1org 0100h;* main: mov c,start ; 检测小车启动键是否按下 jc main ; mov sp,#0c0h ; mov s2con,#50h ;串口2方式1 mov brt,#reload_count ; 设定波特率为9600 mov auxr,#11h ; mov ie2,#01h ; setb ea mov auxr1,#10h ; mov 41h,#00h ;以下是等待裁判的出发命令, mov 51h,#00h ;以下是等待裁判的出发命令, mov 61h,#00h ;以下是等待裁判的出发命令, mov 71h,#00h ;以下是等待裁判的出发命令,main_wait1: mov a,41h cjne a,#03h,main_wait1;main_wait2: mov a,51h cjne a,#04h,main_wait2;main_wait3: mov a,61h cjne a,#05h,main_wait3;main_wait4: mov a,71h cjne a,#09h,main_wait4; mov auxr1,#00h mov auxr,#00h mov ie2,#00h clr ea lcall s_t;. lcall qian1 lcall turn_90l lcall qian1 lcall qian1 ;发关键点1信息 lcall qian1 lcall qian1 ;发关键点2信息 lcall qian1 lcall turn_90r lcall qian1 lcall turn_90l lcall qian1 lcall qian1 ;到货架位置了,扫描工件代码 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall turn_90r lcall qian1 lcall qian1 lcall qian1 ;发关键点3信息 lcall qian1main_jiaotong:lcall qian1 djnz 74h,main_jiaotong lcall turn_90r lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 ;发关键点4信息 lcall qian1 lcall qian1 lcall qian1 lcall qian1 lcall qian1 sjmp $qian1: nopqian1_1:lcall jiu_pian lcall caiyan_16 mov a,count cjne a,#1h,qian1_1 ret;*;-以下为s_t初始化程序-s_t: mov p1m1,#00h; mov p1m0,#18h; mov p2m1,#0ffh; mov p2m0,#00h; mov p4sw,#50h; /p4.4和p4.6口设置,都为i/o输出口 lcall pwm0_1; /pwm的初始化设置 ret;- 以下为motor程序-motor:mov cmod,#80h mov ccon,#00h mov cl,#00h mov ch,#00h setb 0a8h.6 ;开pca中断 setb ea ;开总中断 setb 0d8h.6 ;将pca计数器打开,非常重要 ; setb rdir;forward 左电机正转向后走 ,以一个轮的为前,双轮为后 mov ccap0h,fosc_1 mov ccap0l,fosc_1 mov ccapm0,#42h;/8位pwm输出,无中断 mov pca_pwm0,#00h ;有脉冲输出,值为03h时无脉冲输出 ; clr ldir;backward 右电机反转向前走,以一个轮的为前,双轮为后 mov ccap1h,fosc_0 mov ccap1l,fosc_0 mov ccapm1,#42h; /8位pwm输出,无中断 mov pca_pwm1,#00h ret;- 以下为pwm0占空比设置- pwm0: mov ccap0h,#150 mov ccap0l,#150 mov ccapm0,#42h;/8位pwm输出,无中断 mov pca_pwm0,#00h ;有脉冲输出,值为03h时无脉冲输出 ret;- 以下为pwm1占空比设置-pwm1: mov ccap1h,#250 mov ccap1l,#250 mov ccapm1,#42h; /8位pwm输出,无中断 mov pca_pwm1,#00h ret;- 以下为pca时钟源 控制寄存器 计数初值 设置- pwm0_1: mov ccon,#00h mov ch,#00h mov cl,#00h mov cmod,#00h ret;- 以下为delay_ms程序-delay_ms: ; 调用延时程序前要赋值给r6 dl0: mov r7,#250 dl1: nop nop djnz r7,dl1 djnz r6,dl0 ret;- 以下为stop_l程序-stop_l: mov ccap0h,#0 mov ccap0l,#0 mov ccapm0,#42h mov pca_pwm0,#0 ret;- 以下为stop_r程序-stop_r: mov ccap1h,#0 mov ccap1l,#0 mov ccapm1,#42h mov pca_pwm1,#0 ret;- 以下为turn_90r程序-turn_90r:turn_0r: mov fosc_0,#165 ;左电机速度 mov fosc_1,#165 ;右电机速度 clr rdir setb ldir lcall motor mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms clr p1.0 ;选择低8位巡线发光管 mov a,p2 anl a,#0e0h cjne a,#0,turn_1r sjmp turn_0rturn_1r: mov r6,#10 ;检测第二遍 lcall delay_ms clr p1.0 ; 选择低8位巡线发光管 mov a,p2 anl a,#0e0h cjne a,#0,turn_2r sjmp turn_0rturn_2r: ret;-;- 以下为turn_90l程序-turn_90l:turn_0l: mov fosc_0,#165 ;左电机速度 mov fosc_1,#165 ;右电机速度 setb rdir clr ldir lcall motor mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms mov r6,#250 lcall delay_ms setb p1.0 ; 选择高8位巡线发光管 mov a,p2 anl a,#07h cjne a,#0,turn_1l sjmp turn_0lturn_1l: mov r6,#10 lcall delay_ms setb p1.0 ; 选择高8位巡线发光管 mov a,p2 anl a,#07h cjne a,#0,turn_2l sjmp turn_0lturn_2l: mov fosc_0,#160 ;左边电机 mov fosc_1,#160;右边电机 setb rdir setb ldir lcall motor mov r6,#100 ;延时1000ms lcall delay_ms lcall delay_ms lcall delay_ms lcall delay_ms lcall delay_ms lcall delay_ms ret;-需要数的线路条数-caiyan_16:mov count,#00h mov num,#00h clr p1.0 ;选择低8位巡线发光管 mov a,p2 mov r7,#8 clr ccaiy_l0: rrc a jnc caiy_l1 inc numcaiy_l1: djnz r7,caiy_l0 setb p1.0 ;选择高8位巡线发光管 mov a,p2 mov r7,#8 clr ccaiy_l3: rrc a jnc caiy_l4 inc numcaiy_l4: djnz r7,caiy_l3 mov a,num cjne a,#9,caiy_l5 inc count ljmp caiy_l_end caiy_l5: cjne a,#10,caiy_l6 inc count ljmp caiy_l_end caiy_l6: cjne a,#11,caiy_l7 inc count ljmp caiy_l_end caiy_l7: cjne a,#12,caiy_l8 inc count ljmp caiy_l_end caiy_l8: cjne a,#13,caiy_l9 inc count ljmp caiy_l_end caiy_l9: cjne a,#14,caiy_la inc count ljmp caiy_l_end caiy_la: cjne a,#15,caiy_lb inc count ljmp caiy_l_end caiy_lb: cjne a,#16,caiy_l_end inc count caiy_l_end: ret;-以下为纠偏走直线程序-jiu_pian:clr p1.0 ;检测低八位mov a,p2anl a,#20hjz loop_high_1mov fosc_0,#215mov fosc_1,#140 ;右边电机setb rdirsetb ldirlcall motorlcall delay_mslcall delay_mslcall delay_msloop_high_1:setb p1.0 ;检测高八位mov a,p2anl a,#04hjz loop_low_2mov fosc_0,#140mov fosc_1,#215 ;zuosetb rdirsetb ldirlcall motorlcall delay_mslcall delay_mslcall delay_msloop_low_2:clr p1.0 ;检测低八位mov a,p2anl a,#10hjz loop_high_2mov fosc_0,#215mov fosc_1,#140setb rdirsetb ldirlcall motorlcall delay_mslcall delay_mslcall delay_msloop_high_2:setb p1.0 ;检测高八位mov a,p2anl a,#08hjz loop_low_3mov fosc_0,#140mov fosc_1,#215setb rdirsetb ldirlcall motorlcall delay_mslcall delay_mslcall delay_msloop_low_3:c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论