写字机器人keil程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y1=zhiku[p+1][1];
if(x1<0||y1<0) //如果为结束标志,则关电机
{
RUN=0;
A2=1;B2=1;C2=1;D2=1;
A1=1;B1=1;C1=1;D1=1;
}
else
{
if(z==1)MotionPen(ON); //线圈通电,下笔
if(z==2)MotionPen(OFF);//线圈断电,提笔
sbit IN2=P1^6;
//按键
sbit MODE=P2^0;
sbit UP =P2^1;
bitFlag_Ctrl=0,RUN=0;
int PluseNum_A=0, All_PluseNum_A=0,PluseNum_B=0, All_PluseNum_B=0;
unsigned int Speed_A=9000,Speed_B=9000;
}
void MotionPen(unsigned char temp)
{
if(temp == ON) { IN1=1; IN2=0; }
else { IN1=0; IN2=0; }
}
{
if(++cnt_B>=8)cnt_B=0;
PluseNum_B = PluseNum_B + 1;
}
else if(PluseNum_B > All_PluseNum_B)
{
if(cnt_B > 0)cnt_B-=1;elsecnt_B = 7;
PluseNum_B = PluseNum_B - 1;
Flag_Ctrl=1;
}
elseFlag_Ctrl=0;
}
if(MODE==0 || UP==0)
{
if(++Key_Cnt>=KEY_TIME)//消抖
{
if(MODE==0){RUN=1;}
if(UP ==0){;}
}
}
else Key_Cnt=0;
TF2=0;//T2中断标志位清零
}百度文库
void Init_Sys(void)
PluseNum_A = PluseNum_A + 1;
}
else if(PluseNum_A > All_PluseNum_A)
{
if(cnt_A > 0)cnt_A-=1;elsecnt_A = 7;
PluseNum_A = PluseNum_A - 1;
}
else
{
TH0 = 0;TL0 = 0;
#include"reg52.h"
//横向电机
sbit A1 =P3^2;
sbit B1 =P3^3;
sbit C1 =P3^4;
sbit D1 =P3^5;
//竖向电机
sbit A2 =P2^2;
sbit B2 =P2^3;
sbit C2 =P2^4;
sbit D2 =P2^5;
//电磁阀
sbit IN1=P1^5;
{
switch(cnt_B) //8拍控制步进
{
case 0: A2=0;B2=1;C2=1;D2=1;break;
case 1: A2=0;B2=0;C2=1;D2=1;break;
case 2: A2=1;B2=0;C2=1;D2=1;break;
case 3: A2=1;B2=0;C2=0;D2=1;break;
//定时器T0作:横向步进的脉冲控制
void Timer_0(void) interrupt 1
{
static unsigned char cnt_A=0;
TH0=(65535-(11536-Speed_A))/256;TL0=0x0;
if(PluseNum_A!=All_PluseNum_A)
{
switch(cnt_A) //8拍控制步进
while(1)
{
if(Flag_Ctrl==1)
{
Flag_Ctrl=0;//清零
Control();
}
}
}
//x:0->100y:0->100
void Move(char x,char y)
{
All_PluseNum_A += x*2/0.03;
All_PluseNum_B += y*2/0.03;
{87,44,0},{94,44,0},{94,35,2},{6,59,1},{42,59,2},{24,59,1},{24,92,2},{4,92,1},{44,92,2},
{67,59,1},{63,63,2},{57,73,1},{73,73,2},{65,61,1},{65,92,2},{65,73,1},{55,83,2},{65,73,1},
{
TMOD =0x11;
T2CON=0x00;
TH0=(0xFFFF-(MAX_SPEED-Speed_A))/256;
TL0=(0xffff-(MAX_SPEED-Speed_A))%256;
TH1=(0xFFFF-(MAX_SPEED-Speed_B))/256;
TL1=(0xffff-(MAX_SPEED-Speed_B))%256;
}
}
//定时器T1作:竖向步进的脉冲控制
void Timer_1(void) interrupt 3
{
static unsigned char cnt_B=0;
TH1=(65535-(11536-Speed_B))/256;TL1=0x0;
if(PluseNum_B!=All_PluseNum_B)
{9,22,1},{38,22,2},{9,32,1},{38,32,2},{24,3,1},{24,43,0},{25,44,0},{42,44,0},{42,34,2},
{68,5,1},{55,18,2},{62,11,1},{92,11,2},{63,16,1},{88,16,2},{60,22,1},{84,22,0},{84,41,0},
//下面汉字:电气工程
//************************************************************************
//0:代表笔不动作1:代表下笔2:代表提笔
unsigned char code zhiku[][3]={{0,0,0},{9,12,1},{9,33,2},{9,13,1},{38,13,0},{38,33,2},
}
else
{
TH1 = 0;TL1 = 0;
}
}
void Timer_2(void) interrupt 5
{
static unsigned int Cnt_Ctrl=0,Key_Cnt=0;
if(RUN==1)
{
if(++Cnt_Ctrl >= CTRL_TIME)//控制时间到
{
Cnt_Ctrl=0;
void Control()
{
static unsigned int Step=0;
static unsigned char p=0;
char x=0,y=0,z=0,x1=0,y1=0;
if(Step==0)
{
x=zhiku[p][0];
y=zhiku[p][1];
z=zhiku[p][2];
x1=zhiku[p+1][0];
{
case 0: A1=0;B1=1;C1=1;D1=1;break;
case 1: A1=0;B1=0;C1=1;D1=1;break;
case 2: A1=1;B1=0;C1=1;D1=1;break;
case 3: A1=1;B1=0;C1=0;D1=1;break;
case 4: A1=1;B1=1;C1=0;D1=1;break;
case 4: A2=1;B2=1;C2=0;D2=1;break;
case 5: A2=1;B2=1;C2=0;D2=0;break;
case 6: A2=1;B2=1;C2=1;D2=0;break;
case 7: A2=0;B2=1;C2=1;D2=0;break;
}
}
if(PluseNum_B < All_PluseNum_B)
#define MAX_SPEED 10000
#define CTRL_TIME 2
#define KEY_TIME30
#define ON 1
#define OFF 0
//************************************************************************
case 5: A1=1;B1=1;C1=0;D1=0;break;
case 6: A1=1;B1=1;C1=1;D1=0;break;
case 7: A1=0;B1=1;C1=1;D1=0;break;
}
}
if(PluseNum_A < All_PluseNum_A)
{
if(++cnt_A>=8)cnt_A=0;
Move(x1-x,y1-y);//给电机赋值
}
Step++;
}
else if(Step==1)
{
if(PluseNum_A==All_PluseNum_A && PluseNum_B==All_PluseNum_B)//等待上一笔画写完。
{
p++;
Step=0;
}
}
}
main( void)
{
Init_Sys();
TH2=0xee; //5ms
TL2=0x0;
RCAP2H=0xee;
RCAP2L=0x0;
TR0 = 1;
TR1 = 1;
TR2 = 1;
ET0 = 1;
ET1 = 1;
ET2 = 1;
EA=1;//开总中断
}
void MotionPen(unsigned char temp);
void Move(char x,char y);
{70,78,2},{75,59,1},{75,66,2},{75,59,1},{87,59,0},{87,66,2},{75,66,1},{87,66,2},{75,72,1},
{87,72,2},{76,80,1},{86,80,2},{81,72,1},{81,90,2},{73,90,1},{89,90,2},{1,1,0},{-1,-1,-1}};
相关文档
最新文档