单片机移动机械臂.doc
移动机械臂 姓名:陶敏 学号:0863110312 班级:08级建筑学3班一、实物图 图1图2 如图为该移动机械臂的实物图,该系统是以8051单片机为核心的一个机械系统。目前还处于研究试验阶段。该系统为一移动机器人方案。该移动机器人可以夹物体,并且可以自动避开物体,由于处于实验阶段,所以实用性还不是很强。不过作为一个机器人系统还有很广阔的应用前景。 图3 把机器放在地上,按下电源开关机器便可运行。 图4 内置蓄电池,充电口接通220V家庭电路便可以充电。蜂鸣器发声用于状态指示。 图6 图5 减速齿轮组减速矩。 二、电路系统 H 桥电路用于双向驱动电动机 Vm输出到H桥电路,VCC输出到8051单片机系统,4.7V输出到反射光电开关电路。Vin为12V电压输入。 反射式光电开关电路用于检测外部环境,如避开障碍物和用夹子夹夹起东西。 蜂鸣器电路用于状态指示 系统主控制电路1、 实验源程序#include<reg51.h> sbit M1A=P00;sbit M1B=P01; sbit M2A=P02;sbit M2B=P03; sbit M3A=P04;sbit M3B=P05;sbit M4A=P06;sbit M4B=P07; sbit M5A=P27;sbit M5B=P26; sbit M6A=P20;sbit M6B=P21;sbit M7A=P25;sbit M7B=P24; sbit Beep=P22;sbit Rin=P11;sbit Lin=P12; sbit Min=P15;void MSDelay (unsigned int); void Music1(void); void Music2(void); void Music3(void);void main(void) Rin=1; Lin=1; Min=1; M1A=0; M1B=1;/M1前进 while( Rin=0) M1A=1; M1B=1; MSDelay(40);/M1停止 Music2(); M1A=1; M1B=0; MSDelay(200); M1A=1; M1B=1; MSDelay(40);/后退 M2A=1; M2B=0; MSDelay(150); M2A=1; M2B=1; MSDelay(40);/右转 while( Lin=0) M1A=1; M1B=1; MSDelay(40);/M1停止 Music2(); M1A=1; M1B=0; MSDelay(200); M1A=1; M1B=1; MSDelay(40);/后退 M2A=0; M2B=1; MSDelay(150); M2A=1; M2B=1; MSDelay(40);/左转 while( Min=0) M1A=1; M1B=1; MSDelay(40);/M1停止 Music2(); Music3(); M7A=0; M7B=1; MSDelay(100); M7A=1; M7B=1; Music1();/开口 M5A=1; M5B=0; MSDelay(500); M5A=1; M5B=1; Music1();/上旋 M7A=1; M7B=0; MSDelay(100); M7A=1; M7B=1; Music1();/闭合 M6A=0; M6B=1; MSDelay(400); M6A=1; M6B=1; Music1();/下旋 M5A=0; M5B=1; MSDelay(500); M5A=1; M5B=1; Music1();/下旋 M4A=0; M4B=1; MSDelay(500); M4A=1; M4B=1; Music1();/下旋 M3A=1; M3B=0; MSDelay(300); M3A=1; M3B=1; Music1();/逆时针 M7A=0; M7B=1; MSDelay(100); M7A=1; M7B=1; Music1();/开口 M7A=1; M7B=0; MSDelay(100); M7A=1; M7B=1; Music1();/闭合 M6A=1; M6B=0; MSDelay(400); M6A=1; M6B=1; Music1();/上旋 M4A=1; M4B=0; MSDelay(500); M4A=1; M4B=1; Music1();/上旋 M3A=0; M3B=1; MSDelay(300); M3A=1; M3B=1; Music1();/顺时针 void MSDelay(unsigned int itime) /时间延迟 unsigned int i,j; for(i=0;i<itime;i+) for(j=0;j<1275;j+); void Music1(void) /音乐1 unsigned int i,j; for(i=0;i<300;i+) Beep=0; for(j=0;j<30;j+); Beep=1; for(j=0;j<30;j+); Beep=1; void Music2(void) /音乐2 unsigned int i,j,k; for(k=0;k<10;k+) for(i=0;i<100;i+) Beep=0; for(j=0;j<30;j+); Beep=1; for(j=0;j<30;j+); Beep=1; MSDelay(10); Beep=1; void Music3(void) /音乐3 unsigned int i,j,k; for(k=0;k<10;k+) for(i=0;i<100;i+) Beep=0; for(j=0;j<30;j+); Beep=1; for(j=0;j<30;j+); Beep=1; MSDelay(5); Beep=1;