智能小车设计报告.doc

上传人:good****022 文档编号:116538081 上传时间:2022-07-05 格式:DOC 页数:23 大小:3.44MB
返回 下载 相关 举报
智能小车设计报告.doc_第1页
第1页 / 共23页
智能小车设计报告.doc_第2页
第2页 / 共23页
智能小车设计报告.doc_第3页
第3页 / 共23页
点击查看更多>>
资源描述
湖南涉外经济学院课程设计报告课程名称:专业综合课程设计报告题目:智能小车设计学生姓名: 所在学院:信息科学与工程学院专业班级: 学生学号: 指导教师:廖亦凡20 15 年 7 月1日课程设计任务书报告题目智能小车设计完成时间2015.7.1学生姓名 专业班级 指导教师廖亦凡职称副教授总体设计要求和技术要点参考选题一:智能小车设计1、内容:选用单片机设计一个智能小车,要求能小车实现循迹、避障、遥控、声控、光控等功能。2、要求:(1)作品要求:有完整的电路原理图;用设计的硬件演示系统功能。(2)按湖南涉外经济学院课程设计管理办法要求提交课程设计报告。工作内容及时间进度安排第17周:周1-周3 :立题、论证方案设计周4-周5 :硬件设计或仿真电路设计第18周:周1-周3 :软件设计周4-周5 :验收答辩课程设计成果1与设计内容对应的软件程序、电路图、通过实物设计的作品或通过仿真设计的仿真图。2课程设计总结报告(所有项目均需按湖南涉外经济学院课程设计管理办法要求提交课程设计报告)。摘要 STC89C52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。在智能小车控制系统的设计中,以STC89C52为核心,用L293D驱动两个直流电机,当产生信号驱动小车前进时,是通过寻迹模块里的红外对管是否寻到黑线产生的电平信号通过LM393再返回到单片机,单片机根据程序设计的要求做出相应的判断送给电机驱动模块,让小车来实现前进、左转、右转、停车等基本功能。寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,本实验中的寻迹是指在白色地板上寻黑线。寻迹是指通过红外发射管和接收管识别路径。关键词:智能小车、单片机、STC89C52、超声波传感器;目录一、系统设计11.基本要求1二、方案设计与论证12.1循迹模块12.2避障模块32.3电机控制模块52.4遥控模块8三、总原理图101.总原理图102.实物图11四、结论与心得12五、参考文献121、 系统设计1. 基本要求 (1)智能小车能在设计好的线路上自动循迹; (2)智能小车利用红外管进行探测,遇到障碍开启报警,实现避障功能; (3)使用遥控器对智能小车进行控制,实现前后左右运动,并在数码管上显示相应的数字; (4)采用声控装置,用拍手来控制小车的启动与停止; (5)采用光敏二极管完成管控模块。二、方案设计与论证根据基本要求确定方案,在现有的智能小车上,实现对车的速度,运动状况进行检测,并将测量数据传送至单片机进行处理,然后有单片机根据所检测的各种数据实现对智能小车的智能控制。2.1循迹模块 2.1.1循迹原理 本车红外对管设计是红外发射管一直发射信号,接收管时刻准备接收信号。 两对对着地的红外管发射红外信号,信号在白色的地面上反射回接收管,通过接收管把信号送回单片机进行处理,完成相应的动作。假如左右红外发射管发射的红外线对准地面白色的区域,则红外线被反射回来被接收管接收后转变成电信号送至单片机的P3.5和P3.6。此时P3.5=P3.6=0,当单片机信号检测到此电平时,便会判断出小车处于白色区域,这时小车就会沿直线行走,当红外发射管左边对准黑线(黑胶带),右边对准白线(白色地面)时,左边的红外线被黑线吸收,红外线无法反射回,则左边呈现高电平,即单片机检测到P3.5=1(左边)、P3.6=0,这时,小车便向左边修正(左转弯),使左边传感器重新回到白色区域。右转弯过程与左转弯相类似。2.1.2循迹控制电路图1 循迹控制电路图 2.1.3循迹流程图 图2 循迹程序流程 2.1.4循迹主要程序代码18void main() while(1) /while(1);等待 通常使用在主函数的最后一条 定时器的后面 if(zuod=0&youd=0)/如果左右两个传感器没有检测到黑线 qian(); /直走 out=ZM1;if(zuod=1&youd=0)/如果左边的传感器检测到黑线 while(1) zuo(); out=ZM3;/左转 D1=0; / 蔽障 if(zuod=0) /一直左转到传感器检测不到为止D1=1;break;/跳出循环 if(youd=1&zuod=0) while(1) you(); out=ZM4; D2=0; if(youd=0) D2=1; break; /效果:沿着黑线转圈2.2避障模块2.2.1避障原理 避障电路由单片机、比较芯片L393、红外发射对管等元器件构成。电路工作过程如下:首先,比较芯片的2脚为基准电压输入,该引脚通过电源串联分压,取得一个大约2.5V基准电压作为比较电压。比较芯片的3脚为比较电压的输入端,该电压取之反馈回来的红外信号。当小车前进过程中,前方无障碍,则红外接收管的阻值会很大,从而输出一个高电平(约5V)给比较芯片的3脚,这样经过比较芯片的比较,在比较芯片的2脚输出一个高电平给单片机P3.7引脚。单片机根据接收到的电平就可以判别前方有无障碍。当前方有障碍时V2的阻值会很小,输出低电平给比较芯片的3脚,比较芯片从而输出低电平给单片机P3.7。 2.2.2避障控制原理图 图3 避障控制电路2.2.3 避障程序流程框 图4 避障报警程序流程图 2.2.4避障主要程序代码void main() while(1) if(zuod=0&youd=0)/如果左右两个传感器没有检测到黑线 qian();/直走 out=ZM1; if(qiand=0)/如果在直走的过程中遇见障碍物 delay(50);/延时判断是否为干扰if(qiand=0)/不是干扰jiao=0;/蜂鸣器hou();/后退半秒out=ZM2;delay(500);you();/右转200毫秒out=ZM4;delay(200);jiao=1;/取消报警if(zuod=1&youd=0)/如果左边的传感器检测到黑线 while(1) zuo(); out=ZM3; /左转 D1=0; if(zuod=0) /一直左转到传感器检测不到为止 D1=1; break;/跳出循环2.3电机控制模块 2.3.1电机控制电路 图5电机控制电路图 2.3.2 直流电机H桥驱动电路工作原理 图6 直流电机H桥驱动电路工作原理 表2.1 电机控制状态表输入使能控制输出电机状态1A2AENA1Y2YDC01101电机正转10110电机反转11111电机刹车00100电机惰行XX0ZZ电机停转 表2.2 智能小车运行状态表输入 使能控制小车状态左电机右电机ENA1A2A3A4A101011前进10101后退10011左转弯01101右转弯11111停止2.3.3电机控制程序流程图图7 电机控制程序流程图2.3.4电机运行程序#include#define uint unsigned int#define uchar unsigned charsbit left1=P00;sbit left2=P01;sbit right1=P02;sbit right2=P03;sbit SB1=P32;sbit SB2=P34;void delay(uint x)uchar i;while(x-)for(i=0;i123;i+);void qianjin()left1=0;left2=1;/左边往前right1=0;right2=1;/右边往前void houtui()left1=1;left2=0;/左边往后right1=1;right2=0;/右边往后void left()left1=1;left2=0;/左边往后right1=0;right2=1;/右边往前void right()left1=0;left2=1;/左边往前right1=1;right2=0;/右边往后void tingzhi() left1=1;left2=1;right=1;right2=1;main() while(1) if(SB1=0) qianjin(); if(SB2=0) houtui(); 2.4遥控模块 2.4.1遥控原理 红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。把遥控程序下载到智能小车芯片上,利用红外接收头接受遥控器发出的信号,对智能小车进行前后左右的控制,并使用智能小车上面的数码管,把控制小车各运行方向的数值显示出来。 2.4.2遥控主要程序 #include #includetypedef unsigned int uint;typedef unsigned char uchar;uint IR_time;uchar code table=0 x9f,0 x24,0 x0d,0 x99,0 xff;/数码管编码uchar TIME33=0;/存放33个波形时间uchar Time_dat4=0;/存放4个解码完成的数据sbit left0 = P00;sbit left1 = P01;sbit right0 = P02;sbit right1 = P03;sbit fmq = P33;bit IR_ok;bit IR_chuli_ok; /将波形时间转换成逻辑电平的标志bit start; /标志位,开始计时标志位void qianjin() /前进子函数 left0 = 1; left1 = 0; right0 = 1; right1 = 0;void houtui()/后退子函数 left0 = 0; left1 = 1; right0 = 0; right1 = 1;void youzhuan() /右转子函数 left0 = 1; left1 = 0; right0 = 0; right1 = 1;void zuozhuan() /左转子函数 left0 = 0; left1 = 1; right0 = 1; right1 = 0;void stop() /停止子函数 left0 = 0; left1 = 0; right0 = 0; right1 = 0;void EX1_init(void) IT1 = 1; /外部中断下降沿触发EA = 1;EX1 = 1;void Time1_init(void) TMOD |= 0 x20;/定时器工作在方式2(8位自动重装)TH1 = 0;TL1 = 0;ET1 = 1;TR1 = 1;void IR_chuli(void) /将时间值转化为逻辑电平(转换成16进制函数)uchar i,j;uchar NUM = 1; /去除引导码,因为引导码存在数组下标为0的位置,即第1位,数据从第2位开始)uchar HL_time; /定义一个时间变量,用于单个按键波形处理uchar byte = 0 x00; /定义一个字节变量,用于存储转换的16进制数for(i=0;i4;i+) /表示4类数据(客户码、客户反码、数据码、数据反码)for(j=0;j 6) /(1.125+2.25)/2=1.687ms,277us*6=1.66ms,判断为1,否则为0)byte |= 0 x80;else byte = byte;if(j = 1; /因为最先处理低位数据,所以要用右移方法,将低位移7次,回到本来位置)NUM+;Time_dati = byte;byte = 0 x00;if(Time_dat2 = Time_dat3) /比较数据码与数据反码是否相等,相等,表示处理成功。IR_chuli_ok = 1;/处理成功的标志,void play(void)switch(Time_dat2)/ case 0 x0c:DataPort=dofly_DuanMa1;break;/1 显示相应的按键值 case 0 x18:qianjin();P2=table0;break;/2/ case 0 x5e:;break;/3 case 0 x08:zuozhuan();P2=table2;break;/4/ case 0 x1c:;break;/5 case 0 x5a:youzhuan();P2=table3;break;/6/ case 0 x42:;break;/7 case 0 x52:houtui();P2=table1;break;/8/ case 0 x47:switc_h = switc_h;break;/9 default:break;/*遥控器1(小)码值: 遥控器2(大)码值:45 46 4705 04 06 0744 40 4309 08 0a 0b07 15 090d 0c 0e 0f16 19 0d15 14 16 170c 18 5e19 18 1a 1b08 1c 5a11 10 12 1342 52 4a01 00 02 031d 1c 1e 1f*/void main()EX1_init();Time1_init();while(1)if(IR_ok)/ 按键的键值时间存储完毕标志IR_ok = 0;IR_chuli(); /将键值时间转换成16进制处理函数。if(IR_chuli_ok) IR_chuli_ok=0;play(); /调用符合键值的处理函数void EX1_(void) interrupt 2 /外部中断 接收波形时间static uchar xx = 0; / 设置记录波形的变量;计数 0 33(记录34个波形的时间)if(!start) /第一个下降沿触发 表示解码开始start = 1;IR_time = 0; /将按键按下前的时间清除else if(start) /第二个下降沿到第33个下降沿 if(IR_time = 32) /剔除引导码4*8=32(引导码为9000US,在8.8MS与13.8MS之间认为是引导码)xx = 0;TIMExx = IR_time; /存储按键码值时间(引导码存在数组的第一个位置,TIME为键值时间存储数组)IR_time = 0; /每个码时间不一样/if(xx = 1)&(TIME19) /连发码处理,可以去掉/xx = 0; /TIME1 = 0;/ xx+;if(xx = 33)xx = 0;IR_ok = 1; /按键键值时间存储完成的标志,等于1表示完成start = 0; void Time1(void) interrupt 3 /定时器中断IR_time+; /每经过256*(12/11.0592)us触发一次中断(约277US)if(IR_time390) / 不要这条语句的话按一下,就是长按,长按处理,处理连发码的时间参数(见PDF文档,约108MS,相当于长按有效,否则,按一下键,动的不明显,277*390=108MS)IR_chuli_ok = 0;/将标志清零,停止判断。stop(); /按键松开,电机停转P2 = table4; /数码管灭start = 0; /清零,方便下一次重新计数。 三、总原理图 1.总原理图 图8 总原理2.实物图图9 实物图表3.1 学生情况统计表序号姓名性别出生日期学号专业联系电话备注1万智亮男1994.0312430621817069电子信息工程15607484951四、结论与心得历时一周月的设计过程中,我首先边查资料,边在实验室焊接小车的线路板。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错。在焊接显示电路时,我就错将15千欧的电阻焊成了1.5千欧。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊接线路板,还可以上机编程,使我软件调试知识也提高了。本次毕业设计已经告一段落。经过自己不断的搜索努力以及廖老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,廖老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。同时通过自己的不懈努力加细心琢磨最终完成本次课程设计,通过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年来的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这一个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请老师批评与指正,在此深表感谢。五、参考文献【1】林立,张俊亮.单片机原理及应用.北京:电子工业出版社,2013.【2】李广弟,单片机基础,北京:北京航空航天大学出版社,2001,5664【3】何希才,新型实用电子电路400例,电子工业出版社,2000年,6065【4】王东峰,王会良,董冠强.单片机C语言应用100例.北京:电子工业出版社,2009.【5】程继红,常健.传感器原理及工程应用(第四版).西安:西安电子科技大学出版社,2014.教师评语及设计成绩教师评语:课程设计成绩:指导教师:(签名)日期:年月日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 酒店餐饮


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!