智能小车设计报告

时间:2024.4.21

湖南涉外经济学院

课程设计报告

课程名称:专业综合课程设计

报告题目:智能小车设计 学生姓名:

所在学院:信息科学与工程学院 专业班级:

学生学号:

指导教师:廖亦凡

20 15 年 7 月1日

课程设计任务书

智能小车设计报告

摘要

STC89C52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

在智能小车控制系统的设计中,以STC89C52为核心,用L293D驱动两个直流电机,当产生信号驱动小车前进时,是通过寻迹模块里的红外对管是否寻到黑线产生的电平信号通过LM393再返回到单片机,单片机根据程序设计的要求做出相应的判断送给电机驱动模块,让小车来实现前进、左转、右转、停车等基本功能。寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,本实验中的寻迹是指在白色地板上寻黑线。寻迹是指通过红外发射管和接收管识别路径。

关键词:智能小车、单片机、STC89C52、超声波传感器;

目录

一、系统设计........................................................ 1

1.基本要求 ...................................................... 1

二、方案设计与论证.................................................. 1

2.1循迹模块..................................................... 1

2.2避障模块..................................................... 3

2.3电机控制模块................................................. 5

2.4遥控模块..................................................... 8

三、总原理图....................................................... 14

1.总原理图 ..................................................... 14

2.实物图 ....................................................... 14

四、结论与心得..................................................... 16

五、参考文献....................................................... 16

一、系统设计

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,这时,小车便向左边修正(左转弯),使左边传感器重新回到白色区域。右转弯过程与左转弯相类似。

智能小车设计报告

图1 循迹控制电路图

1

2.1.3循迹流程图

智能小车设计报告

图2 循迹程序流程

2.1.4循迹主要程序代码

void main()

{ while(1)

//while(1);等待 通常使用在主函数的最后一条 定时器的后面 { if(zuod==0&youd==0) //如果左右两个传感器没有检测到黑线

{ qian(); //直走 out=ZM[1]; } if(zuod==1&youd==0) //如果左边的传感器检测到黑线 { while(1) { zuo(); out=ZM[3]; //左转 D1=0; // 蔽障 if(zuod==0) //一直左转到传感器检测不到为止 {D1=1;

break; //跳出循环

} }

2

}

if(youd==1&zuod==0) { while(1)

{ you(); out=ZM[4]; 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 避障控制电路

智能小车设计报告

3

2.2.3 避障程序流程框 图4 避障报警程序流程图

2.2.4避障主要程序代码 void main()

{ while(1)

{

智能小车设计报告

{ if(zuod==0&youd==0) //如果左右两个传感器没有检测到黑线 { qian(); //直走 //如果在直走的过程中遇见障碍物 //延时判断是否为干扰 out=ZM[1]; if(qiand==0) { delay(50); //不是干扰 //蜂鸣器 //右转200毫秒 hou(); //后退半秒 if(qiand==0) jiao=0; out=ZM[2]; delay(500); you(); out=ZM[4]; delay(200); 4

jiao=1;

}

//取消报警

}

}

if(zuod==1&youd==0) //如果左边的传感器检测到黑线

{ while(1) { zuo();

out=ZM[3]; //左转 D1=0;

if(zuod==0) //一直左转到传感器检测不到为止

{

D1=1;

break; //跳出循环

}

}

}

2.3电机控制模块 2.3.1电机控制电路

智能小车设计报告

图5电机控制电路图

2.3.2 直流电机H桥驱动电路工作原理

5

图6 直流电机H桥驱动电路工作原理

智能小车设计报告

智能小车设计报告

2.3.3电机控制程序流程图

智能小车设计报告

6

图7 电机控制程序流程图

2.3.4电机运行程序 #include<reg52.h>

#define uint unsigned int #define uchar unsigned char sbit left1=P0^0; sbit left2=P0^1; sbit right1=P0^2; sbit right2=P0^3; sbit SB1=P3^2; sbit SB2=P3^4; void delay(uint x) {

uchar i; while(x--)

for(i=0;i<123;i++); }

void qianjin() {

left1=0;

left2=1;//左边往前 right1=0;

right2=1;//右边往前 }

void houtui() {

left1=1;

left2=0;//左边往后 right1=1;

right2=0;//右边往后

智能小车设计报告

7

}

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 <reg52.h>

#include<stdio.h>

typedef unsigned int uint;

typedef unsigned char uchar;

uint IR_time;

uchar code table[]={0x9f,0x24,0x0d,0x99,0xff};//数码管编码

uchar TIME[33]={0};//存放33个波形时间

uchar Time_dat[4]={0};//存放4个解码完成的数据

sbit left0 = P0^0;

sbit left1 = P0^1;

sbit right0 = P0^2;

sbit right1 = P0^3;

sbit fmq = P3^3;

bit IR_ok;

bit IR_chuli_ok; //将波形时间转换成逻辑电平的标志

bit start; //标志位,开始计时标志位

void qianjin()

{

//前进子函数 left0 = 1; left1 = 0; right0 = 1; 8

} 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;

//后退子函数 //右转子函数 //左转子函数 //停止子函数 //外部中断下降沿触发 9

} EX1 = 1;

//定时器工作在方式2(8位自动重装) void Time1_init(void) {

} TMOD |= 0x20; TH1 = 0; TL1 = 0; ET1 = 1; TR1 = 1;

void IR_chuli(void) {

//将时间值转化为逻辑电平(转换成16进制函数) uchar i,j; uchar NUM = 1; //去除引导码,因为引导码存在数组下标为0的位uchar HL_time; //定义一个时间变量,用于单个按键波形处理 uchar byte = 0x00; //定义一个字节变量,用于存储转换的16进制数 for(i=0;i<4;i++) //表示4类数据(客户码、客户反码、数据码、数据反{ for(j=0;j<8;j++) { } Time_dat[i] = byte; HL_time = TIME[NUM]; if(HL_time > 6) //((1.125+2.25) byte |= 0x80; byte = byte; byte >>= 1; //因为最先处理低位数据,所以要用右移方法,将置,即第1位,数据从第2位开始) 码) /2=1.687ms,277us*6=1.66ms,判断为1,否则为0) else if(j < 7) 低位移7次,回到本来位置) NUM++;

10

} } byte = 0x00; if(Time_dat[2] == ~Time_dat[3]) //比较数据码与数据反码是否相等,相等,IR_chuli_ok = 1; //处理成功的标志, 表示处理成功。

void play(void)

{

switch(Time_dat[2]) { case 0x0c:DataPort=dofly_DuanMa[1];break;//1 显示相应的按键值 case 0x18:qianjin();P2=table[0];break;//2 case 0x5e:;break;//3 case 0x08:zuozhuan();P2=table[2];break;//4 case 0x1c:;break;//5 case 0x5a:youzhuan();P2=table[3];break;//6 case 0x42:;break;//7 case 0x52:houtui();P2=table[1];break;//8

case 0x47:switc_h = ~switc_h;break;//9 // // // // //

} } default:break; /********************************************************* 遥控器1(小)码值: 45 46 47 44 40 43 07 15 09 16 19 0d 0c 18 5e 08 1c 5a 42 52 4a 遥控器2(大)码值: 05 04 06 07 09 08 0a 0b 0d 0c 0e 0f 15 14 16 17 19 18 1a 1b 11 10 12 13 01 00 02 03 1d 1c 1e 1f ***********************************************************/

void main()

11

{

}

void EX1_(void) interrupt 2 //外部中断 接收波形时间

{

} else if(start) //第二个下降沿到第33个下降沿 { if((IR_time < 50)&&(IR_time >= 32)) //剔除引导码4*8=32(引导码static uchar xx = 0; if(!start) { start = 1; IR_time = 0; //将按键按下前的时间清除 // 设置记录波形的变量;计数 0 ~33(记录34个波形的时间) //第一个下降沿触发 表示解码开始 while(1) { } if(IR_ok) { } if(IR_chuli_ok) { IR_chuli_ok=0; } play(); //调用符合键值的处理函数 IR_ok = 0; IR_chuli(); //将键值时间转换成16进制处理函数。 // 按键的键值时间存储完毕标志 EX1_init(); Time1_init(); 为9000US,在8.8MS与13.8MS之间认为是引导码)

12

} } xx = 0; TIME[xx] = IR_time; //存储按键码值时间(引导码存在数组的第一个IR_time = 0; //每个码时间不一样 //if((xx == 1)&&(TIME[1]>9)) //连发码处理,可以去掉 //{ // xx = 0; //} xx++; if(xx == 33) { } xx = 0; IR_ok = 1; start = 0; //按键键值时间存储完成的标志,等于1表 位置,TIME[]为键值时间存储数组) // TIME[1] = 0; 示完成

void Time1(void) interrupt 3 //定时器中断

{

IR_time++; //每经过256*(12/11.0592)us触发一次中断(约277US) if(IR_time>390) // 不要这条语句的话按一下,就是长按,长按处理,处理连发码的时间参数(见PDF文档,约108MS,相当于长按有效,否则,按一下键,动的不明显,277*390=108MS)

{ } IR_chuli_ok = 0;//将标志清零,停止判断。 stop(); //按键松开,电机停转 P2 = table[4]; //数码管灭 start = 0; //清零,方便下一次重新计数。

}

13

三、总原理图

1.总原理图

智能小车设计报告

14

图8 总原理

2.实物图

智能小车设计报告

图9 实物图

表3.1 学生情况统计表

姓名 性出生日期 学号 15 专业 联系电话 备注

1 万智亮 别 男 1994.03 12430621817069 电子信息

工程 156xxxxxxxx

四、结论与心得

历时一周月的设计过程中,我首先边查资料,边在实验室焊接小车的线路板。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错。在焊接显示电路时,我就错将15千欧的电阻焊成了1.5千欧。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊接线路板,还可以上机编程,使我软件调试知识也提高了。本次毕业设计已经告一段落。经过自己不断的搜索努力以及廖老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,廖老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。同时通过自己的不懈努力加细心琢磨最终完成本次课程设计,通过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年来的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这一个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

由于自身水平有限,设计中一定存在很多不足之处,敬请老师批评与指正,在此深表感谢。

五、参考文献

【1】林立,张俊亮.单片机原理及应用.北京:电子工业出版社,2013.

【2】李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56~64

【3】何希才,新型实用电子电路400例,电子工业出版社,20xx年,60~65

【4】王东峰,王会良,董冠强.单片机C语言应用100例.北京:电子工业出版社,2009.

16

【5】程继红,常健.传感器原理及工程应用(第四版).西安:西安电子科技大学出版社,2014.

智能小车设计报告

17

18

智能小车设计报告

更多相关推荐:
智能小车设计报告

机器人控制技术实验设计报告书题目基于STC89C52的智能小车的设计姓名李如发学号073321032专业电气工程及其自动化指导老师李东京设计时间20xx年6月目录1引言111设计意义112系统功能要求113本组...

循迹智能小车的设计报告

20xx年全国大学生电子设计大赛报告智能小车设计摘要智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点未来的车辆也一定是智能化的车辆所以智能化的车辆是未来人们生活重要的载体因此有必要对智能车辆进行研究研制...

电子设计大赛智能小车设计报告

简易智能电动车设计报告简易智能电动车设计报告小组成员日期1简易智能电动车设计报告摘要本设计以STC89C52单片机为控制核心经光敏电阻和红外对射完成循迹寻光以及躲避障碍物测距的检测停车控制时间等经比较器LM39...

简易智能小车设计报告

20xx年全国大学生电子设计竞赛设计报告E简易智能电动车作者吴作智赵青董全超山东大学控制科学与工程学院邮编250061赛前辅导老师姚福安万鹏摘要本设计以89C51为核心采用双CPU分别进行电动车的前轮转向控制和...

智能小车设计报告

智能小车设计报告组员指导老师专业应用电子技术班级班学院智能小车设计报告1摘要本设计以AT89C52单片机小系统作为控制与检测的核心用L298N为主控芯片组成的驱动模块作为直流电机驱动用主控芯片为ST188组成的...

智能小车设计报告

天津理工大学第二届电子设计大赛智能小车竞赛设计报告10航海二班潘学院海运学院班级队员李ampamp刘1摘要智能作为现代的新发明是以后的发展方向他可以按照预先设定的模式在一个环境里自动的运作不需要人为的管理可应用...

智能循迹小车设计报告

电子作品设计报告项目名称智能小车学院机电工程学院专业应用电子技术班级组别第三组姓名杨磊赖焕宁梁广生指导老师杨青勇玉宁1目录摘要3关键词3引言3一系统设计311设计要求412车体方案认证与选择4二硬件设计及说明5...

20xx全国电子设计大赛报告终极版(智能小车)

20xx年全国大学生电子设计竞赛智能小车C题本科组20xx年9月3日智能小车摘要本文以两个STC89C52单片机为核心设计了两辆智能小车单片机产生周期性脉冲信号控制全桥驱动芯片L298N驱动直流电机实现小车的转...

简易智能小车设计报告

简易智能电动车技术创新论文摘要本设计以89C51为核心采用双CPU分别进行电动车的前轮转向控制和后轮脉冲宽度调速控制根据题目要求前进过程中安放在车身不同位置的检测器件对小车的周围环境进行检测包括地面埋设物铁片前...

基于单片机的多功能智能小车设计论文(电路+程序+论文) 增强版

摘要关键词智能车AT89S52单片机金属感应器霍尔元件1602LCD智能作为现代的新发明是以后的发展方向他可以按照预先设定的模式在一个环境里自动的运作不需要人为的管理可应用于科学勘探等等的用途智能电动车就是其中...

智能循迹小车设计报告_(4)1

智能循迹小车项目设计报告组别第四组成员刘彪匡善华陈叶芳唐慧峰班级智能电子092系别电气工程系指导老师刘彤时间20xx年4月22日1概要本寻迹小车是以万能板为车架AT89S51单片机为控制核心将各传感器的信号传至...

智能循迹小车的设计实现

智能循迹小车的设计与实现北京邮电大学北京市100876摘要本实验通过设计焊接电路板然后利用单片机编程并控制基本电路实现一个自动循迹行走的机器人机器人能够自动按指定路线运行并且实现灵活前进转弯倒退停车等功能另外还...

智能小车设计报告(24篇)