51单片机上画圆弧任意2点坐标就控制步进电机_第1页
51单片机上画圆弧任意2点坐标就控制步进电机_第2页
51单片机上画圆弧任意2点坐标就控制步进电机_第3页
51单片机上画圆弧任意2点坐标就控制步进电机_第4页
51单片机上画圆弧任意2点坐标就控制步进电机_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

#ifndef _MAIN_C_#define _MAIN_C_#include “config.h“#include “lcd1602.h“typedef unsigned char uint8;typedef signed char int8;typedef signed int int16;typedef unsigned int uint16;unsigned char T0RH;T0RL;unsigned int time_count=0;unsigned char n=0;unsigned char pdata str12;int16 x_start_value=0;int16 y_start_value=0;int16 x_finish_value=0;int16 y_finish_value=0;int16 a;int16 b;int16 x;int16 y;int16 ox;int16 oy;int16 px2,py2;int16 r;int16 x_g2;int16 y_g2;int16 x_g3;int16 y_g3;int16 flag_3=0;/F 误差系数 uint16 flag_finish=0;uint8 flag_xiangxian=0;unsigned char flag_g=0; /flag_g=0;flag_g=1,flag_g=2,flag_g=3;unsigned char div=0;unsigned char curr_index=0;unsigned char index=0;#define NUM_AS 2typedef struct node signed int xe;signed int ye;unsigned char flag_g;signed int R;lnode;/typedef struct node lnode;struct listsigned int x0;signed int y0;signed int xv;signed int yv;unsigned char num;unsigned char state;lnode vlist8;typedef struct list sqlist;typedef struct list *sqlist_ptr;/void configtime0(unsigned int ms);void xiangxian();void init();void addx();void backx();void addy();void backy();void panduan();void getarc(int16 xs,int16 ys,int16 xe,int16 ye);void f(int16 x1,int16 y1,int16 x2,int16 y2);void Draw_polygon2D(sqlist_ptr poly);void main() /sqlist idata L1;/lnode xdata p22=0;lnode xdata s=0,0,0,0,0,400,1,800,200,600,2,200,600,600,1,0,800,400,2,200,800,0,1,0,400,400,2,400,0,0,2,400;/lnode xdata s=200,600,2,200;/init_mempool(p,sizeof(p);/sqlist_ptr L_ptr;for(curr_index=0;curr_indexstate=1)/ dofor(;inum;)if(poly-vlisti.flag_g=0flag_3=0;x_finish_value=poly-vlisti.xe;y_finish_value=poly-vlisti.ye;x_start_value=poly-x0;y_start_value=poly-y0;flag_g=poly-vlisti.flag_g;init();i=i+1;TR0=1;break;else if(poly-vlisti.flag_g=1flag_3=0;x_finish_value=poly-vlisti.xe;y_finish_value=poly-vlisti.ye;x_start_value=poly-vlisti-1.xe;y_start_value=poly-vlisti-1.ye;flag_g=poly-vlisti.flag_g;init();i+;TR0=1;break;else if(poly-vlisti.flag_g=2)flag_3=0;x_finish_value=poly-vlisti.xe;y_finish_value=poly-vlisti.ye;x_start_value=poly-vlisti-1.xe;y_start_value=poly-vlisti-1.ye;flag_g=poly-vlisti.flag_g;r=poly-vlisti.R;EA=0;f(x_start_value, y_start_value,x_finish_value,y_finish_value);EA=1;/*IntToString(str,px0);lcdshowstr(0,0,str);IntToString(str,py0);lcdshowstr(6,0,str);IntToString(str,px1);lcdshowstr(0,1,str);IntToString(str,py1);lcdshowstr(6,1,str);*/getarc( x_start_value, y_start_value,x_finish_value,y_finish_value);init();i+;TR0=1;break; /forIntToString(str,i);lcdshowstr(0,1,str);IntToString(str,poly-num);lcdshowstr(3,1,str);IntToString(str,poly-vlisti.xe);lcdshowstr(5,1,str);IntToString(str,poly-vlisti.ye);lcdshowstr(9,1,str);while(inum);i=0;/ /void init()if(flag_g=0)a=x_finish_value-x_start_value;if(a=0)if(y_finish_value=0)flag_xiangxian=1; / 1if(y_finish_value=0)flag_xiangxian=2;if(y_finish_value=0)if(y_finish_value=0)flag_xiangxian=1;if(y_finish_value=0)flag_xiangxian=2;if(y_finish_value0) /如果终点 Y 坐标为正flag_xiangxian=2; /确定插补过程在第二象限if(y_finish_value0) /如果终点 X 坐标为正if(y_finish_value0) /如果终点 Y 坐标为正flag_xiangxian=1; /确定插补过程在第一象限if(y_finish_value=0) /当终点坐标在 Y 轴上时flag_xiangxian=1; /确定插补过程在第一象限if(y_finish_value0) /如

温馨提示

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

评论

0/150

提交评论