亚龙YL236设备 机械手控制
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define key_dk P2
#define smg_dk P0
uchar num;
/*****信号检测口***********/
sbit dk4=P1^0;//工位1
sbit dk5=P1^1;//工位2
sbit dk6=P1^2;//工位3
sbit dk7=P1^3;//上升到位
sbit dk8=P1^4;//下降到位
sbit dk9=P1^5;//抓紧到位
sbit dk10=P1^6;//抓手是否有物料
sbit dk11=P1^7;//工位1是否有物料
/*****控制端口**************/
sbit dk13=P3^0;//左移
sbit dk14=P3^1;//右移
sbit dk15=P3^2;//抓紧
sbit dk16=P3^3;//放松
sbit dk17=P3^4;//上下
#define jxs_sd dk13=1;dk14=1; //电机停止
#define jxs_zy dk13=0;dk14=1;//左移
#define jxs_yy dk13=1;dk14=0;//右移
#define jxs_zj dk15=0;dk16=1;//抓紧
#define jxs_fs dk15=1;dk16=0;//放松
#define jxs_bc dk15=1;dk16=1;//抓手保持
#define jxs_ss dk17=1;//上升
#define jxs_xj dk17=0;//下降
/*******数码管端口定义*******************/
sbit cs1=P3^5;
sbit cs2=P3^6;
sbit wr=P3^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code table1[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar x,y,z,aa,num,num1=4;
void cx(uchar cxms)
{
uchar a,b;
for(a=200;a>0;a--)
for(b=cxms;b>0;b--);
}
void init()//工位检测初始化
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1;
ET0=1;
TR0=1;
jxs_ss;//抓手上升
jxs_fs;//抓手放松
jxs_zy;
cx(255);
cx(255);
cx(255);
cx(255);
cx(255);
jxs_yy;
while(dk4);
jxs_sd;
}
void main()
{
init();
while(1)
{
if(dk4==0)
{
jxs_sd;
cx(10);
while(dk11);//检测工位1有无物料
jxs_xj;//机械手下降
cx(10);
while(dk8);//下降到位检测
jxs_zj; //机械手抓紧
cx(10);
while(dk9);//检测是否抓紧
jxs_ss;//上升
cx(10);
while(dk7); //上升到位
jxs_zy;
cx(10);
while(dk6);
}
if(dk6==0)
{
jxs_sd;
cx(10);
jxs_fs;
cx(10);
jxs_yy;
cx(10);
while(dk4);
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
/**数码管显示****/
smg_dk=table[aa];
cs1=0;
wr=0;
wr=1;
cs1=1;
smg_dk=table1[num];
cs2=0;
wr=0;
wr=1;
cs2=1;
num++;
if(num==8)
{
num=0;
smg_dk=table[num1];
cs1=0;
wr=0;
wr=1;
cs1=1;
smg_dk=0xfe;
cs2=0;
wr=0;
wr=1;
cs2=1;
}
/***矩阵按键************************/
key_dk=0xf0;
if(key_dk!=0xf0)
{
if(key_dk!=0xf0)
{
y=0xf0&key_dk;
key_dk=0X0F;
x=0x0f&key_dk;
z=x|y;
switch(z)
{
case 0xee:
aa=1;
break;
case 0xde:
aa=2;
break;
case 0xbe:
aa=3;
break;
case 0x7e:
aa=4;
break;
case 0xed:
aa=5;
break;
case 0xdd:
aa=6;
break;
case 0xbd:
aa=7;
break;
case 0x7d:
aa=8;
break;
case 0xeb:
aa=9;
break;
case 0xdb:
aa=0;
break;
}
}
}
}
#define uint unsigned int
#define uchar unsigned char
#define key_dk P2
#define smg_dk P0
uchar num;
/*****信号检测口***********/
sbit dk4=P1^0;//工位1
sbit dk5=P1^1;//工位2
sbit dk6=P1^2;//工位3
sbit dk7=P1^3;//上升到位
sbit dk8=P1^4;//下降到位
sbit dk9=P1^5;//抓紧到位
sbit dk10=P1^6;//抓手是否有物料
sbit dk11=P1^7;//工位1是否有物料
/*****控制端口**************/
sbit dk13=P3^0;//左移
sbit dk14=P3^1;//右移
sbit dk15=P3^2;//抓紧
sbit dk16=P3^3;//放松
sbit dk17=P3^4;//上下
#define jxs_sd dk13=1;dk14=1; //电机停止
#define jxs_zy dk13=0;dk14=1;//左移
#define jxs_yy dk13=1;dk14=0;//右移
#define jxs_zj dk15=0;dk16=1;//抓紧
#define jxs_fs dk15=1;dk16=0;//放松
#define jxs_bc dk15=1;dk16=1;//抓手保持
#define jxs_ss dk17=1;//上升
#define jxs_xj dk17=0;//下降
/*******数码管端口定义*******************/
sbit cs1=P3^5;
sbit cs2=P3^6;
sbit wr=P3^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code table1[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar x,y,z,aa,num,num1=4;
void cx(uchar cxms)
{
uchar a,b;
for(a=200;a>0;a--)
for(b=cxms;b>0;b--);
}
void init()//工位检测初始化
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1;
ET0=1;
TR0=1;
jxs_ss;//抓手上升
jxs_fs;//抓手放松
jxs_zy;
cx(255);
cx(255);
cx(255);
cx(255);
cx(255);
jxs_yy;
while(dk4);
jxs_sd;
}
void main()
{
init();
while(1)
{
if(dk4==0)
{
jxs_sd;
cx(10);
while(dk11);//检测工位1有无物料
jxs_xj;//机械手下降
cx(10);
while(dk8);//下降到位检测
jxs_zj; //机械手抓紧
cx(10);
while(dk9);//检测是否抓紧
jxs_ss;//上升
cx(10);
while(dk7); //上升到位
jxs_zy;
cx(10);
while(dk6);
}
if(dk6==0)
{
jxs_sd;
cx(10);
jxs_fs;
cx(10);
jxs_yy;
cx(10);
while(dk4);
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
/**数码管显示****/
smg_dk=table[aa];
cs1=0;
wr=0;
wr=1;
cs1=1;
smg_dk=table1[num];
cs2=0;
wr=0;
wr=1;
cs2=1;
num++;
if(num==8)
{
num=0;
smg_dk=table[num1];
cs1=0;
wr=0;
wr=1;
cs1=1;
smg_dk=0xfe;
cs2=0;
wr=0;
wr=1;
cs2=1;
}
/***矩阵按键************************/
key_dk=0xf0;
if(key_dk!=0xf0)
{
if(key_dk!=0xf0)
{
y=0xf0&key_dk;
key_dk=0X0F;
x=0x0f&key_dk;
z=x|y;
switch(z)
{
case 0xee:
aa=1;
break;
case 0xde:
aa=2;
break;
case 0xbe:
aa=3;
break;
case 0x7e:
aa=4;
break;
case 0xed:
aa=5;
break;
case 0xdd:
aa=6;
break;
case 0xbd:
aa=7;
break;
case 0x7d:
aa=8;
break;
case 0xeb:
aa=9;
break;
case 0xdb:
aa=0;
break;
}
}
}
}
我会继续学
PCB打样找华强 http://www.hqpcb.com 样板2天出货
YL-236 QQ群253465820
你写的吗,参考一下,额,有什么功能吗?除了夹球,放球外有按键,或其他的吗