智能小车设计报告

湖南涉外经济学院

课程设计报告

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

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

所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师:廖亦凡

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 循迹控制电路图

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; //跳出循环

} }

}

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 避障控制电路

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

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桥驱动电路工作原理

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

2.3.3电机控制程序流程图

图7 电机控制程序流程图

2.3.4电机运行程序 #include

#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

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 #include 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;

}

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;

//后退子函数

//右转子函数 //左转子函数 //停止子函数

//外部中断下降沿触发

}

//定时器工作在方式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

for(j=0;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次,回到本来位置)

NUM++;

}

}

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()

}

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

}

else if(start) //第二个下降沿到第33个下降沿 {

if((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之间认为是引导码)

}

}

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; //清零,方便下一次重新计数。

}

三、总原理图

1.总原理图

图8 总原理

2.实物图

图9 实物图

表3.1 学生情况统计表

姓名 性出生日期 学号

专业 联系电话 备注

号 1

万智亮

别 男

1994.03

[1**********]069

电子信息工程

[1**********]

四、结论与心得

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

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

五、参考文献

【1】林立,张俊亮.单片机原理及应用.北京:电子工业出版社,2013. 【2】李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56~64 【3】何希才,新型实用电子电路400例,电子工业出版社,2000年,60~65 【4】王东峰,王会良,董冠强.单片机C语言应用100例.北京:电子工业出版社,2009.

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

17

18

湖南涉外经济学院

课程设计报告

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

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

所在学院:信息科学与工程学院 专业班级: 学生学号: 指导教师:廖亦凡

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 循迹控制电路图

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; //跳出循环

} }

}

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 避障控制电路

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

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桥驱动电路工作原理

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

2.3.3电机控制程序流程图

图7 电机控制程序流程图

2.3.4电机运行程序 #include

#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

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 #include 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;

}

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;

//后退子函数

//右转子函数 //左转子函数 //停止子函数

//外部中断下降沿触发

}

//定时器工作在方式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

for(j=0;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次,回到本来位置)

NUM++;

}

}

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()

}

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

}

else if(start) //第二个下降沿到第33个下降沿 {

if((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之间认为是引导码)

}

}

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; //清零,方便下一次重新计数。

}

三、总原理图

1.总原理图

图8 总原理

2.实物图

图9 实物图

表3.1 学生情况统计表

姓名 性出生日期 学号

专业 联系电话 备注

号 1

万智亮

别 男

1994.03

[1**********]069

电子信息工程

[1**********]

四、结论与心得

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

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

五、参考文献

【1】林立,张俊亮.单片机原理及应用.北京:电子工业出版社,2013. 【2】李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56~64 【3】何希才,新型实用电子电路400例,电子工业出版社,2000年,60~65 【4】王东峰,王会良,董冠强.单片机C语言应用100例.北京:电子工业出版社,2009.

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

17

18


相关内容

  • 西部赛区-光电组-成都理工大学工程技术学院-战狼队技术报告
  • 第九届全国大学生"飞思卡尔"杯 智能汽车竞赛 技术报 告 学校:成都理工大学工程技术学院 队伍名称:战狼队 参赛队员:黄喜恒 王攀 张冲 带队教师:杨斌朱里红 关于技术报告和研究论文使用授权的说明本人完全了解第九届"飞思卡尔"杯全国大学生智能汽车邀请赛关于保留 ...

  • 基于单片机的智能循迹小车(文献综述)(4)
  • 基于MCS-51单片机智能小车控制器设计与实现 电子技术.计算机技术和制造技术的飞速发展,数码相机.DVD.洗衣机.汽车等消费类产品越来越呈现光机电一体化.智能化.小型化等趋势.各种智能化小车在市场玩具中也占一个很大的比例.根据美国玩具协会的调查统计,近年来全球玩具销量增幅与全球平均GDP增幅大致相 ...

  • 基于单片机的智能小车论文检测
  • 论文相似性检测报告 论文相似性检测报告 报告编号:c1864f91-affc-40ca-944f-a1c3010b23a3检测日期:2013年05月19日 检测范围:中国学术期刊数据库(CSPD).中国学位论文全文数据库(CDDB).中国学术会议论文数据库(CCPD).中国学术网页数据库(CSWD) ...

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

  • 循迹小车设计报告-精华51单片机智能小车
  • 设 计 报 告 课程:机器人工程 设计名称:智能循迹小车 小组成员: 学号: 专业: 机械电子工程 日期: 2012/2/5 指导老师: 成绩: 1.任务及要求 1.1任务 设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶.系统方案方框图如图1-1所示. 图1 ...

  • 单片机课程设计报告智能小车
  • 信息与通信工程学院 单片机系统课程设计报告 完成日期:2014年 12 月 8日 系: 专 业: 班 级: 设计题目: 学生姓名: 指导教师: 通信工程系 通信工程 通信工程124班 智能小车 张歆迪 赵京京 吴宝春 摘 要 本设计主要应用STC89C52作为控制核心,与驱动电路相结合,充分发挥ST ...

  • 小车实验报告
  • 课程设计报告 (嵌入式技术实践(一)) 学 院:电气工程与自动化学院 题 目:基于P89V51RB2单片机寻迹小车 专业班级:自动化122班 学 号:33号 学生姓名:常雲 指导老师:张振利,罗龙 2013年06月20日 目 录 第1章 绪论............................. ...

  • 北邮电子工艺实习实验报告_智能循迹小车
  • 北京邮电大学实习报告 智能循迹小车 摘 要: 本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法.小车以AT90C52为控制核心, 用单片机控制小车速度.利用红外光电传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机.单片机对采集到的信号予以分析判断,及时控制驱 ...

  • 智能化轨道小车物流系统毕业设计论文
  • 吉林省高等教育自学考试 毕 业 论 文 论文题目:智能化轨道小车物流系统 专 业:计算机应用 准考证号: 学生姓名: 指导教师: 2014年 03月 08日 摘 要 随着的我国医疗卫生事业的发展和诊疗技术的进步,各地方医院正逐渐由单一的诊疗转变为急诊.预防.诊断.治疗和康复为一体的综合性医疗机构.伴 ...