ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:2.17MB ,
资源ID:7003209      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7003209.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STC89C52单片机的智能小车的设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于STC89C52单片机的智能小车的设计与实现.docx

1、基于STC89C52单片机的智能小车的设计与实现本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能利用红外对管检测黑线,并以单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。除了能自主循迹外还能够利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。引 言当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制

2、在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。作为机械行业的代表产品汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时

3、能具有交通、娱乐、办公和通讯等多种功能。无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为自动化专业的学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于通过独立设计并制作一辆具有简单智能

4、化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。一、实验目的: 通过设计进一步掌握单片机的应用,特别是在嵌入式系统中的应用。进一步学习单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。二、设计方案: 利用红外对管检测黑线与超声波模块检测障碍物,并以单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。三、报告内容安排:本技术报告主要分为两个部分。第一部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第二部分是对系统

5、软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。 硬件电路的设计1.主控系统采用STC89C52单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在一于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势-控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。2.电机驱动模块智能小车采用四轮驱动,左右两边各用两个电机驱动,调制两边两个轮子的转速起停从而达到控制转向的目的。电机的开关通过驱动板电机使

6、能端的开关来实现,从而完成了对小车的行径的调整。电源驱动模块,为 ST 公司原装全新的 L298N 芯片,采用SMT 工艺稳定性高,采用高质量铝电解电容,使电路稳定工作。可以直接驱动 4 路 3-24V 直流电机,集成 LM2596 稳压芯片(输入最低只要6V),采用DC to DC 方式最大电流可以达2A,可以给5V单片机电路系统,路由器,舵机,传感器供电,集成ULN2003 驱动IC,可以再驱动四个直流电机开与关。3.循迹模块采用四只红外对管,置于小车车身前轨道的两侧,根据四只光电开关接受到白线与黑线的情况来控制小车转向来调整车向,原理表明,只要合理安装好四只光电开关的位置就可以很好的实现

7、循迹的功能。4.避障模块采用IO口TRIG触发测距,给至少10US的高电平信号;模块自动发送8个 40KHz的方波,自动检测是否有信号返回; 有信号返回,通过IO口 ECH0输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。 测试距离=(高电平时间*声速(340M/S))/2 此次设计利用三个超声波传感器检测道路上的障碍的距离,控制电动小车自动前行和转向。5.机械系统由于玩具汽车的直流电机功率较小使得电机负担较重,所以要在直流电机和轮车轴之间加装了三级减速齿轮。力求使小车的机械系统稳定、灵活、简单。将电池放置在车体的电机前后位置,降低车体重心,提高稳定性。6.电源模块 采用7.4V

8、可充电锂电池给单片机与电机供电,使系统稳定运行。软件系统的实现小车转弯规则:此次设计的小车是利用差速转弯,当小车需要向右转弯时,小车的左边两个驱动轮向前行进,右边两个驱动轮倒退。当小车需要向左转弯时,小车的右边两个驱动轮向前行进,左边两个驱动轮倒退。小车程序:#include#include sfr T2MOD=0xc9;bit flag =0;bit SW; sbit Right_moto_en = P24; sbit Left_moto_en = P25; sbit in1=P10;sbit in2=P11;sbit in3=P12;sbit in4=P13;sbit in5=P14;sb

9、it in6=P15;sbit in7=P16;sbit in8=P17;sbit int0 = P32; sbit led0 = P31 ;/中sbit led1 = P33 ;/右sbit led2 = P34 ;/左sbit TX1 = P35; /中sbit TX2 = P36; /右sbit TX3 = P37; /左unsigned char timer,num,csb,CS,HM;unsigned int time,S_M,S_R,S_L,S_S;void Right_moto_go() in1=0;in2=1;in3=0;in4=1;void Right_moto_back()

10、 in1=1;in2=0;in3=1;in4=0; void Left_moto_go() in5=0;in6=1;in7=0;in8=1;void Left_moto_back() in5=1;in6=0;in7=1;in8=0;unsigned char pwm_val_right =0;unsigned char push_val_right=0;unsigned char pwm_val_left =0;unsigned char push_val_left =0;bit Right_moto=1;bit Left_moto=1;void delay(unsigned int k) u

11、nsigned int x,y; for(x=0;xk;x+) for(y=0;y2000;y+);void line_moto(unsigned char a) push_val_left =a; push_val_right =a; Left_moto_go(); Right_moto_go(); led0=1; led1=1; led2=1;void right_moto(unsigned char a) push_val_left =a; push_val_right =a; Right_moto_back(); Left_moto_go(); led0=1; led1=0; led2

12、=1; void left_moto(unsigned char a) push_val_left =a; push_val_right =a; Right_moto_go(); Left_moto_back(); led0=1; led1=1; led2=0; /*void back_moto(unsigned char a) push_val_left =a; push_val_right =a; Right_moto_back(); Left_moto_back(); led0=0; led1=1; led2=1; */void pwm_out_left_moto() if(Left_m

13、oto) if(pwm_val_left=10) pwm_val_left=0; else Left_moto_en=0;void pwm_out_right_moto() if(Right_moto) if(pwm_val_right=10) pwm_val_right=0; else Right_moto_en=0; void time0() interrupt 1 TH0=0XF8; TL0=0X30; pwm_val_left+; pwm_val_right+; pwm_out_left_moto(); pwm_out_right_moto();void intr0() interru

14、pt 0 TR1=1; while(!int0); TR1=0; time=TH1*256+TL1; TH1=0; TL1=0; if(csb=1) S_M=(time*1.9)/100; if(csb=2) S_R=(time*1.9)/100; if(csb=0) S_L=(time*1.9)/100; if(S_R=8 | S_L=8) if(S_R=8) S_S=S_S|0x04; else S_S=S_S|0x02; else if(S_M=50) timer=0; TX1=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()

15、; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX1=0; csb=1; if(csb=1) timer+; if(timer=50) timer=0; TX2=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _no

16、p_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX2=0; csb=2; if(csb=2) timer+; if(timer=50) timer=0; TX3=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

17、 _nop_(); _nop_(); _nop_(); _nop_(); TX3=0; csb=0; void INIT() TMOD=0X11; T2MOD=0; T2CON=0; TH0=0XF8; TL0=0X30; TH1=0; TL1=0; RCAP2H=0xf8; RCAP2L=0x30; TH2=RCAP2H; TL2=RCAP2L; ET0=1; ET1=1; ET2=1; TR0=1; IT0=1; EX0=1; EA=1; S_S=0x00; TR2=0; SW =0; CS =3; void main() INIT(); while(1) if(!SW) HM = P2&

18、0x0F; else HM = S_S; switch(HM) case 0x00: /0000 0000 line_moto(CS); delay(6); break; case 0x01: /0000 0001 case 0x02: /0000 0010 right_moto(2); delay(6); break; case 0x07: /0000 0111 case 0x03: /0000 0011 right_moto(3); delay(6); break; case 0x04: /0000 0100 case 0x08: /0000 1000 left_moto(2); dela

19、y(6); break; case 0x0e: /0000 1110 case 0x0C: /0000 1100 left_moto(3); delay(6); break; case 0x0f: /0000 1111 /Right_moto=0; /Left_moto =0; Right_moto=0; Left_moto =0; SW=SW; TR2=SW; if(!SW) CS = 3; else CS = 2; Right_moto=1; Left_moto =1; break; case 0x1f: /0001 1111 if(S_R=8) left_moto(2); else ri

20、ght_moto(2); delay(6); break; 结论根据本次设计要求,我们阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。通过本次课题设计,不仅是对课本所学知识的考查,更是对我们的自学能力和收集资料能力以及动

21、手能力的考验。本次课程设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路。本次课程设计使我意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。总之,在课题设计的过程中,无论是对于学习方法还是理论知识,都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。参考文献1.单片机原理与应用张毅刚主编高等教育出版社2.C程序设计谭浩强著清华大学出版社3.单片机C程序设计马忠梅,北京航空航天大学出版社4.数字电子技术基础(第五版)阎石主编高等教育出版社5.模拟电子技术基础(第四版)华成英主编高等教育出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1