求玩儿单片机的大神给我一点机械手的c语言程序,跪求

2019-07-15 14:53发布

本人是正在上高二,对单片机非常的热爱,最近在研究机械手,求大神们给我一些经典的,或者历年的比赛资料也好,让我参考一下,我现在正处于瓶颈上,求大神指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
A清晰
1楼-- · 2019-07-15 17:55
#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;
    }
   }
  }

一周热门 更多>