基于单片机倒车三路雷达控制报警系统设计
摘 要
随着人们倒车安全意识不断提高,倒车雷达系统逐渐的完善,并得到了快速的发展。
同时在人们的生活中随处可见,一般没量机动车上都有安装有倒车雷达系统。本文主要为提高倒车雷达系统性能,本设计以单片机为核心,以多路雷达传感器采集多方位的数据进行无死角探测,并通过声光报警作为倒车障碍物检测警示。该系统的外围电路包含前端四路雷达检测电路、晶振电路、主控电路、复位电路、电源电路以及声光报警电路。根据各电路特点及系统要求编写了系统程序。最后,以系统原有电路和程序作为基础,设计了相应的仿真电路和仿真程序。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 );