智能小车的实训报告

智能小车的实训报告
智能小车的实训报告

智能产品设计实训报告书

课程名称:智能产品设计

班级:应用电子技术15级2班

小组成员(学号):商育诚(39)王少勇(91)

实训项目:智能小车

实训时间:2017年5月8日

指导老师:何敬银老师

填表日期:2017年5月14日星期日

实训目的-------------------------------------3

实训要求-------------------------------------3

实训内容-------------------------------------4

智能小车元器件清单-----------------------------------------------4

智能小车代码-----------------------------------------------------5

智能小车电路图---------------------------------------------------10

智能小车焊接-----------------------------------------------------11

智能小车模块系统详解---------------------------------------------12

实训成果展示---------------------------------13

收获和体会-----------------------------------14

实训目的:

制作一个基于单片机控制的智能小车,可以进行多种功能。也让我们自己学习,学习到单片机的知识和单片机编程的知识还有电阻的识别和一些电路的知识。提高了我们焊接技术和团队合作能力,增加了我们制作电子产品产品的经验。这个实训还有对于一些需要进行PPT 的演讲,不经给我们一个展示自己作品的平台,更重要的是给我一个增强自信心的机会,展现自己和展现自己的作品这个实训不仅让我们学会更多的知识而且还满足我们自己对自己亲自动手制作电子产品的愿望。

实训要求:

能够熟练对老师进行智能小车源代码的讲解,还有对于电路图的了解和电路知识的应用,还有对于另一些芯片的知识进行学习。还有熟练掌握元器件的名称大小的识别。还有在焊接过程中可以可以让我们的焊接技术更加地熟练,可以让我们的小组成员合作更好,增强了小组

成员的合作默契。

实训内容----智能小车元器件清单

智能小车代码

#include //包含51单片机相关的头文件

#include <intrins.h>

sbitxunjiLed=P2^1; //定义前方左侧指示灯端口

sbit bizhangLed=P2^0; //定义前方右侧指示灯端口

sbitLeftIRBZ=P1^1; //定义前方左侧红外探头端口

sbit RightIRBZ=P1^0;//定义前方右侧红外探头端口

sbit LeftIR=P3^5;//定义前方左侧红外探头端口

sbit RightIR=P3^6; //定义前方右侧红外探头端口

sbitM1A=P0^0; //定义左侧电机驱动A端

sbitM1B=P0^1;//定义左侧电机驱动B端

sbit M2A=P0^2; //定义右侧电机驱动A端

sbit M2B=P0^3; //定义右侧电机驱动B端

static unsigned int LedFlash; //定义闪动频率计数变量bit EnableLight=0; //定义指示灯使能位

unsigned chartemp =1;

void tingzhi()

{

M1A=0; //将M1电机A端初始化为0 M1B=0; //将M1电机B端初始化为0M2A=0; //将M2电机A端初始化为0 M2B=0;

void qianjin()

{

M1A=1;

M1B=0;

M2A=1;

M2B=0;

}

void houtui()

{

M1A=0;

M1B=1;

M2A=0;

M2B=1;

}

voidzuozhuan()

M1A=0;

M1B=1;

M2A=1;

M2B=0;

voidyouzhuan()

{

M1A=1;

M1B=0;

M2A=0;

M2B=1;

voidDelay1ms(unsigned inti)

{

unsigned charj,k;

do{

j = 10;

do{

k= 50;

do{

_nop_();

}while(--k);

}while(--j);

}while(--i);

}

void delay_nus(unsignedint i) //延时:i>=12 ,i的最小延时单12us

{

i=i/10;

while(--i);

}

void delay_nms(unsigned intn) //延时n ms

{

n=n+1;

while(--n)

delay_nus(900); //延时1ms,同时进行补偿

}

voiddelayms(unsigned char x) //0.14mS延时程序

{

unsigned char i; //定义临时变量

while(x--) //延时时间循环

{

for(i =0; i<13;i++) {}//14mS延时

}

}

voidDelay() //定义延时子程序{

unsigned intDelayTime=30000; //定义延时时间变量while(DelayTime--); //开始进行延时循环return;//子程序返回

}

void ControlCar(unsignedchar ConType)//定义电机控制子程序

tingzhi();

switch(ConType) //判断用户设定电机形式

{

case1://前进//判断用户是否选择形式1

{

//tingzhi(); ????//进入前进之前先停止一段时间防止电机反向电压冲击主板导致系统复位//Delay1ms(50);

qianjin();

break;

}

case 2: //后退//判断用户是否选择形式2

{

// tingzhi();???//进入后退之前先停止一段时间防止电机反向电压冲击主板导致系统复位

// Delay1ms(50);

?houtui(); //M2电机反转

break;

}

case 3: //左转//判断用户是否选择形式3

//tingzhi(); ????//进入左转之前先停止一段时间防止电机反向电压冲击主板导致系统复位// Delay1ms(50);

? zuozhuan(); //M2电机正转

? break;

case 4: //右转//判断用户是否选择形式4

{

//tingzhi();???//进入右转之前先停止一段时间防止电机反向电压冲击主板导致系统复位

//Delay1ms(50);

?youzhuan();//M1电机正转

//M2电机反转

?break;

}

case8: //停止//判断用户是否选择形式8

{

tingzhi();

break; //退出当前选择

}

}

}

voidControlCar_yaokong(unsigned char ConType)//定义电机控制子程序(红外遥控单独设置一个switchcase 语句)

{

tingzhi();

switch(ConType) //判断用户设定电机形式

{

case 1: //前进//判断用户是否选择形式1

{

tingzhi();?????//进入前进之前先停止一段时间防止电机反向电压冲击主板导致系统复位

?Delay1ms(150);

?qianjin();

break;

case2: //后退//判断用户是否选择形式2

{

tingzhi(); ???//进入后退之前先停止一段时间防止电机反向电压冲击主板导致系统复位

Delay1ms(150);

?

houtui(); //M2电机反转

break;

}

case 3: //左转//判断用户是否选择形式3

{

tingzhi();??????//进入左转之前先停止一段时间防止电机反向电压冲击主板导致系统复位

? Delay1ms(150);

? zuozhuan(); //M2电机正转

? break;

}

case4: //右转//判断用户是否选择形式4

tingzhi();???//进入右转之前先停止一段时间防止电机反向电压冲击主板导致系统复位

? Delay1ms(150);

youzhuan(); //M1电机正转//M2电机反转

break;

case 8: //停止//判断用户是否选择形式8

{

tingzhi();

break;//退出当前选择

}

}

void Robot_AvoidanceTraction()//机器人避障+循迹综合子程序

{

if(LeftIR== 0 && RightIR == 0) //三个红外检测到黑线,就前进

{

ControlCar(1);

if( LeftIRBZ ==0 || RightIRBZ == 0 )

?{

delay_nms (50);

?while (!LeftIRBZ)

?{

??ControlCar(8);

?delay_nms(120);

??

??}

?while ( !RightIRBZ )

?{

?ControlCar(8);

??delay_nms (120);

?

?}

}

//左侧没有信号时,开始向右转一定的角度

delay_nms(10);

else if(LeftIR== 0&& RightIR==1)

{

ControlCar(3); //右侧没有信号时,开始向左转一定的角度delay_nms (10);

相关主题
相关文档
最新文档