- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能寻迹避障小车寻线、避障控制程序设计.ppt
智能寻迹小车设计与制作(寻线、避障控制程序设计) 湖南创博龙智信息科技有限公司 主讲:雷道仲 任务一:智能寻迹避障小车寻线程序设计 固定路线寻线:学员编写程序使智能寻迹避障小车沿黑色圆圈行走,行走过程中小车一直压着黑线走,不得冲出黑线圆圈之外或之内。 湖南创博龙智信息科技有限公司 任务及要求 寻线、避障控制模块共设置了两个任务,分别如下: 任务二:避障程序设计 学员编写程序代码实现如下功能:小车在行进过程中,如果遇到障碍,小车能够自动完成避障功能,并且遇障碍能够报警,当退出障碍时报警声也消失。 湖南创博龙智信息科技有限公司 任务及要求 电机调速控制模块共设置了两个任务,分别如下: 湖南创博龙智信息科技有限公司 1.1 任务一:智能寻迹避障小车寻线程序设计 1.1.1 寻线控制电路 图1 寻线控制电路 湖南创博龙智信息科技有限公司 本车红外对管设计是红外发射管一直发射信号,接收管时刻准备接收信号。 两对对着地的红外管发射红外信号,信号在白色的地面上反射回接收管,通过接收管把信号送回单片机进行处理,完成相应的动作。 假如左右红外发射管发射的红外线对准地面白色的区域,则红外线被反射回来被接收管接收后转变成电信号送至单片机的P3.5和P3.6。此时P3.5=P3.6=0,当单片机信号检测到此电平时,便会判断出 1.1.2 寻迹电路原理 湖南创博龙智信息科技有限公司 小车处于白色区域,这时小车就会沿直线行走,当红外发射管左边对准黑线(黑胶带),右边对准白线(白色地面)时,左边的红外线被黑线吸收,红外线无法反射回,则左边呈现高电平,即单片机检测到P3.5=1(左边)、P3.6=0,这时,小车便向左边修正(左转弯),使左边传感器重新回到白色区域。右转弯过程与左转弯相类似,请学员自行分析。 1.1.2 寻迹电路原理 湖南创博龙智信息科技有限公司 1.1.3 参考程序流程图 图2 寻黑线转圈程序流程图 湖南创博龙智信息科技有限公司 #includeat89x52.h #define uint unsigned int #define uchar unsigned char #define out P2 sbit zuo1=P0^1; sbit zuo2=P0^0; sbit you1=P0^3; sbit you2=P0^2; sbit zuod=P3^5; sbit youd=P3^6; sbit qiand=P3^7; //左 右 前 3个红外传感器 sbit jiao=P0^6; sbit D1=P2^0; sbit D2=P0^7; 1.1.4 程序代码 湖南创博龙智信息科技有限公司 uchar code ZM[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; void delay(uint x) { uchar i; while(x--) for(i=0;i123;i++); } void qian() { zuo1=0; zuo2=1; //左边往前 you1=0; you2=1; //右边往前 } 1.1.4 程序代码 湖南创博龙智信息科技有限公司 void hou() { zuo1=1; zuo2=0; //左边往后 you1=1; you2=0; //右边往后 } void zuo() { zuo1=1; zuo2=0; //左边往后 you1=0; you2=1; //右边往前 } 1.1.4 程序代码 湖南创博龙智信息科技有限公司 void you() { zuo1=0; zuo2=1; //左边往前 you1=1; you2=0; //右边往后 } void main() { while(1) { if(zuod==0youd==0) //如果左右两个传感器没有检测到黑线 { qian(); //直走 out=ZM[1]; } if(zuod==1youd==0) //如果左边的传感器检测到黑线 { while(1) { zuo(); out=ZM[3]; //左转 D1=0; if(zuod==0) //一直左转到传感器检测不到为止 { 1.1.4 程序代码 湖南创博龙智信息科技有限公司 D1=1; break; //跳出循环 } } } if
文档评论(0)