汽车倒车报警器

该实验设计了一款汽车倒车报警器,利用51单片机、超声波测距传感器、液晶显示器、蜂鸣器和LED灯。当车辆与后方障碍物距离小于1米时,液晶屏显示距离,蜂鸣器发出报警声,LED灯闪烁。随着距离减小,报警声音更急促,LED闪烁加快。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的

1. 了解超声波测距传感器工作原理及引脚功能。

2. 学会使用超声波测距传感器测量距离。

3. 会使用1602液晶显示器显示测量距离。

4. 学会控制LED灯亮灭。

5. 学会使用蜂鸣器发出报警声

二、实验设备

1. 51单片机实验板,以及电源线、下载线、杜邦线

2. 超声波测距传感器、蜂鸣器、LED灯、1602液晶显示模块

三、实验项目要求

为避免汽车倒车时与后方障碍物发生碰撞,请设计一款基于超声波测距传感器的汽车倒车报警器,要求如下:

①在显示屏上随时显示汽车与车后物体间的距离。

②一旦进入危险距离(<=1m)范围内,蜂鸣器将发出“嘀。。。嘀。。。”声音,LED灯开始闪烁,提示驾驶员;当距离越来越近是,提示声音越急促,LED灯闪烁越快(亮灭间隔越短)。

1602液晶显示示例:

请按要求设计一个可行方案,包括设备选型、系统连接图等,并编写程序实现上述功能。

四、实验步骤

1. 设计方案

①方案:

引脚设置:

超声波测距传感器:回声接收端引脚设置为P2^0,超声波触发端口引脚设置为P2^1;

蜂鸣器:引脚设置为 P2^5;

LED灯:引脚设置为P2^3;

通过1602液晶显示距离变化值。

通过超声波测距传感器测量距离,并且距离值会显示到1602液晶显示屏上。

通过蜂鸣器实现报警声,当距离小于10cm时,蜂鸣器将发出“嘀。。。嘀。。。”声音,并且LED灯开始闪烁;距离越来越近是,提示声音越急促并且LED灯闪烁越快,亮灭间隔越短。

②系统连接图:

2. 编写源程序,编译,生成hex文件

 

源程序:

#include "public.h"
#include "lcd1602.h"

sbit beep=P2^5;
sbit led=P2^3;
sbit ECHO = P2^0;  //回声接收端口
sbit TRIG = P2^1;  //超声触发端口

u8 n,figh=0;
void Alarm(u8 t) //蜂鸣器报警,持续t秒,软件延时
{
	u8 k; 
	u16 i; 		
	for(k=0;k<t;k++)
	{
		for(i=0;i<200;i++)//叮
	  	{
			beep=0;delay_us(50);
			beep=1;delay_us(50);
		}
	}
}

void Timer0Init(void)		//1??@12.000MHz
{
	TMOD &= 0xF0;		//???????
	TMOD |= 0x01;		//???????
	TL0 = 0x00;		//??????
	TH0 = 0x00;		//??????
	TF0 = 0;		//??TF0??
	TR0 = 0;		//???0????
	ET0=1;
	EA=1;
}

u8 US_Distance()
{
	u8 l8b,h8b;
	u16 distance;

	TRIG =0;
	ECHO = 0;
	TRIG = 1;
	delay_us(10); //延时10微秒;
	TRIG = 0;

	while(ECHO == 0);  //等待回声
    TR0 = 1;
	while(ECHO);	
	TR0 = 0;
	
	l8b = TL0;
	h8b = TH0;
	distance = (h8b << 8) + l8b;//将计数值转换为16位
	TL0=0;
	TH0=0;
	return (u8)(0.017*distance);
}

void Timer1Init(void)		//1毫秒@11.0592MHz
{
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x10;		//设置定时器模式
	TL1 = 0x66;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
	TF1 = 0;		//清除TF1标志
	TR1 = 1;		//定时器1开始计时
	ET1=1;
	EA=1;
}

void main()
{
	u8 distan,str[20];
	Timer0Init();
	Timer1Init();
	lcd1602_init();
	lcd1602_clear();
	led=1;
	while(1)
 	{ 	
		distan=US_Distance();//距离,单位cm
		n=distan;
		sprintf(str,"Distence:%03bu",distan);
		lcd1602_show_string(0,0,str);
		if(distan<=10)
		{
			figh=1;
			Alarm(1);
			delay_ms(distan*100);
		}
		else {figh=0;delay_ms(500);}		 
	}
}
void Timer1_Init(void) interrupt 3
{
	static u16 count=0;
	static u8 x=0;
	if(figh)
	{
		count++;
		led=x;
		if(count==n*100) 
		{
			count=0;
			x=(x+1)%2;
			//led=~led;
		}
	}
	else
	{
		led=1;
		count=0;
	}
	TL1 = 0x66;		//设置定时初值
	TH1 = 0xFC;		//设置定时初值
}

3. 将hex文件下载到实验板运行,描述实验现象

实验现象:

显示屏上显示汽车与车后物体间的距离。一旦进入危险距离(<=10cm)范围内,蜂鸣器将发出“嘀。。。嘀。。。”声音,LED灯开始闪烁;当距离越来越近是,提示声音越急促,LED灯闪烁越快(亮灭间隔越短)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值