基于单片机汽车避障超声波测距汽车避障系统设计(毕业课设)

测量距离的方法有很多种,短距离的可以用米尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,系统的测量精度理论上可以达到毫米级。

超声波测距的原理一般采用渡越时间法TOF(time of flight),也可以称为回波探测法,如图1所示。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在介质中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

包内文件包含:(选择重点介绍)各使用模块的官网参数 ,51单片机主程序, pcb板正反图,设计报告,完整焊接图!

#include <reg52.h>
#include <math.h>
#include "1602.h"
#include "ds18b20.h"

extern uchar xdata ID[4][8];
extern uchar xdata fu;

typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable 	  无符号8位整型变量  */
typedef signed   char  S8;       /* defined for signed 8-bits integer variable		  有符号8位整型变量  */
typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable 	  无符号16位整型变量 */
typedef signed   int   S16;      /* defined for signed 16-bits integer variable 	  有符号16位整型变量 */
typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable 	  无符号32位整型变量 */
typedef signed   long  S32;      /* defined for signed 32-bits integer variable 	  有符号32位整型变量 */
typedef float          F32;      /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         F64;      /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */

#define   TL           25         /* 温度报警下限,在此修改即可   */
#define   TH           70         /* 温度报警上限,在此修改即可   */

//定时器0的定时值为1mS,即11059/12=922个时钟脉冲,其补为65536-922=64614
#define SYSTEMCLK      921600       //11059200/12
#define T0CLK          921600       //11059200/12
#define T1CLK          921600       //11059200/12
#define T1PERIOD       1000000/921600   //T1周期时间,以微秒为单位,约为1.085uS
#define TIMER0H        0xFC   //64614/256=252
#define TIMER0L        0x66   //54447%256=102
         
//管脚定义
sbit Trig = P1^2;
sbit Echo = P3^2;	              //回波必须接在外部中断引脚上
sbit LedAlarm = P3^6;             //报警灯,低电平亮
sbit Beep = P3^7;                 //报警蜂鸣器
sbit TempAlarm = P3^3;            //温度报警灯

//定义标志
volatile bit FlagSucceed = 0;     //测量成功标志
volatile bit FlagDisplay = 0;     //显示标志

//定义全局变量
U16 DisplayCount=0;
U32 time=0;
U32 distance=0;
//温度传感器用变量
uint temp;
int temperature;
uchar str1[6] = "000000"; 

//函数声明
void int2str(int x, char* str);
void delay_20us();
void Start_Module();
void INT0_Init(void);
void Data_Init();
void Timer0_Init();
void Timer1_Init();

【资源下载】下载地址如下(800):https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

posted @ 2020-12-30 08:02  roadroad  阅读(232)  评论(0编辑  收藏  举报
电设屋
上千套电子毕设课设方案