基于单片机倒车三路雷达控制报警系统设计

百度网盘下载地址(985):点击下载

摘   

随着人们倒车安全意识不断提高,倒车雷达系统逐渐的完善,并得到了快速的发展。

同时在人们的生活中随处可见,一般没量机动车上都有安装有倒车雷达系统。本文主要为提高倒车雷达系统性能,本设计以单片机为核心,以多路雷达传感器采集多方位的数据进行无死角探测,并通过声光报警作为倒车障碍物检测警示。该系统的外围电路包含前端四路雷达检测电路、晶振电路、主控电路、复位电路、电源电路以及声光报警电路。根据各电路特点及系统要求编写了系统程序。最后,以系统原有电路和程序作为基础,设计了相应的仿真电路和仿真程序。Proteus仿真结果验证了该系统设计的可行性。

关键词:报警;单片机;雷达

#include "LCD1602DRV.h"                                 /* 导入液晶驱动 */
#include "STCEEPROM.h"                                  /* EEPROM库文件 */
sbit	RX1	= P3 ^ 3;                               /* 通道一 */
sbit	RX2	= P3 ^ 4;                               /* 通道二 */
sbit	RX3	= P3 ^ 5;                               /* 通道三 */
sbit	TX1	= P2 ^ 4;
sbit	TX2	= P2 ^ 5;
sbit	TX3	= P2 ^ 6;

sbit	LED1	= P2 ^ 0;                               /* LED1 */
sbit	LED2	= P2 ^ 2;                               /* LED2 */
sbit	SPEAK	= P2 ^ 3;                               /* 蜂鸣器 */

uint	time	= 0;                                    /* 时钟 */
uint	timer	= 0;
uint	S	= 0, S1 = 0, S2 = 0, S3 = 0, MIN = 0;   /* 采集值和最小值 */

bit flag = 0;                                           /* 标志位 */

/* 延时函数 */
void Conut( void )
{
	time	= TH0 * 256 + TL0;
	TH0	= 0;
	TL0	= 0;

	S = (time * 1.87) / 100;        /* 算出来是CM */
	if ( (S >= 700) || flag == 1 )  /* 超出测量范围显示“-” */
	{
		flag = 0;
	}
}


void main( void )
{
	uint SET_H = 90, SET_L = 30;
	LCD1602_Init();         /* 液晶初始化 */
	SetRowCol( 0, 0 );      /* 液晶初始化 */
	SPEAK = 0;              /* 蜂鸣器初始化 */

	printf( " 000  000  000 " );
	SetRowCol( 1, 0 );
	printf( "    MIN:   cm   " );
	TMOD	= 0x11;         /* 设T0为方式1,GATE=1; */
	TH0	= 0;
	TL0	= 0;
	TH1	= 0xf8;         /* 2MS定时 */
	TL1	= 0x30;
	ET0	= 1;            /* 允许T0中断 */
	ET1	= 1;            /* 允许T1中断 */
	TR1	= 1;            /* 开启定时器 */
	EA	= 1;            /* 开启总中断 */
	EA	= 0;

	EA = 1;

	while ( 1 )
	{
		while ( !RX1 )
			;       /* 当RX为零时等待 */
		TR0 = 1;        /* 开启计数 */
		while ( RX1 )
			;       /* 当RX为1计数并等待 */
		TR0 = 0;        /* 关闭计数 */
		Conut();
		S1 = S;
		/* /// */
		while ( !RX2 )
			;       /* 当RX为零时等待 */
		TR0 = 1;        /* 开启计数 */
		while ( RX2 )
			;       /* 当RX为1计数并等待 */
		TR0 = 0;        /* 关闭计数 */
		Conut();
		S2 = S;
		/* /// */
		while ( !RX3 )
			;       /* 当RX为零时等待 */
		TR0 = 1;        /* 开启计数 */
		while ( RX3 )
			;       /* 当RX为1计数并等待 */
		TR0 = 0;        /* 关闭计数 */
		Conut();
		S3 = S;
		/*
		 * ///
		 * 通道采集显示
		 */
		SetRowCol( 0, 1 );
		printf( "%3d", S1 );

posted @ 2021-02-28 14:24  roadroad  阅读(166)  评论(0编辑  收藏  举报
电设屋
上千套电子毕设课设方案