经过几天的钻研和调试,终于在51单片机上实现了二轴联动,通过调用line(x1,y1,x2,y2,v)函数以及cytu(x1,y1,x2,a,b,r,v)和cyao(x1,y1,x2,a,b,r,v)三个命令便可实现任意圆弧和直线的插补,注意任意二字,比如直线命令,可以是水平线可以是竖直线,可以是从左往右也可从右往左,可以当做一个绘图仪使用,如果愿意进一步升级,简单修改加个Z轴做成数控铣床的控制器亦未尝不可。下面是整个源程序,有兴趣的可以参考参考。
#include
#include
#include
sbit mai0=P1^0;
sbit mai1=P1^1;
sbit shuru=P0^0;
sbit dir0=P1^6;
sbit dir1=P1^7;
void delay(unsigned int t){
unsigned int g;
while(t!=0){
for(g=0;g++;g<600);
t--;
}
}
void mc_p0(signed long m0,unsigned int n0)
{if(m0<0){
m0=-m0;
dir0=1;
}
else{dir0=0;}
while(m0--!=0){
mai0=0;
delay(n0/2);
mai0=1;
delay(n0