资源描述:
《C语言模拟直线插补与圆弧插补程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数控技术课程设计说明书设计题目直线插补与圆弧插补程序设计机械设计以及自动化专业机械工程学院机械102班设计者青岛理工大学2013年6月20日目录1.设计题目………………………………………………………12.目录……………………………………………………………23.直线插补流程图………………………………………………34.直线插补程序…………………………………………………45.程序结果………………………………………………………86.圆弧插补流程图………………………………………………97.圆弧插补程序…………………………………………………108.程序结果
2、………………………………………………………21一.直线插补1.直线插补程序流程图置FM=0输入XE、YE、XOY、NXYFM≥0?XOR=1或4?XOR=1或2?ZF=1ZF=2ZF=3ZF=4FM=FM-YEFM=FM+YE调用走步控制程序NXY=NXY-1NXY=0?开始结束YNYNYNYN2.直线插补程序设计#include"stdio.h"inti,X,Y,X0,Y0,Xe,Ye,F,N;inta[30][2];voidmain(){intm;intmenu();voidyi();voider();voidsan();voidsi();
3、voidte();voidshuchu();m=menu();a[0][0]=X0;a[0][1]=Y0;switch(m){case1:yi();shuchu();break;case2:er();shuchu();break;case3:san();shuchu();break;case4:si();shuchu();break;case5:te();shuchu();break;default:printf("无法插补");}}intmenu(){intt;printf("输入起点坐标");scanf("%d,%d",&X0,&Y
4、0);printf("输入终点坐标");scanf("%d,%d",&Xe,&Ye);if(Xe>=X0&&Ye>=Y0)t=1;elseif(Xe<=X0&&Ye>=Y0)t=2;elseif(Xe<=X0&&Ye<=Y0)t=3;elseif(Xe>=X0&&Ye<=Y0)t=4;elseif(Xe==X0&&((Ye>Y0&&Y0>=0)
5、
6、(Ye
7、=0){X++;a[i][0]=X;a[i][1]=Y;F-=Ye-Y0;}else{Y++;a[i][0]=X;a[i][1]=Y;F+=Xe-X0;}}}voider(){F=0;N=X0-Xe+Ye-Y0;X=X0;Y=Y0;for(i=1;i<=N;i++){if(F>=0){X--;a[i][0]=X;a[i][1]=Y;F-=Ye-Y0;}else{Y++;a[i][0]=X;a[i][1]=Y;F+=X0-Xe;}}}voidsan(){F=0;N=X0-Xe+Y0-Ye;X=X0;Y=Y0;for(i=1;i<=N;i++){i
8、f(F>=0){X--;a[i][0]=X;a[i][1]=Y;F-=Y0-Ye;}else{Y--;a[i][0]=X;a[i][1]=Y;F+=X0-Xe;}}}voidsi(){F=0;N=Xe-X0+Y0-Ye;X=X0;Y=Y0;for(i=1;i<=N;i++){if(F>=0){X++;a[i][0]=X;a[i][1]=Y;F-=Y0-Ye;}else{Y--;a[i][0]=X;a[i][1]=Y;F+=Xe-X0;}}}voidte(){N=Ye-Y0;for(i=1;i<=N;i++){if(Ye>0){Y++;a[i][
9、0]=X;a[i][1]=Y;}elseif(Ye<0){Y--;a[i][0]=X;a[i][1]=Y;}}}voidshuchu(){for(i=0;i<=N;i++){printf("%d",i);printf("%d,%d",a[i][0],a[i][1]);}}3.程序结果例如起点(0,0)终点(6,4)步数坐标11,021,132,142,253,264,274,385,396,3106,4二.圆弧插补1.圆弧插补程序流程图ZF=4ZF=4RNS=1,6?RNS=2,5?输入X0、Y0、NXY、RNS置FM=0、XM=X0、YM
10、=Y0RNS=1,2,6,8?FM≥0?FM≥0?RNS=2,7?RNS=1,8?ZF=3ZF=2ZF=1ZF=1ZF=2ZF=3FM=FM-2XM=