【毕业设计】71-智能汽车路径跟踪控制_超声波测距系统的设计(原理图+仿真+源代码工程+相关截图+视频+答辩论文)
资料要求
资料包含:毕业设计全套资料(精品)
原理图工程文件
原理图截图
PCB工程文件
仿真模型工程文件
源代码工程
仿真截图
仿真实现录屏
答辩论文低重复率文档,27528字
英文文献及翻译
任务书
详情请私信!
任务书
主要研究内容:
以单片机作为系统控制单元,通过红外光电传感器实时获取前方路面信息进行循迹,通过光电传感器测速,用PWM控制电机调节车速进行跟踪控制,通过测距传感器测距,当超过其阈值时可进行及时报警。
方法:
通过图书、期刊、网络等途径查阅相关文献资料,研究单片机、红外光电传感器、光电传感器、测距传感器、电机、PWM等知识。
要求:
1、确定系统总体设计方案,给出设计方案的结构框图;
2、利用仿真软件(如:Proteus)完成仿真电路的具体设计;
3、利用编程软件(如:Keil)完成编程;
4、对所设计的系统进行仿真调试,实现智能汽车路径跟踪控制系统的功能。
设计说明书
摘要
随着传感器技术的提高,目前汽车也开始往智能化方向发展。通过对电气控制技术以及智能化控制技术的提高,传感器技术开始往智能化汽车中移植并且使汽车具有了智能循迹、智能测量前后车距的功能,使智能汽车在实际的应用过程中可以能更加的符合现在科技的发展趋势,改善人们的生活习惯。
本文通过对智能汽车路径跟踪控制系统设计,使小车具有自动循迹以及控制前后距离的功能,通过检测前后的距离进行判断,如果超过阈值则发生报警反之不报警。系统实现了小车循迹、距离检测与温度补偿、报警、控制报警阈值、液晶显示状态的功能。整个系统由硬件电路部分与软件设计部分组成。再设计上优先对系统的功能进行分析与系统框架进行确认。在硬件电路的设计需要考虑到系统的性价比、功能性以及后期的可迭代性等。软件设计上考虑系统的架构根据系统的功能性对系统进行功能移植,并且可实现软件系统框架可迭代与调试。本系统的硬件部分由红外检测电路、电机控制电路、报警电路、单片机最小系统控制电路、距离检测与补偿电路部分组成。软件设计根据硬件电路的功能性设计软件开发流程。硬件与软件设计完成后,使用PROTEUS仿真软件对系统的功能性测试,实现预期功能,并进行耐久测试、白盒测试、黑盒测试,验证系统是一个满足要求并且性能达标的稳定系统。
本系统通过仿真软件进行了充分的测试与验证,在后期还将进行制作实物的方式测试系统,保证系统符合市场要求。
设计框架架构
设计说明书及设计文件
源码展示
#include <REGX51.H>
#include <stdio.h>
#include<intrins.h>
#define uint unsigned int;
#define uchar unsigned char
sbit DQ=P2^4; //ds18b20 端口
sbit k2=P3^6;
sbit k1=P3^5;
sbit csbint=P3^2; //ECHO
sbit csb=P2^5; //TRIG
sbit fmq=P3^3; //蜂鸣器
sbit bg=P2^6; //液晶屏背光控制
sbit EN = P2^2; //定义液晶屏定义端口
sbit RW = P2^1; //定义液晶屏定义端口
sbit RS = P2^0; //定义液晶屏定义端口
/
sbit dj=P1^6;//电机控制端接口
sbit dj1=P1^7;//电机控制端接口
sbit key1=P1^0;//sd加
sbit key2=P1^1;//sd减
sbit key3=P1^2;//sd加
sbit key4=P1^3;//sd?
signed int period = 0;//PEM period
uchar dang;//档位显示
uchar Mode=0;
uchar SMODE=0;//调节占空比
uchar time=0;//定时器加数
/
#define EN_CLR EN=0
#define EN_SET EN=1
#define RS_SET RS=1
#define RS_CLR RS=0
#define RW_SET RW=1
#define RW_CLR RW=0
unsigned char bb[11]={' ',' ',' ',' ','.',' ',' ',' ',' ',' ',};
unsigned char cc[]={'A','.','A','A','m'};
unsigned char aa[]={' ',' ','D','i','s','t','a','n','c','e',':'}; //Distance
unsigned int dz,k,s,j,bgz,k;
unsigned char zf,a1,a2,a3,xs,e,n,m,z; //zf 温度正负标志位;a1,a2,a3,按键设定程序中定值的米、分米、厘米临时存储变量 xs,e 用于按键程序中设定位闪动显示的变量;flag,未用,
float temperature,csbc,wdz;
int temp;
bit wh;
/*------------------------------------------------
函数声明
------------------------------------------------*/
unsigned int ReadTemperature(void);
unsigned char ReadOneChar(void);
bit Init_DS18B20(void);
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);
void WriteOneChar(unsigned char dat);
void write_data(unsigned char date);
void init();
void write_com(unsigned char com);
void DelayMs(unsigned char t);
void DelayUs2x(unsigned char t);
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t) //大致延时1mS
{
while(t--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS uS延时函数,含有输入参
数 unsigned char t,无返回值 unsigned char
是定义无符号字符变量,其值的范围是
0~255
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
DelayUs2x(25);
}
return(dat);
}