当前位置: 首页 > news >正文

基于单片机的超声波倒车雷达设计

摘 要:文 章设计了一种基于单片机的超声波倒车雷达系统,以 AT89C51 型单片机作为控制核心,集距离测量、显示,方位显示和危险报警于一体,以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序进行调试,并采用 Proteus 对整个系统进行了仿真,仿真结果达到了预期的效果。
关键词:超声波;测距;单片机;倒车雷达

前言

近年来,随着驾驶人和机动车数量的急剧增长,行车路况复杂,驾驶员往往不能及时的了解车辆周边尤其是后方的环境,导致驾驶员操作不及时,造成很多事故 。本文设计了以 AT89C51 单片机为核心,利用超声波来进行测距,同时具有实现显示和报警功能的倒车雷达系统,大大提高了倒车泊车的安全性。

1 系统总体设计

本文设计了一种基于单片机的超声波倒车雷达系统,采用超声波脉冲回波法对距离进行测量,AT89C51 单片机作为整个系统的控制单元,TCF40-16TRC 超声波收发一体式传感器作为测距装置。系统主要包括测距部分、控制部分和显示报警部分。图 1 所示为系统的整体框架图。
汽车泊车时挂倒档,整车 ECU 会产生倒车信号,单片机接收该信号后进入工作状态,产生脉冲电压信号,该信号经 过四选一分时选通开关被发送到第一路(后左支路)测距电路,经过电路放大后驱动传感器发射超声波,同时单片机开始计时。超声波遇到障碍物后产生的反射回波被超声波接收
传感器所接收,并将其转化为电信号,单片机收到信号后,响应该中断,系统会执行外部中断程序,停止先前的计时,控制器会得到超声波发射和回波之间的时间差,定时中断以后继续执行下一路。测距顺序依次为后左,后左中,后右中和后右。随后,控制器计算得到最小距离值,并将该值及方位传送给 LCD 。当该值小于所设定的安全距离时,单片机驱动蜂鸣器发出报警,同时 AEB 系统进入工作状态,以保证泊车安全。

2 系统硬件设计

AT89C51 单片机是一种低功耗和高性能的八位芯片 。硬件电路主要包括单片机控制电路,超声波测距收发电路,回波电信号放大电路,LCD 显示电路,报警电路,方位灯显示电路等。

2.1 超声波测距收发电路

超声波收发电路的功能主要有:增大驱动发射声波脉冲电压幅值,实现声波信号与电信号之间的转化;提高超声波有效发射距离。本系统选择 CD4052 型芯片用来分时选通四个支路的传感器。

2.2 回波电信号放大电路设计

放大电路选择 CX20106A 型芯片作为控制核心。图 2 中引脚 1 CD4052 芯片的 Y 端。该放大电路对回波电信号进行处理,最终产生并向单片机输出一个低电平信号 。该信号会向控制芯片申请中断,随即单片机发送计时停止指令,同时系统便开始对数据进行处理。

2.3 液晶显示系统的电路设计

本设计选择 YBLCD1602LCD 液晶显示器作为显示装置。图 3 中芯片 P0 的八个引脚端口分别与 LCD 的八个引脚相连接,传输指令和数据。P1.0 P1.1 P1.2 引脚分别与LCD 的三个端口相连接,对 LCD 的读写功能进行控制。

2.4 系统方位灯电路设计

4 所示为系统方位灯的电路图,当其中一个二极管点亮,表明该路传感器对应方位的障碍物距离车体的位置最近。这四个发光二极管分别与芯片的引脚相连,当芯片所对应引脚输出为低电平时,该引脚所对应的二极管被点亮。

2.5 系统报警电路设计

系统采用 PB2130UP002A 蜂鸣器作为声音报警装置,当障碍物与车体距离过近时,蜂鸣器发出声音以起到报警的作用 。由图 5 可知该电路是利用一个三级管来驱动,蜂鸣器电路与单片机的 P3.7 引脚相连接。

3 系统软件设计

系统软件部分由运行主程序,超声波收发子程序,发射 通道选通子程序,LCD 显示子程序,报警子程序等组成。

3.1 软件主程序设计

6 所示为主程序流程框图,汽车挂入倒档时,系统进入工作状态。首先对每个缓冲单元清零,对液晶显示器进行初始化 。随后,系统开始检测是否有倒车信号传来,若有超声波测距支路便开始进入工作状态,反之继续等待。设置定时器并赋初值,同时 T1 定时器开中断。单片机通过检测四路探测完毕的标志位来判断四路探测是否完毕, 标志位为 1 则表示都已经完成,对数据进行处理,完成后通过 LCD 显示最小距离,同时报警模块判断是否需要报警,延迟大约 0.5s 后,系统又回到检测倒车信号处开始下一轮的循环。

3.2 超声波收发子程序设计

单片机接收超声回波的信号,系统进入外部中断 0 程序。此时,定时器 T0 首先停止计时,禁止外部中断 0 的中断,然后计数值保存在以 40H 为起始的单元中。随后,系统等待定时器 T1 所设定的 40ms 中断产生,一旦产生,便会继续进行下一支路的测距。

3.3 定时器 T1 中断程序设计

系统进入定时器 T1 中断程序, T1 关闭,外部 0 中断被禁止,同时 T1 被重新赋初值。如果全部选通完毕且有四个计数值,系统会置标志位然后比较这四个值返回主程序。如果四通路还没有全部选通,系统会继续选通还没有被选通的通道,同时调用发射超声波的子程序,启动定时器 T0 和定时器 T1 ,并允许定时器 T1 中断。

4 系统调试与仿真

本文使用 Keil 软件对程序进行调试,使用 Proteus 软件对电路进行仿真。图 7 中,示波器窗口可以看见有一串矩形波发出,脉冲个数为 16 个,与预期的数目相同。

利用 Keil 软件对系统的程序进行了调试并采用 Proteus专业仿真软件对整个系统进行了仿真以验证系统的正确性和稳定性。

5 结语

本文通过采用单片机控制和超声波测距,设计出一种结构简单、可靠性高的泊车雷达系统。利用超声波来进行测距,测量精度比较高,同时实现显示和报警的功能,完全满足驾驶员泊车的需求。

相关文章:

基于单片机的超声波倒车雷达设计

摘 要:文 章设计了一种基于单片机的超声波倒车雷达系统,以 AT89C51 型单片机作为控制核心,集距离测量、显示,方位显示和危险报警于一体,以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…...

如何增加服务器的高并发

哈喽呀大家好呀,淼淼又来和大家见面啦,随着互联网应用的普及和用户量的不断增加,服务器的高并发性能成为了开发者们面临的一项重要挑战。在处理大量并发请求时,服务器需要具备高效的处理能力和稳定的性能,以确保系统的…...

webservice、WCF、webAPI权限认证

webservice 权限认证 》》soapHeader SOAPHeader案例 》》 window 集成认证 在IIS里取消匿名访问权限,若允许匿名访问,就没有必须提供验证凭证了 R2RServiceSerialNumber sN new R2RServiceSerialNumber();sN.Url "http://172.xxxxx/R2RServi…...

Kafka之Producer原理

1. 生产者发送消息源码分析 public class SimpleProducer {public static void main(String[] args) {Properties prosnew Properties();pros.put("bootstrap.servers","192.168.8.144:9092,192.168.8.145:9092,192.168.8.146:9092"); // pros.pu…...

ubuntu20.04部署gitlab流程

参考: https://blog.csdn.net/weixin_57025326/article/details/136048507 362 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb367 sudo apt install gitlab-ce…...

C/C++动态内存管理(new与delete)

目录 1. 一图搞懂C/C的内存分布 2. 存在动态内存分配的原因 3. C语言中的动态内存管理方式 4. C内存管理方式 4.1 new/delete操作内置类型 4.2 new/delete操作自定义类型 1. 一图搞懂C/C的内存分布 说明: 1. 栈区(stack):在…...

搭建一个基于主流技术Spring Boot 2 + Vue 3 + Ant Design Vue的技术框架的简要步骤

搭建一个基于主流技术Spring Boot 2 Vue 3 Ant Design Vue的技术框架涉及前后端分离的开发模式。以下是一个简化的步骤指南,用于帮助你开始这个项目: 1. 后端(Spring Boot 2) 1.1 初始化项目 使用Spring Initializr(…...

水电站生产指挥调度系统方案

一、方案背景 在碧波荡漾的大江大河之上,巍然屹立着一座座水电站,它们如同一个个巨人在默默地守护着我们的家园。在这些建设者的辛勤耕耘下,水电站在保障国家能源安全、优化能源结构以及减少环境污染等方面发挥着重要作用。 然而&#xff0c…...

深度学习入门-第3章-神经网络

前面的待补充 3.6 手写数字识别 3.6.1 MNIST 数据集 本书提供了便利的 Python 脚本 mnist.py ,该脚本支持从下载 MNIST 数据集到将这些数据转换成 NumPy 数组等处理(mnist.py 在 dataset 目录下)。 使用 mnist.py 时,当前目录必须…...

如何使用AES128位进行视频解密

要实现AES128位加解密&#xff0c;可以使用JavaScript的crypto-js库。以下是一个简单的示例&#xff1a; HTML代码&#xff1a; <video controlsList"nodownload" controls></video> 首先&#xff0c;需要安装crypto-js库&#xff1a; npm install cr…...

ArkTS是前端语言吗

ArkTS是前端语言吗 ArkTS&#xff0c;这个名词在现代软件开发领域里逐渐崭露头角&#xff0c;但对于许多人来说&#xff0c;它仍旧是个神秘而令人困惑的存在。那么&#xff0c;ArkTS究竟是前端语言吗&#xff1f;为了回答这个问题&#xff0c;我们需要从多个方面进行深入剖析。…...

git上新down下来的项目,前端启动报错npm ERR! code 1 npm ERR! path E:\code\vuehr\node_modul

解决方法在下面 问题1&#xff1a;> vuehr0.1.0 serve > vue-cli-service serve vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 在项目目录下执行命令npm i -D vue/cli-service来安装vue/cli-service依赖。 运行gitee上下载的…...

oc中的数据结构在都在什么位置

数据结构 在Objective-C中&#xff0c;数据结构可以存在于以下几个位置&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;堆是动态分配的内存空间&#xff0c;用于存储动态创建的对象和数据结构。堆上的数据需要手动进行内存管理&#xff0c;即手动分配和释放内存。 …...

多云世界中的 API 治理

随着企业不断拥抱数字化转型&#xff0c;许多企业正在采用多云战略&#xff0c;以充分利用不同云平台的独特优势和功能。这种方法使企业能够避免被供应商锁定&#xff0c;提高灵活性&#xff0c;并优化 IT 成本。然而&#xff0c;在多个云平台上管理应用程序接口并非易事。它带…...

【稳定检索/投稿优惠】2024年环境、资源与区域经济发展国际会议(ERRED 2024)

2024 International Conference on Environment, Resources and Regional Economic Development 2024年环境、资源与区域经济发展国际会议 【会议信息】 会议简称&#xff1a;ERRED 2024 大会地点&#xff1a;中国杭州 会议官网&#xff1a;www.icerred.com 会议邮箱&#xff1…...

生成式 AI——ChatGPT、Dall-E、Midjourney 等算法理念探讨

1.概述 艺术、交流以及我们对现实世界的认知正在迅速地转变。如果我们回顾人类创新的历史&#xff0c;我们可能会认为轮子的发明或电的发现是巨大的飞跃。今天&#xff0c;一场新的革命正在发生——弥合人类创造力和机器计算之间的鸿沟。这正是生成式人工智能。 生成模型正在模…...

C-数据结构-树状存储基本概念

‘’’ 树状存储基本概念 深度&#xff08;层数&#xff09; 度&#xff08;子树个数&#xff09; 叶子 孩子 兄弟 堂兄弟 二叉树&#xff1a; 满二叉树&#xff1a; 完全二叉树&#xff1a; 存储&#xff1a;顺序&#xff0c;链式 树的遍历&#xff1a;按层遍历&#xff0…...

【Linux-Yocto】

Linux-Yocto ■ 1.1 安装 Git 与配置 Git 用户信息■ 1.2 获取 Yocto 项目■ 1.3 开始构建 Yocto 文件系统■ 1.4 构建 SDK 工具■■■ ■ 1.1 安装 Git 与配置 Git 用户信息 sudo apt-get install git git config --global user.name "username" // 配置 Git 用户名…...

一文掌握JavaScript 中类的用法

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 JavaScript 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章…...

国密算法:信息安全的守护者

在数字化时代&#xff0c;信息安全已成为国家安全的重要组成部分。国密算法&#xff0c;作为中国自主研发的一套密码算法体系&#xff0c;对于提升国家信息安全水平、保障关键信息基础设施的安全具有重要意义。本文将详细介绍国密算法的组成、特点以及在信息安全领域的应用。 国…...

产品经理瞎扯:餐饮门店怎么做好服务实现自救

温馨提示&#xff1a;全文4180字&#xff0c;阅读耗时约15分钟。 相信大家都能感觉到去年下半年到现在&#xff0c;很多行业特别是餐饮行业经营都比较困难。于是我就想是否可以通过产品设计以及运营动作&#xff0c;来帮助门店提高营业额以及顾客满意度呢&#xff1f; 正好前…...

字节裁员!开启裁员新模式。。

最近&#xff0c;互联网圈不太平&#xff0c;裁员消息此起彼伏。而一向以“狼性文化”著称的字节跳动&#xff0c;却玩起了“低调裁员”&#xff0c;用一种近乎“温柔”的方式&#xff0c;慢慢挤掉“冗余”的员工。 “细水长流”&#xff1a;裁员新模式&#xff1f; 不同于以往…...

计组雨课堂(5)知识点总结——备考期末复习(xju)

在汇编语言源程序中&#xff0c;“微指令语句"不是常见的组成部分&#xff0c;因为微指令通常是在硬件层面进行处理的&#xff0c;而不是在汇编语言层面。因此&#xff0c;不属于汇编语言源程序的是"微指令语句”。在汇编语言中&#xff0c;组成指令语句和伪指令语句…...

springboot基本使用十一(自定义全局异常处理器)

例如&#xff1a;我们都知道在java中被除数不能为0&#xff0c;为0就会报by zero错误 RestController public class TestController {GetMapping("/ex")public Integer ex(){int a 10 / 0;return a;}} 打印结果&#xff1a; 如何将这个异常进行处理&#xff1f; 创…...

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解(源码级讲解,耐心看完)

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解 这里我先引出问题然后再来一步步进行剖析,SpringSecurity到底是如何实现引入依赖后所有请求都需要进行认证并且会弹出login登录表单页面. 接下来会对SpringBoot的自动装配进行详解,SpringSecurity也是通过自动装配…...

Java Web是前端吗:深入解析Java Web技术的定位与边界

Java Web是前端吗&#xff1a;深入解析Java Web技术的定位与边界 在探讨Java Web是否属于前端领域时&#xff0c;我们首先需要明确Java Web技术的定位和它所涉及的范畴。本文将从四个方面、五个方面、六个方面和七个方面来深入解析这一问题&#xff0c;带您领略Java Web技术的…...

The minCompileSdk (34) specified in adependency‘s AAR metadata

新版AS新增Activity的时候&#xff0c;数据结构是&#xff1a;import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInse…...

MySQl基础入门⑬.5

创建多表连接查询 表准备 CREATE TABLE 员工信息 (员工号 INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,姓名 VARCHAR(50) NOT NULL,性别 ENUM(男, 女) NOT NULL,出生日期 DATE NOT NULL,部门 VARCHAR(50) NOT NULL,手机号码 VARCHAR(20) NOT NULL,-- 根据数据库不同&#x…...

【遂愿赠书 - 1期】:安恒“网安三剑客”-大模型时代下的网络安全实战指南

文章目录 一、图书背景二、网安实战宝典2.1《内网渗透技术》2.2《渗透测试技术》2.3《Web应用安全》 三、校企合作&#xff0c;产学研结合四、大模型时代的数字安全五、 网络安全无小事 一、图书背景 大模型风潮已掀起&#xff0c;各大巨头争相入局&#xff0c;从ChatGPT到Sor…...

【C++入门到精通】C++ thread线程库 [ C++入门 ]

阅读导航 引言一、thread类的简单介绍二、thread类的用法1. 创建线程2. 使用 Lambda 表达式3. 传递参数给线程4. 线程的 join 和 detach5. 检查线程是否可 join6. 线程的 ID7. 线程的移动语义8. 线程的析构&#x1f6a8; 注意事项 三、线程函数参数温馨提示 引言 C thread线程…...