《实验报告机器人控制技术基础实验报告.doc》由会员分享,可在线阅读,更多相关《实验报告机器人控制技术基础实验报告.doc(14页珍藏版)》请在三一办公上搜索。
1、华北电力大学实 验 报 告| 实验名称: 机器人控制技术基础课程名称: 机器人控制技术基础| 实 验 人: 成 绩: 18.00秒指导教师:实验日期: 年 月 日- 月 日华北电力大学工程训练中心第一部分:单片机开发板实验一:LED灯闪烁实验实验目的:通过此实验,让大家初步掌握单片机的 IO 口的基本操作和感受单片机学习的乐趣实验内容:用常用的指令编写,控制接在 P0.0 上的 LED 发光二极管 L0 做闪烁实验硬件说明:通过原理图,我们可以发现,要让接在 P0.0 的 L0 做亮灭实验,得先选通 LED 的电源供应三极管(这是我们设计的一个特殊地方,是为了方便和同时接在 P0 口的数码管实
2、现端口的复用,节省 IO 口)然后只要让 P0.0 的端口电平为 0,L0 就会亮.让 P0.0 的端口电平为 1,L0 就回灭.端口,所以实验前要先把液晶模块的使能端置为 0由于 P0 口是 LED、数码管和液晶模块共用端口,所以实验前要先把液晶模块的使能端置为 0以下的程序将实现这个功能源程序如下:ORG 0000H ;CPU 上电复位后,从 0000H 开始执行LJMP MAIN ;跳转到 MAIN 主程序ORG 0100H ;主程序从 0100H 开始,避开中断入口区地址MAIN: CLR P3.7 ;选通 LED 的电源供应三极管 CLR P2.7 ;由于 P0 口是 LED、数码管
3、和液晶模块共用端口,所以实验前要先把液晶模块的使能端置为 0MOV P0,#0FFH ;把 P0 口置一,熄灭 8 个发光二极管LOOP: CLR P0.0 ;把 P0.0 清零,低电平点亮 L0 LCALL DELAY ;调用延时子程序 SETB P0.0 ;把 P0.0 置 1,高电平熄灭 L0 LCALL DELAY ;调用延时子程序 LJMP LOOP ;回到 LOOP,不断的循环执行程序;延时子程序,改变 R5、R6、R7的值,可以改变延时的时间,从而改变 LED 的闪烁速度速度DELAY: MOV R5,#40 D1: MOV R6,#20D2: MOV R7,#248DJNZ R
4、7,$ DJNZ R6,D2 DJNZ R5,D1 RETEND实验二:按键控制的LED灯亮灭实验实验目的:掌握简单的按键检测编程方法实验内容:监视按键 K16(接在 P3.3 端口上,即 INT1),用发光二极管 L0(接在单片机 P0.0 端口上)显示开关状态。如果按住按键,则 L0 亮;松开按键,则 L0 熄灭。开关状态的检测过程:单片机对开关状态的检测相对于单片机来说,是从单片机的 P3.3 端口输入信号,而输入的信号只有高电平和低电平两种,当松开按键 K16,即输入端口悬空为高电平当按住按键 K16,按键被接到地,即输入低电平单片机可以采用 JBBIT,REL 或者是 JNBBIT,
5、REL 指令来完成对开关状态的检测即可。源程序如下:ORG 0000H LJMP STARTORG 0100H START: CLR P3.7 ;选通 WS系列实验板的 LED流水灯的电源控制端CLR P2.7 ;由于 P0 口是 LED、数码管和液晶模块共用端口,所以实验前要先把液晶模块的使能端置为 0JB P3.3,LOOP ;检测按键,当 P3.3=1则跳到 LOOP;当 P3.3=0则往下执行CLR P0.0 ;灯亮SJMP STARTLOOP: SETB P0.0 ;灯灭SJMP START ;回到主程序循环检测按键END第二部分:机器人小车内容简介:机器人小车完成如图规定的赛道,从
6、规定的起点开始,记录完成赛道一圈的时间。必须在三分钟之内完成,超时无效。其中当小车整体都在赛道外时停止比赛,视为犯规, 小车不规定运动方向,顺时针和逆时针都可以采用,但都从规定的起点开始记录时间。作品优点及应用前景: 可靠性高,编程简单单片机执行一条指令的时间是s级,执行一个扫描周期的时间为几ms乃至几十ms。相对于电器的动作时间而言,扫描周期是短暂的,可以认为在一个扫描周期内输入端子的状态是不变的,而对其状态变化的采集和处理也是实时的,从而满足了实时控制的要求。 本次设计的简易智能电动车,采用AT89S52单片机作为小车的检测和控制核心,使单片机按照预定的工作模式控制小车在各区域按预定的速度
7、行驶, 通过控制单片机进而控制小车,体现了智能化,通过使用不同的函数及设定不同的函数参数,能够在不同的要求下改变小车的前后轮转动方向以及转动速度,来完成不同的目的要求。在画正方形的同时能够完成四个1/4圆弧的制作。可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。一些危险事故中,凭借其特殊的履带来保持行进的稳定性,进而完成由程序指导的规定动作。如在已知楼内布置的情况下,可以在小车上装上红外感应器来搜寻是否有遇难者留在楼中。实验内容:第一次实验内容:发放实验仪器、下装Keil uVision IDE 集成开发环境、SL ISP下载编程烧录软件、串口调试软
8、件。简单的LED灯闪烁实验、两个按键控制LED灯亮灭实验、单键控制LED灯亮灭,中断控制的两灯闪烁实验等。第二次实验内容:智能小车运动测试、传感器电路搭建。第三次实验内容:智能小车循线测试。第四次实验内容:智能小车循线测试。循迹实验场地图:传感器电路图:源程序:#includesbit light1=P10;sbit light2=P11;sbit redlight=P34;/输出38.5kHz频率sbit dianjipwmL=P12;/左侧电机pwm控制sbit dianjipwmL_1=P32;/左侧电机1sbit dianjipwmL_2=P33;/左侧电机2sbit dianjipw
9、mR=P13;/右侧电机pwm控制sbit dianjipwmR_1=P30;/右侧电机1sbit dianjipwmR_2=P31;/右侧电机2sbit k1=P14;sbit k2=P15;sbit L1=P00;/左侧传感器sbit R1=P01;/右侧传感器unsigned char dianjiL_hh,dianjiL_hl,dianjiR_hl,dianjiR_ll,dianjiR_hh,dianjiR_lh,dianjiL_ll,dianjiL_lh,flag=0;/*定时器0计时初始化函数*/void timer0init() TMOD=0x12;/定时器0工作方式2,定时器1
10、工作方式1 IP=0x02; TH0=256-13; TL0=256-13; EA=1; /开总中断 ET0=1; / 允许T2定时器中断 TR0=1; / 启动T2定时器/*/void timer0(void) interrupt 1 /定时器2中断服务子程序产生38.5kHz方波redlight=!redlight;/*电机L初始化*/void timer1init() /电机pwm频率1kHzdianjiL_hh=(65536-200)/256; /所给数值为电机L占空比dianjiL_hl=(65536-200)%256;dianjiL_lh=(65536-800)/256; dian
11、jiL_ll=(65536-800)%256; TH1=dianjiL_hh;TL1=dianjiL_hl;ET1=1;TR1=1;/*/*电机L中断服务程序*/void timer1(void) interrupt 3if(dianjipwmL)TH1=dianjiL_lh;TL1=dianjiL_ll;dianjipwmL=!dianjipwmL;elseTH1=dianjiL_hh;TL1=dianjiL_hl;dianjipwmL=!dianjipwmL; /*/*电机R初始化函数*/void timer2init() T2CON=0x01; /十六位自动重装模式dianjiR_hh=
12、(65536-200)/256; /所给数值为电机L占空比dianjiR_hl=(65536-200)%256;dianjiR_lh=(65536-800)/256; dianjiR_ll=(65536-800)%256; TH2=dianjiR_hh; / T2定时器初值 TL2=dianjiR_hl; ET2=1; / 允许T2定时器中断 TR2=1; / 启动T2定时器/*/void timer2(void) interrupt 5 TF2=0;/中断溢出位清零 TR2=0;/关定时器2 if(dianjipwmR)TH2=dianjiR_lh;TL2=dianjiR_ll;TR2=1;
13、dianjipwmR=!dianjipwmR;elseTH2=dianjiR_hh;TL2=dianjiR_hl;TR2=1;dianjipwmR=!dianjipwmR; /*赛道检测函数*/void flag_test(void)if(!L1&R1)flag=1;else if(L1&!R1)flag=2;elseflag=0;/*电机系数赋值函数L*/void dianjiL_set(int b)dianjiL_lh=(65536-1000+b)/256;dianjiL_ll=(65536-1000+b)%256;dianjiL_hh=(65536-b)/256;dianjiL_hl=(
14、65536-b)%256;/*/*电机系数赋值函数R*/void dianjiR_set(int b)dianjiR_lh=(65536-1000+b)/256;dianjiR_ll=(65536-1000+b)%256;dianjiR_hh=(65536-b)/256;dianjiR_hl=(65536-b)%256;/*/void main()light1=0; /指示灯亮,检测主函数是否已执行。timer0init();timer1init();timer2init();dianjipwmL_1=1;dianjipwmR_1=0;dianjipwmL_2=0;dianjipwmR_2=1
15、;while(1) light2=0;/指示灯亮,检测是否进入循环flag_test(); switch(flag)case 1:/左转dianjiR_set(250);/电机输出功率,最大为1000. dianjiL_set(55);break;case 2:/右转dianjiR_set(100);dianjiL_set(260);break;default:break;第三部分:心得体会、合理性建议或意见1工程素质和技能归纳:C51 系列单片机 Keil uVision IDE(集成开发环境)软件和 ISP 下载软件的下载和安装。ZC-51Z教学板与计算机或者笔记本的连接。如何在集成开发环
16、境中创建目标工程文件,并添加和编辑C语言源程序。C语言程序的编译和下载。串口调试终端的使用。C 语言基本知识:基本数据类型、常量、变量、运算符、表达式。51单片机定时器的多路使用。2科学精神的培养:查阅参考书,了解其他数据类型、算术运算符和定时器的知识。3.团队合作能力的锻炼:在做车的过程中,遇到困难在所难免,特别是电路板的焊接调试,大家各司其职相互合作,最终完成了比赛。4.本次试验将传统的学习单片机原理与应用(即先理论讲解,然后实验验证)的模式,改变为先实验和实践如何应用,然后再归纳单片机原理(即先实践,后归纳)的模式,并以智能小车作为贯穿实践过程的典型工程对象,使整个学习过程充满挑战和乐趣,大大提高学习效率。同时在学习和实践的过程中,还可以培养我们系统的世界观和方法论。通过本课程的学和实践,让我们领略到了信息技术世界和机器人世界的神奇。建议:1,、小车的制作可以适当放宽对传感器型号及数量的限制,这样可以更加拓宽大家的思路,让大家掌握更多的技术,而且很大程度上可以提高小车的速度。2,、每年的比赛都更换跑道,并适当修改比赛规则,因为随着近两年小车的制作,大家会逐渐产生一种固定思路,小车会逐渐的千篇一律。