基于51单片机的汽车倒车防撞报警器系统

news2024/9/22 23:36:51

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

本课题基于微控制器控制器, 设计一款汽车倒车防撞报警器系统。
要求:
要求:1.配有距离, 用于把车和障碍物之间的距离信号送入控制器。
2.配有报警系统, 用于车离障碍物太近时及时报警。
3.配有键盘,用于设置安全距离;

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include <REGX52.H>
#include<intrins.h>
#include<stdio.h>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;


sbit Tr=P3^0;//触发信号
sbit Ec=P3^1;//回响信号
sbit led = P3^2;
sbit beep=P2^7;
uchar Recv_Buffer[4];
uint Voltage[]={'0','0','0','0'};
bit bdata IIC_ERROR;
  
unsigned int distance;
static unsigned char num;
unsigned char KeyNum;

unsigned int Read_value(void);//读值函数
unsigned int password,count; //初始化阈值,一共三位
unsigned int jlyz;
static int flag = 0;

void Delay10us(void);//10us延时函数
void cslsz(void);

void Time0_Init()          //定时器初始化
{
    TMOD = 0x01;
    TH0 = 0x00;
    TL0 = 0x00;
    TR0 = 0;//先关闭定时器0
}

void Time0_Int() interrupt 1 //中断程序
{
   TH0  = 0xfe;             //重新赋值
   TL0  = 0x33;
}

unsigned int Read_value()
{
	uint result;
	Tr=1;//触发引脚发出11us的触发信号(至少10us)
	Delay10us();
	Tr=0;
	while(!Ec);//度过回响信号的低电平
	TR0=1;//开启定时器0
	while(Ec);//度过回响信号高电平
	TR0=0;//关闭定时器0
	result=((TH0*256+TL0)*0.034)/2;		// 距离cm=(时间us * 速度cm/us)/2
	return result + 2;	//+2修正补偿	
}

void main()					  //主函数
{	
	uchar u;
	Tr=0;//出发引脚首先拉低
	LCD_Init();         //显示屏初始化
	Time0_Init();	   //定时初始化
	beep = 0;
	LCD_ShowString(1,1,"-----kaiji-----");
	Delay(1000);
	LCD_Init();
	LCD_ShowString(1,1,"yuzhi:");
	LCD_ShowString(2,1,"distance:");
	led = 0;
	while(1)
	{
		Delay(200);
		
			cslsz();//按键判断
		  distance = Read_value();//读值
	    LCD_ShowNum(2,10,distance,3);
		if(flag == 1) //判断
		{
			if(distance < jlyz)
			{
				beep = 1;
				led = 1;
			}
			else
			{
				beep = 0;
				led = 0;
			}
		}
	}
}

void cslsz()//按键判断
{
	KeyNum = MatrixKey();//键盘输入的值进行传递
	if(KeyNum){		
	if(KeyNum <= 10) //把按键的范围定义在0~9
	{			
	  if(count < 3)
		{
			password*=10; //左移一位
			password += KeyNum % 10;
			count++;    //计次++
		}
			LCD_ShowNum(1,7,password,3); //LCD更新显示
	}	
	//确认键
	  if(KeyNum == 11) //把11表示确认,对阈值进行确认
		{
		 LCD_ShowNum(1,7,password,3); //LCD更新显示
		 jlyz = password;
			flag = 1;
		}		
		//取消键
		if(KeyNum == 12)
			{
				password = 0;
				flag = 0;
				count = 0;
				LCD_ShowNum(1,7,password,3); //LCD更新显示
			}
				
		if(KeyNum == 13)
			{
				
			}		
			if(KeyNum == 14)
			{
			
			}	
			
			if(KeyNum == 15)
			{
	
			}	
			
			if(KeyNum == 16)
			{
				
			}
					
	 }	
}



void Delay10us()
{
	TL0=0xF5;
	TH0=0xFF;
	TR0=1;
	while (TF0==0);
	TR0=0;
	TF0=0;
}

四、实现现象

具体动态效果看B站演示视频:

基于51单片机的汽车倒车防撞报警器系统

全部资料(源程序、仿真文件、安装包、演示视频):

百度网盘资料下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2156126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024AI做PPT软件如何重塑演示文稿的创作

现在AI技术的发展已经可以帮我们写作、绘画&#xff0c;最近我发现了不少ai做ppt的工具&#xff01;不体验不知道&#xff0c;原来合理使用AI工具可以有效的帮我们进行一些办公文件的编写&#xff0c;提高了不少工作效率。如果你也有这方面的需求就接着往下看吧。 1.笔灵AIPPT…

内网穿透out了?黑群晖+IPv6+NAS公网助手的访问体验

科技宅最带折腾黑群晖&#xff0c;这不&#xff0c;尝试一下ipv6动态域名解析&#xff0c;远程访问群晖NAS的方法千千万&#xff0c;这个方法我早就想到了&#xff0c;今天终于体验了一把&#xff0c;把经验分享一下&#xff1a; 目录 黑群晖的魅力 IPv6的加入&#xff1a;无…

Python办公自动化教程(003):PDF的加密

【1】代码 from PyPDF2 import PdfReader, PdfWriter# 读取PDF文件 pdf_reader PdfReader(./file/Python教程_1.pdf) pdf_writer PdfWriter()# 对第1页进行加密 page pdf_reader.pages[0]pdf_writer.add_page(page) # 设置密码 pdf_writer.encrypt(3535)with open(./file/P…

上位机图像处理和嵌入式模块部署(linux小系统开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和若干年前相比较&#xff0c;现在嵌入式linux开发要简单得多。稍微贵一点的有树莓派&#xff0c;国产的有各种水果派&#xff0c;基本上都可以按照…

苍穹外卖学习日志 -----20天项目从零到完结-----含软件下载,环境配置,框架学习,代码编写,报错处理,测试联调,每日总结,心路历程等等......

年份 2024 基础&#xff1a;Javase Javaweb 已完结 2024 8.25---9.14 20天 Day-01 8.25 今天开始学习已经晚了&#xff0c;网盘下载了一下文件&#xff0c;做了一些开始项目的准备工作。 本来其实打算用notepad来写学习日志的&#xff0c;但是那个传…

如何给bat文件替换好看的图标

最近遇到软件运行在Windows系统&#xff0c;通过bat文件启动&#xff0c;但是bat文件的图标不好看&#xff0c;而且作为启动快捷方式放桌面看上去跟其他软件不搭调&#xff0c;于是得给bat文件换个软件图标。 软件ico图标 Windows系统下使用.ico文件作为软件图标。另外favicon…

go libreoffice word 转pdf

一、main.go 关键代码 完整代码 package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath" ) import _ "github.com/go-sql-driver/mysql"import &q…

Python练习宝典:Day 1 - 选择题 - 基础知识

目录 一、踏上Python之旅二、Python语言基础三、流程控制语句四、序列的应用 一、踏上Python之旅 1.想要输出 I Love Python,应该使用()函数。 A.printf() B.print() C.println() D.Print()2.Python安装成功的标志是在控制台(终端)输入python/python3后,命令提示符变为: A.&…

数业智能心大陆:职场倦怠的新解法

什么是职业倦怠&#xff1f; 在职场中&#xff0c;职业倦怠的表现形式丰富多样。从数业智能心大陆 AI 心理咨询平台的数据来看&#xff0c;职业倦怠呈现出多种状态。教师可能对教学不再满怀热情&#xff0c;精心备课也成为过去式&#xff1b;情绪上容易烦躁、易怒&#xff0c;在…

【d47_2】【Java】【力扣】1791.找出星型图的中心节点

思路 直接判断 edges[0][0] edges[0][1] edges[1][0] edges[1][1] 谁重复了 例如&#xff1a; [ [1,2] [2,3] ....],那么中心节点一定是2 代码 class Solution {public int findCenter(int[][] edges) {for (int i0;i<1;i){if (edges[1][0]edges[0][i]) {return edg…

车载软件调试工具系列---Trace32简介UI界面简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

java项目之常规应急物资管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的常规应急物资管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息。 项目简介&#xff1a; 基于SpringBootVue的…

TikTok流量不佳:是网络环境选择不当还是其他原因?

TikTok&#xff0c;作为全球短视频社交平台的佼佼者&#xff0c;每天都有海量的内容被上传和分享。然而&#xff0c;很多用户和内容创作者发现&#xff0c;他们的TikTok视频流量并不理想。这引发了一个问题&#xff1a;TikTok流量不佳&#xff0c;是因为网络环境选择不当&#…

S3C2440定时器

ee一、构造 二、设置相关位 1、MPLLCON寄存器&#xff08;配置MPLL寄存器&#xff0c;进行倍频&#xff09; 根据下列表格的想要输出的频率进行选择&#xff0c;选择完毕之后&#xff0c;对该寄存器进行设置 2、时钟分频控制&#xff08;CLKDIVN&#xff09;寄存器 根据不…

AD19基础应用技巧:交叉选择/跳转到器件/镜像粘贴/元器件矩形区域排列/选择过滤器/捕捉对象等设置

目录 1. 原理图<>PCB跳转2. 镜像粘贴3. 矩形区域排列4.选择过滤器5. 捕捉的对象Object for Snapping的设置 6.Grids/Guides/Axes1. **Grids&#xff08;网格&#xff09;**2. **Guides&#xff08;参考线&#xff09;**3. **Axes&#xff08;坐标轴&#xff09;**捕捉模式…

基于python的文本聚类分析与可视化实现,使用kmeans聚类,手肘法分析

1、数据预处理 由于在数据分析之前数据集通常都存在数据重复、脏数据等问题&#xff0c;所以为了提高 数据分析结果的质量&#xff0c;在应用之前就必须对数据集进行数据预处理。数据预处理的方法通常有清洗、集成、转换、规约这四个方面&#xff0c;接下来详细介绍这对爬取…

学习记录:js算法(四十二): 寻找两个正序数组的中位数

文章目录 寻找两个正序数组的中位数我的思路网上思路 总结 寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], n…

力扣72-编辑距离(Java详细题解)

题目链接&#xff1a;力扣72-编辑距离 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每一个dp…

网络层协议 —— IP协议

目录 0.前言 1.IP协议的格式 2.IP地址 2.1IP地址的划分 国际间IP地址的划分 公有IP 私有IP 特殊的IP地址 国内IP地址的划分 2.2IP地址不足问题 2.3IP地址的功能 2.4如何使用IP地址 2.5IP地址的构成 3.网段划分 以前的方案 现在的方案 4.认识宏观网络 5.路由 …

MySQL篇(事务 - 基础)

目录 一、简介 二、事务操作 1. 数据准备 2. 未控制事务 2.1. 测试正常情况 2.2. 测试异常情况 3. 控制事务 3.1. 控制事务一 查看/设置事务提交方式 提交事务 回滚事务 3.2. 控制事务二 开启事务 提交事务 回滚事务 3.3. 转账案例 四、事务的好处 五、事务四…