|
发表于 2009-8-12 17:35:50
|
显示全部楼层
#include<reg52.h>
#include<math.h>
//控制左右转的电机
sbit zm2=P1^0;
sbit zm1=P1^1;
sbit cp1 = P1^4;
sbit cw1 = P1^5;
//控制上下转的电机
sbit m2=P2^2;
sbit m1=P2^3;
sbit cp2 = P2^6;
sbit cw2 = P2^4;
//sbit jidian=P1^7;
float x,y,r;
float buj1,buj2;
int y1=0;
void delay(int i);
void yuan(float r);
void lr(char x);
void fb(char x);
void main()
{
zm2=0;//1/4细分
zm1=1;
m2=0;//1/4细分
m1=1;
//jidian=0;
while(1)
{
yuan(100);
}
}
void yuan(float r)
{
int k;
for(x=0;x<=r;x++)
{
y=r-sqrt(r*r-x*x);
lr(1);
k=(int)(y1-y);
fb(k);
y1-=k;
}
y1=0;
for(x=r;x>=0;x--)
{
y=sqrt(r*r-x*x);
lr(-1);
k=(int)(y1-y);
fb(k);
y1-=k;
}
y1=0;
for(x=0;x<=r;x++)
{
y=r-sqrt(r*r-x*x);
lr(-1);
k=(int)(y1-y);
fb(-k);
y1-=k;
}
y1=0;
for(x=r;x>=0;x--)
{
y=sqrt(r*r-x*x);
lr(1);
k=(int)(y1-y);
fb(-k);
y1-=k;
}
}
void delay(int i)
{
while(i --);
}
void lr(char x)
{
char j;
if(x < 0)
{
cw1 = 1;
x= -x;
}
else
cw1 = 0;
for(j = 1;j <= x;j++)
{
cp1 = 0;
delay(1000);
cp1 = 1;
delay(1000);
}
}
void fb(char x)
{
char j;
if(x < 0)
{
cw2 = 0;
x= -x;
}
else
cw2 = 1;
for(j = 1; j <= x; j ++)
{
cp2 = 0;
delay(1000);
cp2 = 1;
delay(1000);
}
}
我的就是用圆的公式做的,分1/4画,画4次。 |
|