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

devtools/2024/9/22 23:53:40/

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

本课题基于微控制器控制器, 设计一款汽车倒车防撞报警器系统。
要求:
要求: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;//开启定时器0while(Ec);//度过回响信号高电平TR0=0;//关闭定时器0result=((TH0*256+TL0)*0.034)/2;		// 距离cm=(时间us * 速度cm/us)/2return 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.ppmy.cn/devtools/115699.html

相关文章

pg入门18—如何使用pg gis

1. 下载postgre gis镜像 2. 运行镜像 docker run -p 15432:5432 -d -e POSTGRES_PASSWORDAb123456! postgis/postgis:12-3.4-alpine 3. 使用gis # 进入容器&#xff0c;登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用…

每日学习一个数据结构-B+树

文章目录 什么是B树示意图B树的基本特点B树的优点B树的应用场 B树分裂和合并的机制节点分裂节点合并注意事项 什么是B树 B树是一种自平衡的树数据结构&#xff0c;广泛应用于数据库和操作系统的索引结构中&#xff0c;特别是在MySQL的InnoDB存储引擎中。它通过保持数据排序&am…

dbt seed 命令及应用示例

DBT-core是一个命令行工具&#xff0c;它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个强大特性是seed命令&#xff0c;它可以将CSV文件(称为“seed”)加载到数据仓库中。本教程将带你完成使用dbt seed命令的过程。 在dbt中&#xff0c;seed是可以加载到数据仓…

Linux自主学习篇

用户及权限管理 sudo 是 "superuser do" 的缩写&#xff0c;是一个在类 Unix 操作系统&#xff08;如 Linux 和 macOS&#xff09;中使用的命令。它允许普通用户以超级用户&#xff08;root 用户&#xff09;的身份执行命令&#xff0c;从而获得更高的权限。 useradd…

JVM垃圾回收算法

JVM垃圾回收算法是Java虚拟机中自动管理内存的关键机制&#xff0c;它通过智能识别和回收无用对象&#xff0c;有效防止内存泄露&#xff0c;提升系统性能&#xff0c;是Java语言高效、稳定运行的基石。让我们一同探索这一神奇算法&#xff0c;感受它如何为Java世界注入活力&am…

『功能项目』QFrameWork道具栏物品生成【64】

我们打开上一篇63QFrameWork框架重构OnGUI的项目&#xff0c; OnGUI优点&#xff1a; 简单易用&#xff1a;OnGUI是基于代码的UI系统&#xff0c;对于简单的调试界面或者小型项目来说&#xff0c;可以快速实现UI需求。即时更新&#xff1a;OnGUI的UI元素是即时更新的&#xff…

Qt 窗口事件机制

在 Qt 开发中&#xff0c;窗口的关闭、隐藏、显示等事件是常见且重要的功能。不同的事件触发条件、处理方式不同&#xff0c;了解和掌握这些事件有助于我们更好地控制窗口行为。本文将详细讲解这些事件的使用方法&#xff0c;并通过代码实例来展示其应用。 1. done(int r) — 关…

TryHackMe 第3天 | Pre Security (二)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…