专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
求玩儿单片机的大神给我一点机械手的c语言程序,跪求
2019-07-15 14:53
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
3640
1
1634
本人是正在上高二,对
单片机
非常的热爱,最近在研究机械手,求大神们给我一些经典的,或者历年的比赛资料也好,让我参考一下,我现在正处于瓶颈上,求大神指教
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
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;
}
}
}
加载中...
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#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;
}
}
}
一周热门 更多>