单片机课程设计报告_第1页
单片机课程设计报告_第2页
单片机课程设计报告_第3页
单片机课程设计报告_第4页
单片机课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2单片机课程设计报告智能机器小车设计说明书参赛队员: 周扬龚彦中2023年一月名目一、题目分析....................................................................................................................3二、硬件设计....................................................................................................................4三、掌握算法....................................................................................................................7四、程序流程..................................................................................................................8五、程序代码..................................................................................................................9六、掌握效果及结果分析..................................................................................................................13七、心得体会..................................................................................................................14一、题目分析任务涉及:机器人小车巡航〔跟踪条纹等〕;无条纹区动作:触觉〔利用胡须〕避障,走转90度,停2秒,直行约15厘米〔或引导检测到条纹〕,再停2秒;全程要设计信号灯指示工作状态。小车巡航〔跟踪条纹等〕着该路径无过失运动。路径中每个条纹带是由三条1/4英寸宽的聚乙烯绝缘带边对边并行放置在白1-1为大致的试验任务图。图1-1〔接收〕器,检测到车巡航。IR传感器在此应用用有着格外大的便利性,红外线〔IR〕接收/检测器有内过。红外检测器还有一个电子滤波器,它只允许大约38.5kHz的电信号通过。38,500阳光和室内光对IR的干预。太阳光是直流干预〔0Hz〕源,而室内光依靠于所在通带频率之外,它完全被IR探测器无视。无条纹区动作无条纹区动作可以拆解为几个分动作,触觉〔利用胡须〕避障,左转90度,停2秒,直行约15厘米〔或引导检测到条纹〕,再停2秒。首先是触觉避障,也就是在机器人小车上安装有“胡须”,当小车前行过程启动后退并左右转弯之类的掌握,实现避障功能。90度,即调用左转程序,调整延时时间已实现90度的掌握;接着就是停2秒,也就是调用延时函数,参数给2秒;然后是直行约15cm,即调用直行函数,具体行走离大约15cm;最终又是一段延时函数,使小车停2秒。设计信号灯指示工作状态件中了解机器目前的工作状态,这里我们使用信号指示灯来指示小车的工作状态。即使用左右两个LED来说明现阶段单片机依据检测得到的信号作出的规律推断IR〔即小车左边在黑线上即让左边的小灯亮,〕即让右边的小灯亮。这样便存在了4种状况,左边亮,右边亮,左右同时亮,左右同时灭,即指示小车右偏,小车左偏,小车在黑线上,小车在黑线外。格外大的用处,可以让开发者清楚得看出来规律上需要改进的地方。二、硬件设计硬件设计主要由IR放射器与接收器电路、触觉感应〔“胡须”〕电路、LED信号指示灯电路组成。IR放射器与接收器电路图2-1R放射接收管物理连接图4IR放射器与接收器在电路上是分立的,它们之间没有直接的电路连接关系,图2-1R放射接收管物理连接图410图2-2IR放射接收管电路图从图2-2我们可以清楚得看到电路的连接关系,IR放射管正极经470R电阻连接到VCC,负极接到9013三极管的c极,9013的三极管b级经470R电阻接到单片2号接GND,3号接IO口,左边的接收管接P1.2,右边接P3.5。IR放射管与VCC470R,需要我们依据硬件构造来做一些调整,阻值越大,IR放射接收管的可视范围就越小。为了调试的便利,我们最终选择使用可调电位器代替470R的定值电阻,通过调整电位器的阻值调整可视范围。触觉感应〔“胡须”〕电路〔GND〕是由于教学板外围的镀金孔都连接到GND。金属支架和螺丝钉供给电气连接给胡须。通过编程让单片机探测什么时候胡须被触动。图2-3“胡须”物理连接简图图2-4“胡须”电路图由图2-4220R电阻连接到单片机IO口上,左排针连接到P2.3,右排针连接到P1.4,并且排针口当胡须接触到排针时,IO口变为低电平。I/O引脚监视着10K〔GND〕,所以I/O管脚的电压是0V。依据IO口电平信号的变化单片机就能实2.3.LED信号指示灯电路由单片机掌握,电路图如图2-5所示。VCC1K P2.1左指示灯VCCVCC1KP1.7右指示灯图2-5LED信号指示灯电路2-5可以清楚地看到指示灯的正极经上拉接到VCC,51的IO缺省为高电平,只有当IO给低电寻常指示灯亮,IO给高电寻常指示灯灭。三、掌握算法法局部涉及不多。IR接收器接收到信号IRIRIR们让电机停顿转动。车右转;假设右边胡须触碰障碍,与右边相连的IO为低电平,小车左转。调试后小车系统行走过程平稳性明显提高。四、程序流程初始化初始化直行Y左胡须遇障直行NY右胡须遇障左转NIR放射与接收同时检测到信号P1.2==0且P3.5==0NY延时10ms同时检测到信号P1.2==0且P3.5==0Y停顿N左边检测到,右边没有P1.2==0且P3.5==1Y右转N右边检测到,左边没有P1.2==1且P3.5==0Y左转N同时检测不到信号P1.2==1且P3.5==1Y直行五、程序代码程序片段1:封装好的主程序与宏定义#include<AT89X52.h>#defineLeftIRP1_2//左边红外接收连接到P1_2#defineRightIRP3_5//右边红外接收连接到P3_5#defineLeftLaunchP1_3//左边红外放射连接到P1_3#defineRightLaunchP3_6//右边红外放射连接到P3_6#defineLED_LP2_1#defineLED_RP1_7voidmain(void){intirDetectLeft,irDetectRight;uart_Init;printf(“ProgramRunning!\n“);Forward;while(1){if(P2_3state==0){left_avoid;}elseif(P1_4state==0){right_avoid;}IRLaunch(”R”);//右边放射irDetectRightRightIR;//右边接收IRLaunch(”L”);//左边放射irDetectLeft=LeftIR;//左边接收if((irDetectLeft==0)&&(irDetectRight==0)){delay_nms(10);if((irDetectLeft==0)&&(irDetectRight==0)){stop;LED_L=1;LED_R=1;}}elseif((irDetectLeft==0)){LED_L=1;LED_R=0;Right_Turn;}elseif((irDetectRight==0)){LED_L=0;LED_R=1;Left_Turn;}else{Forward;LED_L=0;LED_R=0;}}}程序片段2:子函数的封装intP1_4state(void){return(P1&0x10)?1:0;}intP2_3state(void){return(P2&0x08)?1:0;}voidIRLaunch(unsignedcharIR){intcounter;if(IR==”L”)for(counter=0;counter<38;counter++){LeftLaunch=1;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;LeftLaunch=0;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;}if(IR==”R”)for(counter=0;counter<38;counter++)//右边放射{RightLaunch=1;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;RightLaunch=0;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;}}voidForward(void)//向前行走子程序{P1_1=1;delay_nus(1650);P1_1=0;P1_0=1;delay_nus(1350);P1_0=0;delay_nms(20);}voidstop(void)//stop子程序{P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1500);P1_0=0;delay_nms(20);}voidLeft_Turn(void)//左转子程序{P1_1=1;delay_nus(1550); // P1_1=0;P1_0=1;delay_nus(1350);P1_0=0;delay_nms(20);}voidRight_Turn(void)//右转子程序{P1_1=1;delay_nus(1650);P1_1=0;P1_0=1;delay_nus(1450);P1_0=0;delay_nms(20);}voidBackward(void)//向后行走子程序{inti;for(i=1;i<=65;i++){P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);}}void left_avoid(void){inti;for(i=1;i<=26;i++){P1_1=1;delay_nus(1430);P1_1=0;P1_0=1;delay_nus(1430);P1_0=0;delay_nms(20);}delay_nms(2023);for(i=1;i<=60;i++){P1_1=1;delay_nus(1540);P1_1=0;P1_0=1;delay_nus(1458);P1_0=0;delay_nms(20);}delay_nms(2023);}voidright_avoid(void){inti;for(i=1;i<=35;i++){P1_1=1;delay_nus(1550);P1_1=0;P1_0=1;delay_nus(1550);P1_0=0;delay_nms(20);}delay_nms(2023);for(i=1;i<=60;i++){P1_1=1;delay_nus(1540);P1_1=0;P1_0=1;delay_nus(1458);P1_0=0;delay_nms(20);}delay_nms(2023);}六、掌握效果及结果分析16秒,包括其中暂停的2秒,运动速度与调整速度都能满足当时的设想。去调程序存在的一些规律错误。误。七心得体会这学期刚学完单片机,理论学问已经把握,要开头做实物了,有点兴奋。到底学芯片,不是为了考试,而是真真正正做实物,能做出东西来,才说明正真懂了单片机,正真知道它的I/O口,它的定时器,计数器,以及程序的编写。特别是将程序烧进去,正真的让机器动起来,还是很兴奋的,固然很直接的一个问题就是理论不等于实际,这也让我感觉,这次课程设计最重要的,是调试,怎用,需要自己真正的懂,理解,才能调试出比较好的效果。我们

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论