51单片机循迹小车开题报告

时间:2024.4.5

一、研究课题的目的和意义

1) 研究目的:

随着汽车工业的迅速发展,其与电子信息产业的融合速度也显著提高,汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的,为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。设计的智能电动小车应该能够具有自动寻迹、小灯显示等功能。

此项设计以AT89S52单片机为控制核心,逐步实现小车的循线行走功能。

国外文献

Simple design o f a smart auto?t racking vehicle based on MSC control

Ning H uihui, Yu Hong ying

( Information and Communication Engineering College North University o f China Shanxi 030051,

China)

Abstract : A Simple Design of a smart auto?t racking vehicle based o n MSC control is

Introduced in this paper. The construct ion of the car, and methods of hardware and software desig n are included. T he car use AT89C51 as the heart of cent rol in this system. By using infrared sensors to detect the information of obstacles in front and the t race, the smart vehicle acquires the information and sends them to the MSC. Then the MSC analyzes the signals and controls the movements of the motors. Which make the smart vehicle move along the given black line automaticly . The techno logy can be applied to unmanned aerial vehicles, unmanned factories, w arehouses, service robot s and other fields.

Keywords: infrared sensor; MSC; auto tracking

2) 研究意义:

1、加深课堂上的学习

由于单片机教学例子有限,因此,单片机智能车能综合学生课堂上的知识来

实践,使学习者更好的了解单片机的发展。通过此次的单片机寻轨车制作,使学

生从理论到实践,初步体会单片机项目的设计、制作、调试和成功完成项目的过

程及困难,以此学会用理论联系实际。通过对实践中出现的不足与学习来补充教

学上的盲点。

2、从理论转为实际运用

智能汽车是一种高新技术密集的新型汽车,是在网络环境下利用信息技术、 智

能控制技术、 自动控制、 模式识别、 传感器技术、 汽车电子、 电气、计算机

和机械等多个学科的最新科技成果,使汽车具有自动识别行驶道路、 自动驾驶等

先进功能.随着控制技术、 计算机技术和信息技术的发展,智能车在工业生产和日

常生活中已经扮演了非常重要的角色.近年来, 智能车在野外、道路、 现代物流

及柔性制造系统中都有广泛运用,已成为人工智能领域研究和发展的热点。

二、研究内容

1) 系统设计:

智能寻迹小车采用后轮驱动,左右后轮各用一个直流减速电机驱动,通过调制后面两个轮子的转速从而达到控制转向的目的 在车体前部分别装有左中右三或者两个红外反射式传感器,当小车左边的传感器检测到黑线时,说明小车车头向右边偏移,这时主控芯片控制左轮电机减速,车体向左边修正 同理当小车的右边传感器检测到黑线时,主控芯片控制右轮电机减速,车体向右边修正 当黑线在车体的中间,中间的传感器一直检测到黑线,这样小车就会沿着黑线一直行走。

2) 硬件设计:

2.1主控芯片的选择

本次设计的主控芯片选择为STC89C52 STC89C52是一种低功耗高性能CMOS 8位微控制器,具有8K的系统可编程Flash存储器,使用高密度非易失性存储器技术制造,与80C51产品指令和引脚完全兼容片上Flash允许程序存储器在系统可编程,亦适于常规编程器 在单芯片上,拥有灵巧的8位CPU和在线系统可编程 Flash,使得 STC89C52为众多嵌入式控制应用系统提供高灵活 超有效的解决方案

2.2车体的选择

在本次智能寻迹小车的选择过程中,我们选择了后面两轮驱动,前万向轮转向的小车,即后左右轮分别用两个转速和力矩基本完全相同的直流减速电机进行驱动,车头前部装一个万向轮 这样,当我们通过I/O口控制两个直流减速电机的转速和转向时就可以实现小车的左转 右转和直行

因此,我们将选择体积轻容易控制的小车做为车体。

3.3寻迹模块设计

寻迹模块我们可以用光敏电阻组成 光敏电阻的阻值可以跟随周围环境光线的变化而变化 当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱 因此当光敏电阻在白线和黑线上方时,阻值会发生明显的变化 将阻值的变化值经过比较器就可以输出高低电平 但是这种方式受环境影响大,工作不稳定,因此,我们将研究几种方案,选择性价比和各方面更好的红外传感器。

3.4小灯模块设计

由于单片机STC89C52管脚出来的电流较小,我们将选择一种电路来提高小灯的电压,使小灯能基本显示并且使小灯能表示智能车的动作,即是智能车上有两个后灯,分别安装在

智能车后面左右,当左灯亮时表示小车左拐,右灯亮时表示右拐,两个灯全亮时表示前进。

3) 基本要求

1、能前进并且能左右调整方向

2、基于单片机STC89C52控制,能基本实现小车匀速行驶

3、小车能以黑线为轨迹前进行驶,自动调整方向沿着黑线行驶

4、小灯显示与小车动作符合

三、本课题研究的步骤、方法及进度安排

1)本课题研究的方法

控制电路主要由一片单片机组成。STC89C52主要实现对路面黑线的检测,以纠正小车的行走方向;以及控制小车匀速行驶。主要运用单片机STC89C52的知识,模电的相关知识和了解红外线传感器的工作原理。

2)研究进度计划

1. 11月份~12月份:

选题;收集、查阅与基于自动寻迹的智能车相关的资料,对课题进行可行性分析.

2. 1月份~2月份:

复习电路,模拟电子技术,单片机,传感器, 自动控制等技术等相关知识.详细阅读相关资料.

3. 3月份~4月份:

对已查资料进行归纳、整理,定出论文框架。

4月份:

利用收集的资料,和材料,着手准备做好基于自动寻迹的智能车的实物。

4. 4月份~5月份:

写出论文初稿,并对初稿进一步修改直至定稿。并做好实物。

5. 6月份:

准备论文的答辩,并整理毕业论文相关的一系列材料。

3)课题的研究目标及科学解决问题

预期结果是实现智能车能基本自动寻轨并沿轨迹前进,小灯能基本表示小车的动作。 由于红外线传感器敏感度和距离都有限制,因此,我们将在实现红外线接收的时候,寻找更好的解决办法,使传感器更加灵敏并使小车正确行驶。

从STC89C52管脚出来的电流较小,我们将寻找一种更好的电路,使小灯能基本显示,因此,将学习模电,寻找一种好的电路解决小灯供电不足的情况。大概一个月能想好小灯电路的设计部分。

四、主要参考文献

【1】 王秋爽,曾兆龙 单片机开发基础与经典设计实例 北京 机械工业出版社 20xx年3月第一版

【2】华成英 童诗白 模拟电子技术基础 第四版 高等教育出版社

【3】吴锤红 MCS-51微机原理与接口技术 厦门大学出版社

【4】张毅刚 单片机原理及应用 20xx年12月第一版 高等教育出版社

【5】杨江新,李华军,刘东俊,单片机程序设计及应用从基础到时间, 北京,电力电子出版社,20xx年3月第一版

【6】赵家贵、付小美、董平,新编传感器电路设计手册,中国计量出版社,2002

【7】李华等,MCS-51系列单片机实用接口技术,北京航空航天大学出版社,2003

【8】王晓明,电动机的单片机控制,北京航空航天大学出版社,2002

【9】杨子文. 单片机原理及应用 西安:西安电子科技大学出版社.2006


第二篇:基于51单片机智能小车循迹程序


#include <reg51.h>

#include <stdio.h>

#define uint unsigned int

#define uchar unsigned char

/**********************************/

uchar led_data[9]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80}; uchar circle=0,cir_comp=0,cir_count=0;//设定圈数,实际圈数 uchar turn_count=0;

bit end=0; //圈数跑完标志

/*********************************/

sbit xg0=P1^0;

sbit xg1=P1^1;

sbit xg2=P1^2; //左寻轨对管 //中间寻轨对管 //右寻轨对管

sbit xz=P1^3; //感应挡板对管

/*********************************/

sbit Q_IN1=P2^0; //车前左轮控制

sbit Q_IN2=P2^1;

sbit Q_IN3=P2^2; //车前右轮控制

sbit Q_IN4=P2^3;

sbit H_IN1=P2^4; //车尾左轮控制

sbit H_IN2=P2^5;

sbit H_IN3=P2^6; //车尾右轮控制

sbit H_IN4=P2^7;

sbit Q_ENA=P3^0; //车前左轮使能,PWM

sbit Q_ENB=P3^1; //车前右轮使能,

sbit H_ENA=P3^6; //车尾左轮使能,

sbit H_ENB=P3^7; //车尾右轮使能,

/****************************************/

#define stra_q_l 100 //直线行走时,四个轮子占空比调试 #define stra_q_r 100

#define stra_h_l 100

#define stra_h_r 100

#define turn_q_l 100 //转弯时四个轮子的占空比调试 #define turn_q_r 100

#define turn_h_l 100

#define turn_h_r 100

#define turnr_time 2900//右转弯时的延时常数

#define turnl_time 3000 //左转弯时的延时常数

#define dt_time 5800 //原地掉头时延时常数

#define over_time 1000 //停止延时

#define back_time 2500 //走完环形,回到直道延时转弯 #define black_time 1500 //过黑线的时间

#define correct_l_time 700 //左矫正时间

#define correct_r_time 700 //右矫正时间

#define hou_time 200

/***************************************/

uchar q_duty_l,q_duty_r,h_duty_l,h_duty_r,//车前后左右轮占空比 i=0,j=0,k=0,m=0;

/**************************************/

void delay_cir(uint n)

{

uchar x;

while(n--)

{

};

}

/***********************************/

void delay(uint ct) // 延时函数

{

uint t;

t=ct;

while(t--); for(x=0; x<250;x++);

}

/***************************************/ void straight()

{

q_duty_l=stra_q_l;

q_duty_r=stra_q_r;

h_duty_l=stra_h_l;

h_duty_r=stra_h_r;

Q_IN1=1;

Q_IN2=0;

Q_IN3=1;

Q_IN4=0;

H_IN1=1;

H_IN2=0;

H_IN3=1;

H_IN4=0;

}

/***************************************/ void houtui()

{

q_duty_l=stra_q_l; //后退 //直走

q_duty_r=stra_q_r;

h_duty_l=stra_h_l;

h_duty_r=stra_h_r;

Q_IN1=0;

Q_IN2=1;

Q_IN3=0;

Q_IN4=1;

H_IN1=0;

H_IN2=1;

H_IN3=0;

H_IN4=1;

}

/***************************************/ void turn_left()

{

q_duty_l=turn_q_l;

q_duty_r=turn_q_r;

h_duty_l=turn_h_l;

h_duty_r=turn_h_r;

Q_IN1=0; //左轮反转 //左转

Q_IN2=1;

H_IN1=0;

H_IN2=1;

Q_IN3=1;

Q_IN4=0;

H_IN3=1;

H_IN4=0;

delay(turnl_time);

}

/***********************************/ void turn_right() //右转

{

q_duty_l=turn_q_l;

q_duty_r=turn_q_r;

h_duty_l=turn_q_l;

h_duty_r=turn_q_r;

Q_IN1=1;

Q_IN2=0;

H_IN1=1;

H_IN2=0;

Q_IN3=0;

Q_IN4=1; //右轮反转 //左轮正转 //右轮正转

H_IN3=0;

H_IN4=1;

delay(turnr_time);

}

/**************************************************/ void turn_round() //原地掉头

{

q_duty_l=turn_q_l;

q_duty_r=turn_q_r;

h_duty_l=turn_h_l;

h_duty_r=turn_h_r;

Q_IN1=0;

Q_IN2=1;

H_IN1=0;

H_IN2=1;

Q_IN3=1;

Q_IN4=0;

H_IN3=1;

H_IN4=0;

delay(dt_time); //右轮正转 //左轮反转

}

/******************************************************/ void over() //小车停止

{

Q_IN1=0;

Q_IN2=0;

Q_IN3=0;

Q_IN4=0;

H_IN1=0;

H_IN2=0;

H_IN3=0;

H_IN4=0;

}

/*****************************************************/ void correct_right() //左偏,向右矫正

{

q_duty_l=turn_q_l;

q_duty_r=turn_q_r;

h_duty_l=turn_q_l;

h_duty_r=turn_q_r;

Q_IN1=1; //左轮正转

Q_IN2=0;

H_IN1=1;

H_IN2=0;

Q_IN3=0;

Q_IN4=1;

H_IN3=0;

H_IN4=1;

delay(correct_r_time);

}

void correct_left() //右偏,向左矫正 {

q_duty_l=turn_q_l;

q_duty_r=turn_q_r;

h_duty_l=turn_h_l;

h_duty_r=turn_h_r;

Q_IN1=0;

Q_IN2=1;

H_IN1=0;

H_IN2=1;

Q_IN3=1;

Q_IN4=0;

H_IN3=1; //右轮正转 //左轮反转 //右轮反转

H_IN4=0;

delay(correct_l_time);

}

/*************************************/ void xunji()

{

if(xg1==1)

{

turn_count++;

over(); delay(over_time); if(turn_count==1) {straight(); delay(black_time); } else if(turn_count==2) {houtui();

delay(hou_time);

turn_left(); }

else if(turn_count==3) {houtui();

delay(hou_time);

turn_right(); } else if(turn_count==4) {houtui(); delay(hou_time); turn_right(); } else if(turn_count==5) {straight(); delay(black_time); } else if(turn_count==6) {houtui(); delay(hou_time); turn_right();

} else if(turn_count==7) {houtui(); delay(hou_time); turn_right(); straight(); delay(back_time); turn_left(); } else if(turn_count==8) {straight(); delay(black_time); } else if(turn_count==9) {houtui(); delay(100); turn_round(); }

if(turn_count>=9)

{turn_count=0; cir_count++; circle--; } if(cir_count==cir_comp)

{end=1;

over(); delay(500); }

}

else

if((xg0==0)&&(xg1==0)&&(xg2==0)) {straight();}

else

if((xg0==1)&&(xg1==0)&&(xg2==0)) {over();

delay(over_time);

houtui();

delay(hou_time);

correct_right();

}//左偏,向右矫正

else

if((xg0==0)&&(xg1==0)&&(xg2==1))

{over();

delay(over_time);

houtui();

delay(hou_time);

correct_left();

} //右偏,向左矫正

}

/***********************************************/ void int0(void) interrupt 0 //中断圈数设定

{

EX0=0;

delay_cir(250);

circle++;

cir_comp++;

if(circle>8)

{circle=0;

cir_comp=0;

}

P0=led_data[circle];

EX0=1;

}

/*************************************/

void time1(void) interrupt 3 //T1溢出中断,电机调速 {

i++;

j++;

k++;

m++;

if(i<q_duty_l)

Q_ENA=1;

else Q_ENA=0;

if(i>100)

{Q_ENA=1;i=0;}

if(j<q_duty_r)

Q_ENB=1;

else Q_ENB=0;

if(j>100 )

{Q_ENB=1;j=0;}

if(k<h_duty_l)

H_ENA=1;

else H_ENA=0;

if(k>100)

{H_ENA=1;k=0;}

if(m<h_duty_r)

H_ENB=1;

else H_ENB=0;

if(m>100)

{H_ENB=1;m=0;}

P0=led_data[circle];

TH1=0XFF;

TL1=0XF6;

}

/*************************************/ void main()

{

P0=led_data[circle];

P1=0xFF;

P1=0XFF; //P1口做输入

P2=0X00; //P2口初始化,小车禁止

P3=0XFF;

TMOD=0X11;//T0,T1,工作方式1

TH1=0XFF; //T1中断一次10US

TL1=0XF6;

TR1=1;

EX0=1;

ET1=1;

EA=1;

while(1)

{

while((xz==1)&&(end!=1)) //无挡板,扫描对管,前进 {

xunji();

};

};

}

更多相关推荐:
循迹小车实践报告

江西理工大学创新实验报告题目循迹小车的制作学院电气工程与自动化学院专业自动化班级学生黄学号113盼时间20xx年8月2号自动循迹小车目录目录摘要1任务及要求11任务2系统设计方案21小车循迹原理22控制系统总体...

智能循迹小车课程设计报告

青岛理工大学琴岛学院课程设计报告课题名称智能循迹机器人小车学院机电工程系专业班级电气工程及其自动化学号20xx020xx29学生许辉指导老师张岐磊青岛理工大学琴岛学院教务处20xx年12月14日

智能循迹小车设计报告

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

智能循迹小车报告

电子信息专业实验报告课程电子信息系统综合设计实验MCU部分实验题目智能机器小车设计实验总分学生姓名学号学生姓名学号学生姓名学号实验时间地点分组电子信息学院专业实验中心目录一摘要二题目要求三软硬件设计方案四各部分...

智能循迹小车设计报告

电子作品设计报告项目名称智能循迹小车1摘要本组的智能循迹小车是采用自主设计的车体以两个直流电机来驱动小车各个模块自行设计通过反射式红外光电传感器TCRT5000来采集跑道信息传送至主控芯片STC12C5A60S...

循迹小车实验报告

实践设计报告(嵌入式技术实践二)学院:电气工程与自动化学院题目:基于51单片机的循迹小车专业班级:自动化131班学号:19学生姓名:***指导老师:***20xx年6月30日第一章引言1.1设计目的通过设计进一…

循迹小车设计报告-精华51单片机智能小车

设计报告课程机器人工程设计名称智能循迹小车小组成员学号专业机械电子工程日期20xx25指导老师成绩智能小车设计1任务及要求11任务设计一个基于直流电机的自动寻迹小车使小车能够自动检测地面黑色轨迹并沿着黑色车轨迹...

51单片机循迹小车开题报告

一研究课题的目的和意义1研究目的随着汽车工业的迅速发展其与电子信息产业的融合速度也显著提高汽车开始向电子化多媒体化和智能化方向发展使其不仅作为一种代步工具同时能具有交通娱乐办公和通讯等多种功能关于汽车的研究也就...

基于单片机的循迹小车实验报告

课程设计报告嵌入式技术实践二学院电气工程与自动化学院题目基于P89V51RB2单片机寻迹小车专业班级学号学生姓名指导老师20xx年06月07日1目录第1章绪论4111213引言4课题任务要求4本论文研究的内容4...

循迹小车课程设计模板

HarbinInstituteofTechnology课程设计说明书论文课程名称设计题目院系班级设计者学号指导教师设计时间哈尔滨工业大学哈尔滨工业大学课程设计任务书哈尔滨工业大学课程设计说明书论文开题报告1绪论...

循迹小车课程设计

HarbinInstituteofTechnology课程设计说明书论文课程名称设计题目院系班级设计者学号指导教师设计时间哈尔滨工业大学哈尔滨工业大学课程设计任务书哈尔滨工业大学课程设计说明书论文开题报告一立项...

课程设计(论文)-智能寻迹小车设计与实现

目录目录I智能寻迹小车设计与实现ISmartCarDesignandImplementationofTractingII第1章绪论1第2章系统的硬件及设计原理321STC89C52单片机3211STC89C52...

循迹小车报告(37篇)