悬挂运动控制系统(E题)设计报告_第1页
悬挂运动控制系统(E题)设计报告_第2页
悬挂运动控制系统(E题)设计报告_第3页
悬挂运动控制系统(E题)设计报告_第4页
悬挂运动控制系统(E题)设计报告_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

悬挂运动控制系统(E题)设计陈说之勘阻及广创作纲要:本悬挂控制系统是一个电机控制系统,控制物体在80cm×100cm的范围内作直线、圆、寻迹等运动,并且在运动时能显示运动物体的坐标。设计采纳AT89S52单片机作为核心控制器件,采纳57BYG0074型步进电机和高细分步进电机驱动器SM60作为动力装置,采纳红外反射式光电传感器实现画板上黑色线寻迹检测,显示部分用液晶显示模块LCD1602实现。重点词:悬挂控制、单片机、步进电机、红外反射式光电传感器一、设计要求1、任务设计一电机控制系统,控制物体在倾斜(仰角≤100度)的板上运动。在一白色底板上固定两个滑轮,两只电机(固定在板上)经过穿过滑轮的吊绳控制一物体在板上运动,运动范围为80cm×100cm。物体的形状不限,质量大于100克。物体上固定有淡色画笔,以便运动时能在板上画出运动轨迹。板上标有间距为1cm的淡色坐标线(分歧于画笔颜色),左下角为直角坐标原点,表示图以下。2、基本要求:(1)控制系统能够经过键盘或其余方式随意设定坐标点参数;2)控制物体在80cm×100cm的范围内作自行设定的运动,运动轨迹长度不小于100cm,物体在运动时能够在板上画出运动轨迹,限300秒内达成;(3)控制物体作圆心可随意设定、直径为50cm的圆周运动,限300秒内达成;(4)物体从左下角坐标原点出发,在150秒内抵达设定的一个坐标点(两点间直线距离不小于40cm)。3、发挥部分1)能够显示物体中画笔所在地点的坐标;2)控制物体沿板上标出的随意曲线运动(见表示图),曲线在测试时现场标出,线宽~,总长度约50cm,颜色为黑色;曲线的前一部分是连续的,长约30cm;后一部分是两段总长约20cm的中断线段,中断距离不大于1cm;沿连续曲线运动限制在200秒内达成,沿中断曲线运动限制在300秒内达成;(3)其余。4、评分尺度基本要求发挥部分

项目满分设计与总结陈说:方案比较、设计与论证,理论剖析与计算,电路图及相关设计文件,测试方法与仪器,测试数据及测试结50果剖析。实质制作达成状况50达成第(1)项10达成第(2)项中连续线段运动14达成第(2)项中止续线段运动16其余105、说明1、物体的运动轨迹以画笔画出的印迹为准,应尽量使物体运动轨迹与预期轨迹符合,同时尽量缩短运动时间;2、若在某项测试中运动高出限制的时间,该项目不得分;3、运动轨迹与预期轨迹之间的偏差高出4cm时,该项目不得分;4、在基本要求(3)、(4)和发挥部分(2)中,物体开始运动前,同意手动将物体定位;开始运动后,不克不及再人为干涉物体运动;5、比赛结束时,控制系统封存上交赛区组委会,测试用板(板上含空白坐标纸)测试时自带。二、方案论证与选择方案一:FPGA/CPLD方式。即用FPGA/CPLD达成键盘定义与辨别、电机工作状态选择与切换、液晶电路的驱动与控制等功能。这类方案的长处在于系统构造紧凑、操控方便,并且能够使用的I/O口线好多;弊端是调试时需要接好多接线,过程繁琐,并且使用CPLD时,因为其内部没有ROM,对功能的实现有所限制。方案二:单片机方式。即由单片机、电机驱动电路及电机等构成系统。使用单片机也能够达成键盘定义与辨别、电机工作状选择与切换等功能,构成的系统规模较小,有必定灵巧性,并且能够使用我们比较熟习的单片机最小系统电路板,减少了工作量。该控制方式需要单片机拥有较大的程序储存量,所以可选择储存量为8K的AT89S52单片机。鉴于以上剖析,拟采用方案二。电机及其驱动模块的选择电机驱动模块是本系统的履行机构,用于控制悬挂物体的运动。方案1:采纳一般小型直流电机。一般直流电机因为其自己构造的限制,控制精度很低,没法达到系统要求的指标,这里不予采纳。方案2:采纳专用步进电机驱动器及与其配套的步进电机。用这类方案的控制精度、效率和靠谱性都很高。依据精度要求选择方案二。方案一:采纳多路阵列式光敏电阻构成的光电探测器。因为光敏电阻探测到黑线时,黑线上方的电阻值发生更改,经过电压比较器比较将信号送给单片机办理,进而控制物体做相应的动作。但因为光敏电阻对环境光的辨别,简单遇到外界环境光的影响。,方案二:采纳红外反射式探测,即用已调的红外线垂直射到板面,经反射后变换为电信号送入单片机办理。因为使用的是红外线,不受外界自然光的影响,循迹成效好。鉴于上边的议论,采用了抗扰乱能力强的方案二。方案一:采纳LED数码管显示器。LED数码管亮度高,醒目,可是其电路复杂,显示信息量较小,且动向扫描需要占用大批单片机时间,没法做到及时显示。方案二:采纳汉字LCD液晶显示器。LCD有显然的长处:微功耗、尺寸小,超薄轻盈、显示信息量大、笔迹清楚、雅观、视觉舒坦。本设计中采纳1602字符型LCM。1602字符型LCM战胜了LED数码管的弊端,拥有显示容量大、占用单片机口线少、节俭单片机时间、功耗低等长处,完整切合本系统要求。5.地点传感模块地点传感模块用于实现"显示画笔地点"的功能。关于这个模块能够有硬件和软件两类解决方案。方案1:在物体上装置水平易垂直方向的两只激光笔,在板边沿每条坐标线旁边装置一光电传感器,物体坐标所在处的传感器接收到激光笔,即可确立物体地点。可见本方案共需要180个光电传感器,造成此方案几乎不可实现。方案2:采纳软件的方法确立物体地点。单片机控制物体从某个已知的坐标地点出发,并且记录步进电机的每一次挪动情况,就能够经过必定的算法计算出物体的地点。这类方案没有位置传感器,精度较低,可是系统简单。防备了硬件方案过于复杂的弊端。本设计使用方案2。本模块采纳即插型按键,接在最小系统的

P2.0—P2.7,采纳了4×4的16点阵键盘。能够键入1—9的数字,即能够输入点的坐标值(X,Y),以及消除,确立,等功能按键。三、系统详细设计实现1、硬件电路的设计(1)系统的整体设计方案如图31所示采纳AT89S52单片机作为运动物体的控制中心,进行数学计算、对光电传感器送来的信号进行办理来控制运动物体的运转方向、计算运转物体的坐标地点、LCD数据显示、键盘控制等。图31系统方框图(2)黑线检测模块电路黑线检测模块电路图32所示。当红外线反射式光电传感器ST178位于黑线之上时,光电开关输出高电平;反之,输出低电平。光电传感器输出电平后接反相器74LS04以稳固电平易增大驱动能力。本设计采纳8个红外传感器实现对黑线的检测,经过并口转串口芯片74LS165将数据串行传递到单片机。图32黑线检测模块电路(3)键盘电路本设计采纳4x4矩阵键盘实现数字的输入和功能的选择,键盘接到AT89S52单片机的P2口,经过单片机对键盘的队列扫描实现按键的辨别。键盘电路如图33所示:图334x4键盘电路对应的按键码以下:789/456/123/消除0确认/4)单片机电源电路单片机控制电路、红外传感器模块电路和液晶显示模块均采纳+5V供电,采纳集成稳压芯片7805来实现,电路图如图34所示。图34单片机电源电路5)步进电机驱动电路本设计采纳57BYG0074型步进电机和专用高细分步进电机驱动器SM60作为动力装置。57BYG0074型步进电机为四相混淆式步进电机,因为实验室现有电机驱动器为两相的,固步进电机作两相使用,步距脚为1.8度,经过步进电机驱动器SM60细分实现步距脚0.9度。电机驱动器SM60接口以下:☆GND端为外接直流电源,直流电压为12v☆A+,A端为电机A相,B+,B端为电机B相。☆+COM端为光电隔绝电源公共端,接单片机供电电源为+5V,CP端为脉冲信号,降落沿有效。DIR端为方向控制信号,电平高低决定电机运转方向。FREE端为驱动器使能,高电平或悬空电机可运转。低电平驱动器无电流输出,电机处于自由状态。2、软件及算法设计(1)物体地点的计算图35物体地点表示图坐标点参数的计算将画笔所在的地点设定为整个物体的地点。如图35设定物体地点的初值坐标为(X,Y)L1=L2=设电机A的步进为acm,电机B的步进为bcm,物体高度为hcm。如图8为物体在画板某一地点,则有:解得X轴点地点和h为则Y轴点地点Y=115h控制物体从一点到另一点的实现就是当X、Y已知条件,求电机的步进过程。由图8解得:解得(cm)(cm)由此,利用软件实现以上算法来分别控制两个步进电机的步进a,b,这样就能够向控制系统输入起点坐标和终点坐标让物体在画板置随意行走。2)直线算法:目前画直线的算法也算是有好多,比方:逐点比较直线插补,脉冲增量插补和数据采集插补,本设计依据实质所学知识,选择了逐点比较直线插补法,详细以下:逐点比较法的基根源基础理是,在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对地点,并依据比较结果断定下一步的进给方向,使刀具向减小偏差的方向进给。图

36

第一象限直线如图

36所示,设直线的起点为坐标原点,终点坐标为

A(xe,

ye

),点

m(

xm,

ym)

为加工点(动点)。定义偏差公式为Fm

ymxe

xmye。若Fm=0,注明点m在OA直线段上;若Fm>0,注明点m在OA直线段上方,即点m’处;若Fm<0,注明点m在OA直线段下方,即点m’’处。由此可得第一象限直线逐点比较法插补的原理是:从直线的起点出发,当Fm0时,沿+x轴方向走一步;当Fm<0时,沿+y轴方向走一步;当双方向所走的步数与终点坐标xe,ye)相等时,发出终点到信号,停止插补。能够将上边所定义的偏差公式进一步简化,推导出偏差的递推公式。①当

Fm

0时,沿

+x

轴方向进给一步,Fm1

ym1xe

xm1ye

ymxe

(xm

1)ye

Fm

ye(1)②当Fm<0时,沿+y轴方向进给一步,Fm1ym1xexm1ye(ym1)xexmyeFmxe2)式(1)和式(2)是简化后偏差的计算公式,在公式中只有一次加法或减法运算,新加工点的偏差都可由前一点偏差和终点坐标相加或相减获得。本体设计中采纳以上原理,可是关于非原点开始的直线,采纳起点坐标归零思想,结果也证了然改思路的可行性。3)画圆算法:画圆算法采纳圆弧插补法。圆弧插补法也是在画图系统中经常使用的一种方法,它和直线插补法原理同样,也是逐点比较算法。若F=0,注明加工点在圆弧上;F>0,注明加工点在圆弧外;F<0,注明加工点在圆弧内。若F≥0,为逼近圆弧,下一步向X轴进给一步,并计算出新的偏差值;F<0,为逼近圆弧,下一步向+Y轴进给一步,并计算出新的偏差值。各象限插补公式以下在实质操控中,能够以圆心为假定的坐标原点,再依据上边的原理设计算法。(4)循迹黑线的探测及循迹算法在以画笔为中心,半径

20毫米的圆周上装置了

8个反射式红外对管作为轨迹探测传感器,装置方式如图

3所示。165740+1312图37轨迹探测传感器装置方式图38方向调整表示图依据图37装置方式及装置半径,只需系统的采样频次足够高,轨迹是没法离开探测范围的。但因为使用了8个传感器,分歧传感器信号间的组合太多,使用一般穷举办法难以实现循迹控制,所以自己设计了一套循迹算法。如图38,定义了物体循迹时运动的8个方向,图中黑箭头(1号方向上)表示物体目前的循迹方向。循迹时,使用变量Direct表示目前物体运动方向,物体每次运动时先按目前面向向前步进一段固定的距离,而后检测采样传感器信号并调整Direct,再沿新的Direct方向步进。因为所给的曲线是连续的,所以每次调整Direct只好是+1或-1。如图38所示,Direct在需向左偏时则Direct加1,需向右偏则减1,持续行进则坚持不变。因为只有8个运动方向,所以对Direct的运算需在模8的范围内(0~7)进行。此刻考虑怎样决定左偏或右偏的问题,使用上述调整办法只需要依据

Direct

的前后方向及左右方向的四个信号对

Direct

调整即可。如图

4中仅需依据

1、3、5、7

方向的信号对

Direct

调整。因为每个方向上±1和坚持不变的传感器信号是必定的,故对8个方向上的调整战略用一个静态数组的形式保存起来,调整时直接查表即可,方便编程。这类循迹算法大大地减少了循迹运动的调试时间,为整个作品成功的达成打下了基础。当每次步进的距离较小时,若在Direct方向的前、左、右三处的传感器同时发现是白纸,则注明传感器探测到了曲线的中断部分或终点,此时应依据前几次(2~3次)Direct的均匀值作为探究方向,再向前步进2~3步,担保循迹的正确停止。在取均匀值时,需对7à0和0à7的转变作特别办理,不然可能犯错。实践证明,依据上边的办法循迹快速稳固,并且不会受交错线的影响。因为轨迹线有必定宽度,实质的轨迹不可能转折得十分快速,当步进距离较小时,甚至能够达成锐角的循迹。本系统使用的步进距离是5毫米,成效很好。(5)系统主程序流程框图上电,初始化液晶显等候按键,选择所需的功能1234直线正方形圆循迹输入依照设定手动起点事先圆心到循终点设定手动迹起坐标运转到点始点按键确认,进入对应程序履行零件返回显示程序图39系统主程序流程框图四、系统测试1.测试仪器DT9205A型数字万用表;秒表、卷尺;+12V直流稳压电源。2.测量结果直线测试次数设定起点坐标设定终点坐标实质坐标偏差用时1(0,0)(50,50)(50.2,51.3)2cm75s2(0,0)(80,99)(80.1,100.5)134s画圆测试次数圆心坐标半径最大偏差用时1(25,25)251cm130s2循迹测试连续线段线长中断线段长度60cm46cm用时3.偏差剖析及改良举措1)坐标变换的偏差。(X,Y)坐标向(L,R)坐标变换时使用几何剖析的方法,但为了办理方便,将悬挂滑轮视为一点,没有考虑其半径。本作品以减小其半径的办法降低偏差。同时,进行坐标变换时,单片机在计算精度上也会引进偏差,因为使用浮点运算,该偏差不大。2)笔尖和悬挂点不在同一平面引入偏差,应尽量使三点处于与地板平行的平面以减小偏差。3)步进电机的步进脉冲个数和步进线距离之间的折算误差。作品使用了直接测量一段距离和步进个数再求均匀值的办法降低偏差。4)牵引线引入的偏差,包括拉伸偏差和由废弛发生的偏差。改良举措是使用变形系数小的牵引线和增添悬挂物体的重量。5)绕线发生的偏差。解决办法是依据力学剖析采纳机械的办法担保绕线不重叠,并且使用半径小的牵引线使绕线在横向延长的距离减少,进而减少偏差。6)读数偏差。初始定位时需供给物体坐标,测量结果需人为读数,这会引入偏差。五、结论本设计以AT89S52单片机为核心,利用软件编程,实现了定点直线运动,圆形轨迹运动,中断黑线循迹以及坐标的及时显示。测试结果注明,本设计很好地达成了题目基本部分和发挥部分的所有要求,速度快、精度高。整个系统从软件到硬件都表现优秀简洁的风格。主要有以下几个长处:采纳步进电机及专用细分驱动器,悬绳收放控制较精确;程序算法优秀,易于偏差办理和提升精准度;(3)LCD液晶显示,界面友善。六、参照文件附录一电路原理图1、控制部分电路图:2、循迹模块电路图:附录二源代码/*******************************************************************/#include<reg52.h>#include<intrins.h>#include<string.h>#include<math.h>#defineucharunsignedchar//无符号字符种类定义#defineuintunsignedint//无符号整数种类定义/******************************************************************/步进电机驱动器引脚连结定义sbitMotor_Left_CP=P1^0;//左步进电机脉冲sbitMotor_Left_DIR=P1^1;//左步进电机方向控制端sbitMotor_Right_CP=P1^2;//右步进电机脉冲sbitMotor_Right_DIR=P1^3;//右步进电机方向控制端sbitMotor_FREE=P1^4;//电机使能端(高电平有效,低电平是电机处于自由状态)sbitSHLD=P1^5;sbitS_clk=P1^6;sbitS_data=P1^7;sbitjiesu=P3^6;/**************************************************/#definepai3.141592//圆周率#definea15//80cmx100cm场所到两电机连线的垂直距离(厘米)#defineb15//80cmx100cm场所到边线(顶端滑轮和电机的连线)的垂直距离(厘米)#definer0.8276//滑轮半径(厘米)#definestepz0.0122//左步进电机每步弧长(厘米)#definestepy0.0122//右进步点击每步弧长(厘米)#definestep0.0125//步进电机每步弧长(厘米)#defineradius25//圆周半径长度#defineMotor_FREE1/**************************************************///LCD1602液晶模块引脚连结定义#defineLCD_DataP0//1602的8位数据线连结到P0口/**************************************************/ucharcodekaiji0[16]={">>>WELCOME!<<<"};ucharcodekaiji1[16]={"LOADDOWNING....."};ucharcodetable0[16]={"1.Line2Rectan"};ucharcodetable1[16]={"3.Circu4.Follow"};ucharcodetable3[16]={"DrawaLine"};ucharcodetable4[16]={"DrawCircularity"};ucharcodetable5[16]={"FollowtheLine"};ucharcodetable6[16]={"(,);(,)"};ucharcodetable7[16]={"(,);r=cm"};ucharcodetable8[16]={"(cm,cm)"};ucharcodetable9[16]={"ENTERtoBegin"};ucharcodetable10[16]={"Executing....x"};ucharcodetable11[16]={"Rectanperform."};ucharcodetable12[16]={"(25,25)(50,25)"};ucharcodetable13[16]={"(50,50)(25,50)"};ucharcodetable14[16]={"havecompleted!!"};ucharcodewrong[16]={"WrongCoordinate"};ucharcodeagian[16]={"InputAgian?"};ucharcodenumber[10]={"0123456789"};/**************************************************/intx0,y0,x1,y1;/*******************************************************************///函数申明voidDelay_1ms(inttime);

//延时

1ms*timevoidLCD1602_Busy_Check(void);//LCD1602voidWrite_LCD1602(ucharudata,bitcommand);

忙检查函数//LCD1602写数据和写指令函数voidWrite_Byte_Locate(ucharx,uchary,ucharudata);//把数据显示在LCD1602的指定地点voidInit_LCD1602( );//LCD1602初始化函数ucharKeyboard_Scan(void);//键盘扫描函数,返回键盘扫描码ucharScan_Code_Transform(ucharscancode);//键码辨别函数//voidMotot_ld(int);voidMotor_Left_Step(bitDir);//左电机转动一步,Dir=0时反转(顺时针),即松开线;Dir=1时正转(逆时针),即收紧线voidMotor_Right_Step(bitDir);//右电机转动一步,Dir=0时反转(顺时针),即收紧线;Dir=1时正转(逆时针),即松开线voidDraw_Circular(intx,inty);//画圆函数voidcurrentdisp(intline,intx,inty);//目前显示voidlinedisp(int,int,int,int,int);//目前直线点显示voiddisplay(uchartable[16],bitline);//提示显示voidline(int,int,int,int);//画直线函数voidDraw_line( );//voidbuchang(float,float,float,float);//确立左右电机移动的步数voidReturndata( );//读取对光二极管的值voidfollow( );//循迹函数voidzouxiang(int);//循迹电机驱动函数/*******************************************************************/延时函数,延不时间=1ms*time(晶振12MHz)voidDelay_1ms(inttime){uchari,j;do{for(i=0;i<15;i++)for(j=0;j<20;j++);}while((time)!=0);}/*******************************************************************//**********************************LCD1602液晶操控函数部分**********///LCD1602液晶检查忙函数voidLCD1602_Busy_Check(void){EN=0;RW=1;RS=0;EN=1;while(LCD_Data&&0x80==1);EN=0;Delay_1ms(1);}/**************************************************///LCD1602写数据和写指令函数把写数据和指令二个合在一同,用一个变量command来判断voidWrite_LCD1602(ucharudata,bitcommand){LCD1602_Busy_Check( );//忙检查RS=command;//command=0时写入指令,command=1时写入数据RW=0;//把LCD设置成写状态EN=1;//E=高脉冲,把数据/指令写入LCD_Data=udata;EN=0;}/**************************************************/把数据显示在LCD1602的指定地点//x,y是坐标,udata是需要显示的数据//x不克不及大于15,每行最多显示16字符//y不克不及大于1,最多显示2行voidWrite_Byte_Locate(ucharx,uchary,ucharudata){if(y){x+=0x40;}//判断显示哪行,显示第二行LCD储存区加40Hx+=0x80;//假如没有加0X40则显示第一行Write_LCD1602(x,0);//写指令Write_LCD1602(udata,1);//写显示数据}/**************************************************///LCD1602初始化函数voidInit_LCD1602( ){Write_LCD1602(0x38,0);//显示模式设置Delay_1ms(20);Write_LCD1602(0x01,0);//消除屏幕Write_LCD1602(0x06,0);//显示光标挪动设置Write_LCD1602(0x0c,0);//开显示}/*******************************************************************//*******************键盘扫描和键码辨别函数部分**********************/键盘扫描函数,返回键盘扫描码ucharKeyboard_Scan(void){ucharscancode,tmpcode;P2=0xf0;while(P2==0xf0);//等候有键按下Delay_1ms(20);//延时10ms去颤动if(P2!=0xf0){scancode=0xfe;//逐行扫描while(scancode!=0xef)//还没有扫描完4行{P2=scancode;if((P2&0xf0)!=0xf0)//本列有键按下{tmpcode=(P2&0xf0)|(scancode&0x0f);while((P2&0xf0)!=0xf0);//等候键开释return(tmpcode);}elsescancode=(scancode<<1)|0x01;}}return(0);}/**************************************************/键码辨别函数ucharScan_Code_Transform(ucharscancode){switch(scancode){/*将按键码变换成键值*/case0xde:return0;case0xed:return1;case0xdd:return2;case0xbd:return3;case0xeb:return4;case0xdb:return5;case0xbb:return6;case0xe7:return7;case0xd7:return8;case0xb7:return9;case0xee:return10;default:return0xff;}}/*******************************************************************//********************步进电机基本操控部分***************************/左电机转动一步,Dir=0时反转(顺时针),即松开线;Dir=1时正转(逆时针),即收紧线voidMotor_Left_Step(bitDir){Motor_Left_DIR=Dir;Motor_Left_CP=1;Delay_1ms(1);Motor_Left_CP=0;Delay_1ms(1);}/**************************************************/右电机转动一步,Dir=0时反转(顺时针),即收紧线;Dir=1时正转(逆时针),即松开线voidMotor_Right_Step(bitDir){Motor_Right_DIR=Dir;Motor_Right_CP=1;Delay_1ms(1);Motor_Right_CP=0;Delay_1ms(1);}/*************************************************//*圆形目前坐标显示模块*/voidcurrentdisp(intline,intx,inty){Write_Byte_Locate(1,line,number[x/10]);Write_Byte_Locate(2,line,number[x%10]);Write_Byte_Locate(4,line,number[y/10]);Write_Byte_Locate(5,line,number[y%10]);}/************直线目前坐标实现模块****************//*“(,);(,)”*/voidlinedisp(intline,intx,inty,intxz,intyz){display(table6,line);Write_Byte_Locate(1,line,number[x/10]);Write_Byte_Locate(2,line,number[x%10]);Write_Byte_Locate(4,line,number[y/10]);Write_Byte_Locate(5,line,number[y%10]);Write_Byte_Locate(9,line,number[xz/10]);Write_Byte_Locate(10,line,number[xz%10]);Write_Byte_Locate(12,line,number[yz/10]);Write_Byte_Locate(13,line,number[yz%10]);}/*******************************************************************//*******************************功能实现部分************************//******************步数确立函数*********************/voidbuchang(floatx,floaty,floatnextx,floatnexty)//,int*znum1,int*ynum1){floatzb,yb;intznum,ynum,fhz,fhy;zb=(sqrt((114.3y)*(114.3y)+(14.4+x)*(14.4+x))sqrt((114.3nexty)*(114.3nexty)+(14.4+nextx)*(14.4+nextx)))/stepz;yb=(sqrt((114.3y)*(114.3y)+(94.4x)*(94.4x))sqrt((114.3nexty)*(114.3nexty)+(94.4nextx)*(94.4nextx)))/stepy;if(zb>0){znum=(int)(zb+0.5);fhz=1;}else{znum=abs((int)(zb0.5));fhz=0;}if(yb>0){ynum=(int)(yb+0.5);fhy=0;}else{ynum=abs((int)(yb0.5));fhy=1;}while(znum){Motor_Left_Step(fhz);}while(ynum){Motor_Right_Step(fhy);}return0;}/*floatsumz1=0.0;floatsumz2=0.0;floatsumy1=0.0;floatsumy2=0.0;voidbuchang(floatx,floaty,floatnextx,floatnexty)//,int*znum1,int*ynum1){floatzb,yb;floatd;intznum,ynum,fhz,fhy;zb=(sqrt((114.7y)*(114.7y)+(14.4+x)*(14.4+x))sqrt((114.7nexty)*(114.7nexty)+(14.4+nextx)*(14.4+nextx)))/stepz;yb=(sqrt((114.5y)*(114.5y)+(94.4x)*(94.4x))sqrt((114.5nexty)*(114.5nexty)+(94.4nextx)*(94.4nextx)))/stepy;if(zb>0){d=zb(int)(zb);sumz1+=d;fhz=1;if(sumz1>=1){sumz1=1;znum=(int)(zb)+1;}elseznum=(int)(zb);}else{d=zb(int)(zb);sumz2+=d;fhz=0;if(sumz2<=1){sumz2+=1;znum=abs((int)(zb)1);}elseznum=abs((int)(zb));}if(yb>0){d=yb(int)(yb);sumy1+=d;fhy=0;if(sumy1>=1){sumy1=1;ynum=(int)(yb)+1;}elseynum=(int)(yb);}else{d=yb(int)(yb);sumy1+=d;fhy=1;if(sumy1<=1){sumy1+=1;ynum=abs((int)(yb))+1;}elseynum=abs((int)(yb));}while(znum){Motor_Left_Step(fhz);}while(ynum){Motor_Right_Step(fhy);}return0;}*//****************************************************************//*****************画直线函数*************************/voidline(inta0,intb0,inta1,intb1){intcnt;floatx,y,nextx,nexty;intzx,zy,sx,sy;intfm;intcnt1;cnt=(int)((abs(a1a0)+abs(b1b0))/(8*step));x=0.0;y=0.0;fm=0;sx=a1a0;sy=b1b0;z

温馨提示

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

评论

0/150

提交评论