版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、智能机器人跨专业公选实验实验指导书范守文 吴献钢 袁太文 陈畅电子科技大学机械电子工程学院2005年9月机器人自己做,也许你从小有这样的一个梦,在这里,我们让你梦想成真!第一篇 机器人控制电路基础图1 复位电路一、复位电路任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5ms的时间就可以了。如何进行复位呢?只要在单片机的RST引脚上加上高电平,就可以了,按上面所说,时间不少于
2、5ms。为了达到这个要求,可以用很多种方法,这里提供一种供参考,见图1。图2 晶振电路这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。二、晶振电路图3 机器人驱动芯片AS611单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图2接上即可。三、机器人驱动芯片AS611图3是机器人驱动芯片AS611与51单片机连接的电路原理图AS611内部包含4通道逻辑驱动电路,其额定工
3、作电流为1A,最大可达1.5A,Vss电压最小4.5V,最大可达36V;Vs电压最大值也是36V。下表是其使能、输入引脚和输出引脚的逻辑关系(电路按图3连接):EN A(B)IN1(IN3)IN2(IN4)电机运行情况HHL正转HLH反转H同IN2(IN4)同IN1(IN3)快速停止LXX停止四、74LS21四输入与门图4 74LS21四输入与门引脚图74LS21四输入与门引脚如图4所示。五、LM324四运放集成电路图5 LM324四运放的组成与引脚图LM324是四运放集成电路,它采用14脚双列直插塑料封装。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放
4、大器可用图5a所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。LM324的引脚排列见图5b。图6 碰撞开关引脚与尺寸图123由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。当去掉运放的反馈电阻时,或者说反馈电阻趋于无穷大时(即开环状态),理论上认为运放的开环放大倍数也为无穷大。此时运放便形成一个电
5、压比较器,其输出如不是高电平(V+),就是低电平(V-或接地)。当正输入端电压高于负输入端电压时,运放输出低电平。六、碰撞开关 碰撞开关引脚与尺寸如图6所示。引脚1为信号输出脚,引脚2接地,引脚3接+5V。七、红外发射管图8 红外接收头引脚与尺寸图图7 红外发射管外形与电路符号红外发射管发出的光是不可见的,它发出的峰值波长在900nm左右,属于红外波段,由于一般半导体硅光敏器件的峰值波长在900nm左右,因此可以方便地构筑红外传感系统。智能机器人实验中使用的红外发射管波长为880nm,其电路符号及外形如图7所示。图9 红外传感器测障原理红外发射管的主要优点是:体积小、寿命长、功耗小、响应速度快
6、(可以调制到几十兆赫)等,因此在光电控制中被大量采用。其主要缺点是:有方向性、易受环境温度影响等。红外发射管工作在正向电压下,其正向特征与普通二极管一样。对它施加几伏正向电压后,就会发出不可见的红外光,光敏元件接收到此红外光后,就会输出相应的信号。由于红外发射管在正向电流下工作,因此发光强度随正向电流的增加而增加,因此调整流过红外发射管的正向电流,便可以调整输出光功率(即发光强度),对应地达到调整有效检测距离的目的。八、红外接收头红外接收头引脚与尺寸如图8所示。引脚1为信号输出脚,引脚2接地,引脚3接+5V。当接收到红外信号时,其信号输出脚输出为低电平。九、红外传感器测障原理红外传感系统依靠发
7、射并接收由障碍物反射回来的红外光来判断是否有障碍物。如图9所示,红外光以60的散射角向外发射,阴影区域分别是左右两个红外发射管的反射区域,而红外接收模块正好处于左右两个反射区域内,能接收到左右两个红外发射管的反射光,从而可以判定前方、左边、右边有无障碍物。图10 机器人控制板的电源十、机器人控制板的电源机器人控制板的电源部分分两路,一路直接由充电电池提供,主要是提供给电机使用,另一路通过三端稳压芯片LM7805稳压成5伏直流电源提供给单片机系统使用,右边两个电容是5伏电源的滤波电容,电阻和发光二极管组成5伏电源的工作指示电路,只要电源部分正常,发光二极管组就会点亮,我们可以根据这个发光二极管组
8、来判断整个电源部分是否工作正常,左侧的开关是整个机器人控制系统电源的总开关。第二篇 机器人控制软件基础一、中断服务程序有关中断的概念什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了.等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的
9、事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了
10、情况。考虑一下我们会怎么办吧。第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:1、 保护断点,即保存下一将要执行的指令的地
11、址,就是把这个地址送入堆栈。2、 寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。3、 执行中断处理程序。4、 中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。究竟单片机是怎么样找到中断程序所在位置。中断请求源:1. 外中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的TCON中有四位是与外中断有关的。
12、IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。2. 内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断。中断允许寄存器IE 在MCS51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控
13、制的。EA是总开关,如果它等于0,则所有中断都不允许。ES 串行口中断允许ET1定时器1中断允许EX1外中断1中断允许。ET0定时器0中断允许EX0外中断0中断允许。我们也可以用位操作指令SETB EASETB ET1SETB EX1来实现它。五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH外中断1:0013H定时器1:001BH串口 :0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写:ORG 0000HLJMP STARTORG 0030HSTART:这样写的目的,就是为了让出中断源所占用的向量地址。图11 按
14、键接口电路图12 按键的抖动波形二、按键接口与编程按键是单片机最常用的输入设备,用户可以通过按键向计算机输入指令、地址和数据,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。按键开关的抖动问题 组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。在图11中,当按键未被按下时,P1.0输入为高电平,当按键闭合后,P1.0输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动动,P1.0输入端的波形如图12所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全可以感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机
15、而言,这已是一个“漫长”的时间了。前面我们讲到中断时曾有个问题,就是说按键有时灵,有时不灵,其实就是这个原因,你只按了一次按键,可是计算机却已执行了多次中断的过程,如果执行的次数正好是奇数次,那么结果正如你所料,如果执行的次数是偶数次,那就不对了。为使CPU能正确地读出P1口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动。单片机中常用软件法,软件法其实很简单,就是在单片机获得P1.0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P1.0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高)再延
16、时5-10个毫秒,消除后沿的抖动,然后再对键值处理。不过一般情况下,我们通常不对按键释放的后沿进行处理,实践证明,也能满足一定的要求。当然,实际应用中,对按键的要求也是千差万别,要根据不同的需要来编制处理程序,但以上是消除键抖动的原则。按键编程方法示例(通过按键控制小车前进、后退、左转、右转)ORG 0000hAJMP L1ORG 0100hL1:MOV A,P1JNB ACC.0,L2JNB ACC.1,L3JNB ACC.2,L4JNB ACC.3,L5 MOV A,#0h ;停止 MOV P2,AAJMP L1L2:ACALL DELY10ms MOV A,P1JB ACC.0,L1 M
17、OV A,#27h ;前进 MOV P2,A AJMP L1L3:ACALL DELY10msMOV A,P1 JB ACC.1,L1 MOV A,#1bh ;后退 MOV P2,A AJMP L1L4:ACALL DELY10msMOV A,P1 JB ACC.2,L1 MOV A,#17h ;左转 MOV P2,A AJMP L1L5:ACALL DELY10ms MOV A,P1JB ACC.3,L1 MOV A,#2bh ;右转 MOV P2,A AJMP L1 DELY10ms: MOV R6,#50 ;12M晶振,延时10msDL1: MOV R5,#100DL2: DJNZ R5
18、,DL2 DJNZ R6,DL1 RETEND第三篇 机器人机械结构图13 直流电机各种关系图一、机器人中的电机电机在机器人驱动中起着重要的作用。直流电机的作用原理是建立在电与磁的相互转化和相互作用的基础上的。它主要由定子和转子两大部分组成。定子上有励磁绕组,由它产生磁场。转子与机械负载相联,上面安装有电枢绕组,并通过电刷与直流电源联接,电枢绕组上的电压称为电枢电压。电枢中由于电刷的作用,被通以交变的电流,使转子在磁场中连续相对运动,输出物理量转速和转矩。由此,转子便带动机械负载(如智能机器人中的主动轮)运动。T0T0:为一定的转矩图14 直流电机转矩转速关系图T(转矩)n1n2n(转速)U2
19、=12vU1=6v图13为直流电机的电流、功率、效率与转速的关系图。T为转矩,n为转速,P为功率。当电机无负载时转速最快,转矩越大转速越小;功率则是随转矩的增大而增大,当功率达到最大值后,功率则是随转矩的增大而减小;电流随转矩的增大而增大;效率则先增大,当达到最大值时又随之减小。直流电机在一定的电枢电压下,转速与转矩成反比。如果改变电压,则转矩/转速线随着电压的升降而升降(如图14)。在智能机器人负载一定时(即转矩一定时),提高电压,即电压由u1到u2,对应的转速为n1和n2,可见,n1n2,即当电枢电压提高时,电机转子的转速便也提高。所以只要改变直流电机电枢电压的大小,就可以实现直流电机的调
20、速。图15 不同宽度的方波实现PWM控制直流电机能调速,这点对于控制机器人的运动构件非常重要,因为只有当电机的转动能被控制成时快、时慢、时正、时反时,机器人才可能按照所设计的运动规律来动作。智能机器人采用的是改变电机电枢电压的方式来改变直流电机的转速,这种方式只是直流电机调速方式之一,有关详细资料可参考有关资料。提供给电机的信号是方波,不同的方波,它的平均电压不同如图15所示,u1u2u3,我们就利用这一点来进行智能机器人的速度控制。进而调节电机的转速,这就是脉宽调制技术(PWM,Pulse Width Modulation)。二、机器人的传动系统图16 齿轮机器人的运动由两个主动轮的运动来完
21、成,而它们分别由两套完全一样的驱动装置来分别带动两个驱动轮。在机器人的驱动装置中,减速器是主要的机械部件,它构成了机器人的传动系统,下面对减速器进行介绍。1、齿轮齿轮机构是现在机械中应用最为广泛的一种传动机构。他可以用来传递空间任意两轴间的运动和力,而且传动准确、平稳、机械效率高,使用寿命长和工作安全可靠。1)齿轮各部分的名称齿轮上每个凸起部分称为齿,齿轮的齿数用z表示。其他参数为:(1) 齿顶圆 过所有齿轮顶端的圆称为齿顶圆,用半径ra表示,直径用da表示。分度圆和齿轮圆之间的径向距离称为齿顶高,用ha表示。(2) 齿根圆 过所有齿槽底部的圆称为齿根圆,用半径rf表示,直径用df表示。分度圆
22、和齿根圆之间的径向距离称为齿根高,用hf表示。(3) 分度圆 齿顶圆和齿根圆之间的一个特殊定圆,用半径r表示,直径用d表示。(4) 全齿高 齿顶圆与齿根圆之间的径向距离称为全齿高,用半径h表示,h=ha+hf。(5) 基圆 产生渐开线的圆称为基圆,用半径rb表示,直径用db表示。图17 齿轮中心距(6) 齿厚 每个齿轮上的圆周弧长称为齿厚。在半径为rk的圆周上度量的弧长称为该半径上的齿厚,用sk表示。在分度圆上度量弧长称为分度圆槽宽,用e表示。(7) 槽宽 两个齿间齿槽上的圆周弧长称为槽宽。在半径为rk的圆周上度量的弧长称为该半径上的槽宽,用ek表示。在分度圆上度量弧长称为分度圆齿厚,用S表示
23、。(8) 齿距 相邻两个齿轮同侧齿廓之间的圆周弧长称为齿距。在半径为rk的圆周上度量的弧长称为该半径的齿距,用pk表示,显然pk=sk+ek。在分度圆上度量的弧长称为分度圆齿距,用p=s+e表示。在基圆上度量的弧长称为基圆齿距,用pb表示,pb=sb+eb,sb和eb是基圆上的齿厚与槽宽。(9) 法向齿距 相邻两个齿轮同侧齿廓之间在法线方向上的距离称为法向齿距,用pn表示。由渐开线性质可知:pn=pb。(10) 中心距 中心距是指相互啮合的一对齿轮,两齿轮的圆心之间的距离,用a表示,a=r1+r2。如图17所示。2)基本参数为了计算齿轮各部分几何尺寸,需要规定若干基本参数,对于标准齿轮而言,有
24、以下5个基本参数:(1) 齿数z(2) 分度圆模数m 分度圆周长d=zp,于是可得: d=zp/ 由于是无理数,分度圆的直径也将为无理数,用一个无理数的尺寸作为设计标准,对设计是很不利的。为了方便设计、加工和检验,人为地把分度圆齿距与的比值用m表示,并取其为一理数列,即:p/=m m称为分度圆模数,也简称为模数,单位为mm。分度圆直径d=mz,分度圆齿距p=m。(3) 分度圆压力角 过分度圆与渐开线交点作基圆切线得切点N,该交点与中心O的连线与NO线之间的夹角用表示,其大小等于渐开线在分度圆圆周上压力角的大小。为方便起见,往往用这个中心角表示分度圆压力角。我过规定分度圆压力角标准值一般为20。
25、在某些装置中,也有用分度圆压力角为14.5、15、22.5、和25等的齿轮。至此,我们可以给分度圆下一个完整的定义:分度圆就是齿轮中具有标准模数和标准压力角的圆。(4) 齿顶高系数ha* 齿顶高ha用齿顶高系数ha*与模数的乘积表示,ha=ha*m(5) 顶隙系数c* 齿根高hf用齿顶高系数ha*与顶隙系数c*之和乘以模数表示,hf=( ha*+c*)m。我国定了齿顶高系数和顶隙系数的标准值:图18 齿轮减速器正常齿制(1) 当m1mm时,ha*1,c*=0.25(2) 当m1mm时,ha*1,c*=0.35短齿制 ha*0.8,c*=0.33)渐开线标准直齿轮的几何尺寸和基本参数的关系渐开线
26、标准直齿轮除了基本参数是标准值外,还有两个特征:(1) 分度圆齿厚与槽宽相等,即 s=e=p/2=m/2(2) 具有标准的齿顶高和齿根高,即 ha=ha*m hf=( ha*+c*)m不具备上述特征的称为非标准齿轮。2、减速器减速器是指原动机与工作机之间独立的闭式传动装置,用来降低转速和相应的增大转距。此外,在某些场合,用来增速的。并名为增速器。减速器的种类很多,常用的减速器有齿轮及蜗杆减速器。按其传动和机构的特点,大致可以分为三类:1)齿轮减速器 2)蜗杆减速器 3)行星减速器。这里仅讨论齿轮减速器,按其减速齿轮的级数可以分为一级、二级、三级及多级,如图所示:按其轴在空间的相互配置可以分为立
27、式和卧式;按其运动简图的特点可以分为展式、同轴式和分流式等。我国已将减速器系列化了,而且指定了某些类型减速器的标准系列。在指定标准系列时,对减速器的主要参数,如中心距,模数,齿宽系数及传动比等,还做了一系列的规定。在计算时须将数值转换成与其相近的标准值。现将减速器的常用参数计算公式列表如下:类型中心距符号总中心距传动比符号总传动比一级aa=a=1/2(d2+d1)ii=z从/z主二级高速级afa=af+as高速级ifi=if*is低速级as低速级is三级高速级afa=af+am+as高速级ifi=if*im*is中速级am中速级im低速级as低速级is减速器的每级有两个齿轮相互啮合传递动力,小
28、齿轮为主动轮(Z1),大齿轮为从动轮(Z2),小齿轮转一周而大齿轮则转不到一周,故而减速(反之,便为增速)。二、机器人的总体结构机器人由机器人小车、手臂、手爪等部分组成,机器人小车、手臂、手爪通过螺纹连接件连接装配在一起。机器人总体三维结构如图19所示,零件之间的三维装配关系如图20所示,手臂和手爪通过电机带动拉绳来驱动。电机停止工作时,在弹簧或橡皮筋的拉动下,手臂和手爪将会回复原位。以上机器人手臂和手爪的总体结构图仅供同学们参考,同学们可以自己创意设计自己的机器人手臂和手爪的结构。三、机器人的手臂结构(若干零件图,用AutoCAD软件绘制)四、机器人的手爪结构(若干零件图,用AutoCAD软
29、件绘制)图20 机器人装配关系示意图图19 机器人的总体结构图第四篇 机器人实验实验一 基础实验按照图21的电路图连接各电子元器件,控制板上元器件参考布局如图22所示。上电之前请按照以下步骤做好电路检查工作:1) 确保电源正负极之间没有短路(一定要慎重!)2) 确保AT89C51芯片、AS611芯片相邻引脚之间没有短接。3) AT89C51芯片的引脚20与电源负极相连,AT89C51芯片的引脚31、40与电源正极相连。4) AS611芯片的引脚4、5、12、13与电源负极相连,AS611芯片的引脚8、16与电源正极相连。5) 复位电路、晶振电路按照电路图正确连接。6) AT89C51芯片的引脚
30、21、22、23、24分别与第一块AS611芯片的引脚2、7、10、15相连,AT89C51芯片的引脚25、26、27、28分别与第二块AS611芯片的引脚2、7、10、15相连。图21 实验一电路图输入以下的汇编程序,编译后将十六进制代码程序烧写进AT89C51芯片,在电路检查正确的前提下,可以尝试着上电,观察运行结果。如果电机不动,请立即断电。再做进一步的检查或者请求教师帮助。ORG 0000hAJMP MAINORG 0100hMAIN: MOV A,#09h ;二进制数00001001b 小车右转MOV P2,A ACALL DELYMOV A,#06h ;二进制数00000110b
31、小车左转MOV P2,A ACALL DELYMOV A,#05h ;二进制数00000101b 小车后退MOV P2,A ACALL DELYMOV A,#0ah ;二进制数00001010b 小车前进MOV P2,A ACALL DELYMOV A,#20h ;二进制数00100000b 手臂前进MOV P2,A ACALL DELYMOV A,#10h ;二进制数00010000b 手臂后退MOV P2,A ACALL DELYMOV A,#80h ;二进制数10000000b 手爪松开MOV P2,A ACALL DELYMOV A,#40h ;二进制数01000000b 手爪夹紧MO
32、V P2,A ACALL DELYMOV A,#0h ;所有电机停MOV P2,ASJMP MAIN DELY: MOV R7,#100 ;12M晶振,延时2秒DLY0: MOV R6,#100DLY1: MOV R5,#100DLY2: DJNZ R5,DLY2 DJNZ R6,DLY1 DJNZ R7,DLY0 RETAT89C51AS611AS611碰撞传感器接口手爪驱动电机接口手臂驱动电机接口小车右电机接口小车左电机接口外接电池接口电源总开关红外接收头复位按钮手控手柄接口LM7805稳压芯片右红外发射管右发光二极管左发光二极管左红外发射管图22 控制板上元器件参考布局示意图 END以下
33、是用单片机C语言编写的运动控制程序,其运动控制功能与上面的汇编语言程序相同。#include#define COUNT0 197#define COUNT1 100unsigned char bdata motorctrl;/*底盘两个电机对应的控制位*/sbit IN1_Base = motorctrl0;sbit IN2_Base = motorctrl1;sbit IN3_Base = motorctrl2;sbit IN4_Base = motorctrl3;/*手臂电机对应的控制位*/sbit IN1_Arm = motorctrl4;sbit IN2_Arm = motorctrl
34、5;/*手爪电机对应的控制位*/sbit IN3_Hand = motorctrl6;sbit IN4_Hand = motorctrl7;void delayL(unsigned char count2) small reentrant;void delayM(unsigned char count1) small reentrant;void delayS(unsigned char count0) small reentrant;void run(bit motor1, bit dir1, bit motor2, bit dir2, bit motor3, bit dir3, bit m
35、otor4, bit dir4);void stop(bit motor1, bit motor2, bit motor3, bit motor4);main() do run(1,0,1,1,0,0,0,0);/*右转*/ delayL(20);/*2s*/ run(1,1,1,0,0,0,0,0);/*左转*/ delayL(20); run(1,0,1,0,0,0,0,0);/*后退*/ delayL(20); run(1,1,1,1,0,0,0,0);/*前进*/ delayL(20); stop(1,1,0,0); run(0,0,0,0,1,1,0,0);/*手臂前进*/ dela
36、yL(20); run(0,0,0,0,1,0,0,0);/*手臂后退*/ delayL(20); stop(0,0,1,0); run(0,0,0,0,0,0,1,1);/*手爪松开*/ delayL(20); run(0,0,0,0,0,0,1,0);/*手爪夹紧*/ delayL(20); stop(0,0,0,1); while(1); void delayS(unsigned char count0) small reentrant/*/* 短延时函数 */* count0取值范围: 0 256 */* 延时计算方法: count0 x 5T + 2T 。 */* T:机器周期(振荡
37、周期的1/12)。 */*/ while(-count0);/* 对应的汇编代码 000A 150A DEC 00AH ;T 000C AF0A MOV R7,00AH ;T 000E EF MOV A,R7 ;T 000F 70F9 JNZ 0000AH ;2T 0011 22 RET ;2T*/void delayM(unsigned char count1) small reentrant/*/* 中延时函数 */* count1取值范围: 0 256 */* 延时计算方法: count1 x ( 11T + delayS(COUNT0) ) + 2T 。 */* T:机器周期(振荡周期
38、的1/12)。 */*/ while(-count1) delayS(COUNT0);/* 对应的汇编代码 0109 150B DEC 00BH ;T 010B AF0B MOV R7,00BH ;T 010D EF MOV A,R7 ;T 010E 6008 JZ 00118H ;2T 0110 750A64 MOV 00AH,#064H ;2T 0113 12000A LCALL 0000AH ;2T 0116 80F1 SJMP 00109H ;2T 0118 22 RET ;2T*/void delayL(unsigned char count2) small reentrant/*/
39、* 长延时函数 */* count2取值范围: 0 256 */* 延时计算方法: count2 x ( 11T + delayM(COUNT1) ) + 2T 。 */* T:机器周期(振荡周期的1/12)。 */*/ while(-count2) delayM(COUNT1);/* 对应的汇编代码 0119 150C DEC 00CH ;T 011B AF0C MOV R7,00CH ;T 011D EF MOV A,R7 ;T 011E 6008 JZ 00128H ;2T 0120 750B32 MOV 00BH,#032H ;2T 0123 120109 LCALL 00109H ;
40、2T 0126 80F1 SJMP 00119H ;2T 0128 22 RET ;2T*/void run(bit motor1, bit dir1, bit motor2, bit dir2, bit motor3, bit dir3, bit motor4, bit dir4)/*/* 运行函数 */* 电机选择(motor1,motor2,motor3,motor4): */ /* 为1表示对应的电机被选中进行“运转”操作,为0则表示没有被选中。 */* 运行方向选择(dir1,dir2,dir3,dir4): */* 对应的电机如果被选中,为1表示按照正方向运行,为0表示按反方向运行
41、。 */*/ if(motor1)/*1#电机*/ if(dir1) IN1_Base = 0; IN2_Base = 1; else IN1_Base = 1; IN2_Base = 0; if(motor2)/*2#电机*/ if(dir2)/*=1*/ IN3_Base = 0; IN4_Base = 1; else IN3_Base = 1; IN4_Base = 0; if(motor3)/*3#电机*/ if(dir3) IN1_Arm = 0; IN2_Arm = 1; else IN1_Arm = 1; IN2_Arm = 0; if(motor4)/*4#电机*/ if(di
42、r4)/*=1*/ IN3_Hand = 0; IN4_Hand = 1; else IN3_Hand = 1; IN4_Hand = 0; P2 = motorctrl; return;void stop(bit motor1, bit motor2, bit motor3, bit motor4)/*/* 停止函数 */* 电机选择(motor1,motor2,motor3,motor4): */ /* 为1表示对应的电机被选中进行“停止”操作,为0则表示没有被选中。 */*/ if(motor1) IN1_Base = IN2_Base = 0; if(motor2) IN3_Base
43、= IN4_Base = 0; if(motor3) IN1_Arm = IN2_Arm = 0; if(motor4) IN3_Hand = IN4_Hand = 0; P2 = motorctrl; return;图23 实验二电路图实验二 手控机器人按照图23连接各电子元器件,手控手柄上按钮及接口参考布局如图24所示,将手控手柄与机器人控制板通过手控手柄接口用约1.5米长的排线连接起来。输入以下的汇编程序,编译后将十六进制代码程序烧写进AT89C51芯片,观察运行结果。通过手控手柄控制机器人小车的前进、后退、左转、右转运动、手臂的前后运动以及手爪的夹持、松开等动作。ORG 0000hAJ
44、MP L1ORG 0100hL1:MOV A,P1JNB ACC.0,L2JNB ACC.1,L3JNB ACC.2,L4JNB ACC.3,L5JNB ACC.4,L6JNB ACC.5,L7JNB ACC.6,L8JNB ACC.7,L9 MOV A,#0h ;停止 MOV P2,AAJMP L1手控手柄接口小车前进小车后退小车左转小车右转手臂前伸手臂回缩手爪张开手爪闭合图24 手控手柄上按钮及接口参考布局图L2:ACALL DELY10msMOV A,P1 JB ACC.0,L1 MOV A,#0ah ;小车前进 MOV P2,A AJMP L1L3:ACALL DELY10msMOV
45、A,P1 JB ACC.1,L1 MOV A,#05h ; 小车后退 MOV P2,A AJMP L1L4:ACALL DELY10msMOV A,P1 JB ACC.2,L1 MOV A,#06h ; 小车左转 MOV P2,A AJMP L1L5:ACALL DELY10msMOV A,P1 JB ACC.3,L1 MOV A,#09h ; 小车右转 MOV P2,A AJMP L1L6:ACALL DELY10msMOV A,P1 JB ACC.4,L1 MOV A,#20h ; 手臂前进 MOV P2,A AJMP L1L7:ACALL DELY10msMOV A,P1 JB ACC.5,L1 MOV A,#10h ; 手臂后退 MOV P2,A AJMP L1L8:ACALL DELY10msMOV A,P1 JB ACC.6,L1 MOV A,#80h ; 手爪松开 MOV P2,A AJMP L1L9:ACALL DELY10msMOV A,P1 JB ACC.7,L1 MOV A,#40h ; 手爪夹紧 MOV P2,A AJMP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年口腔诊所与医生之间的专属聘用合同
- 2024年专用:知识产权许可合同
- 污水处理的城市地下水位污染治理考核试卷
- 2024年北京副中心商用物业租赁合同
- 城市绿化管理的城市森林与自然保护区考核试卷
- 2024年产品采购协议
- 2024年公司场地租赁合同范例
- 2024年借款协议模板:个人与企业间的借款与还款规定
- 2024年光伏组件质量保证与维修服务合同
- 2024年公共设施铝合金门窗安装合同
- 小学英语教师专业发展计划6篇
- CATTI汉英词汇手册
- 英语漫话天府新村智慧树知到答案2024年四川工商职业技术学院
- 《无人机法律法规知识》课件-第1章 民用航空法概述
- GB/Z 44306-2024颗粒质量一致性评价指南
- 大健康产业互联网医疗服务创新方案设计
- 医疗辅助服务行业发展前景与机遇展望报告
- 2024年新北师大版一年级上册数学课件 综合实践1 第2课时 观察教室
- 幼儿家庭教育(山东联盟)智慧树知到答案2024年青岛滨海学院
- 1 小熊购物 (教学设计)-2024-2025学年数学三年级上册北师大版
- (2024年)新人教版部编一年级道德与法治教材解读5
评论
0/150
提交评论