基于单片机的超声波语音测距系统

news2024/10/7 20:35:31

一、系统方案
超声波具有指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,性价比很高。因此在液位、井深、管道长度的测量、移动机器人定位和避障等领域得到了广泛的应用。
单片机语音系统是以数字电路为基础,利用数字语音电路来实现语音信号的记录、存储、还原等任务。数字语音电路是一种集语音合成技术、大规模集成电路技术以及微控制器为一体的并在近十几年迅速发展起来的一种新型技术。语音集成电路与微处理器相结合,具有体积小、扩展方便等特点,具有广泛的发展前景,如电脑语音钟、语音型数字万用表、手机话费查询系统、排队机、监控系统语音报警以及公共汽车报站器等。
随着经济和科学技术的发展,汽车这项代步工具也走近越来越多的家庭,与此同时交通拥挤的状况也越来越严重。伴随着汽车带来方便的同时,各种事故也层出不穷,其中追尾、倒车碰撞则占据了很大一部分比例。而在汽车上安装一个带语音报警的测距防撞系统则能很好的帮助解决这一问题。泊车时,系统检测汽车与障碍物的距离并且利用LCD显示,当距离小于某设定值时,实时播放距离大小来提醒驾驶人员。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述
三、单片机软件设计
1、首先是系统初始化
//
// 1602液晶初始化函数
/
/
void LcdInit()
{
LcdWriteCmd(0x38); // 162显示,57点阵,8位数据口
LcdWriteCmd(0x0C); // 开显示,不显示光标
LcdWriteCmd(0x06); // 地址加1,当写入数据后光标右移
LcdWriteCmd(0x01); // 清屏
}
2、液晶显示程序

//
// 1602液晶写命令函数,cmd就是要写入的命令
/
/
void LcdWriteCmd(uchar cmd)
{
LcdRs_P = 0;
LcdRw_P = 0;
LcdEn_P = 0;
P0=cmd;
DelayMs(2);
LcdEn_P = 1;
DelayMs(2);
LcdEn_P = 0;
}

//
// 1602液晶写数据函数,dat就是要写入的数据
/
/
void LcdWriteData(uchar dat)
{
LcdRs_P = 1;
LcdRw_P = 0;
LcdEn_P = 0;
P0=dat;
DelayMs(2);
LcdEn_P = 1;
DelayMs(2);
LcdEn_P = 0;
}

3、按键程序

//
// 按键扫描
/
/
void KeyScanf()
{
uchar num1,num2;

if(KeySet_P==0)							// 判断是否有按键按下
{
	LcdGotoXY(1,0);						// 液晶第二行刷新显示
	LcdPrintStr("  alarm=     m  ");
	LcdGotoXY(1,8);						// 显示当前的报警值
	LcdPrintNum(gAlarm);

	DelayMs(10);		  				// 消除按键按下的抖动
	while(!KeySet_P);					// 等待按键释放
	DelayMs(10);			 				// 消除按键松开的抖动

	while(1)
	{							  
		if(KeyDown_P==0)				// 报警值减的处理
		{
			if(gAlarm>2)
				gAlarm--;
			LcdGotoXY(1,8);
			LcdPrintNum(gAlarm);	
			DelayMs(300);
		}

		if(KeyUp_P==0)					// 报警值加的处理
		{
			if(gAlarm<400)
				gAlarm++;
			LcdGotoXY(1,8);
			LcdPrintNum(gAlarm);
			DelayMs(300);
		}
		
		if(KeySet_P==0)					// 再次按下设置键的判断
		{
			break;
		}			   
	}

	LcdGotoXY(1,0);						// 液晶恢复测量时的内容显示
	LcdPrintStr("    S=     m    ");
	
	DelayMs(10);		  				// 消除按键按下的抖动
	while(!KeySet_P);					// 等待按键释放
	DelayMs(10);		  				// 消除按键松开的抖动
	
	num1=gAlarm/100;					// 将新的报警值存入到EEPROM里面去
	num2=gAlarm%100;
	Sector_Erase(0x2000);
	EEPROM_Write(0x2000,num1);
	EEPROM_Write(0x2001,num2);
}	

}
4、核心算法程序
//
// 播放一段语音
/
/
void PlaySound(uchar addr)
{
uchar i;
SDA=0;
DelayMs(5);

for(i=0;i<8;i++)
{
	SDA=1;
	if(addr&1)
	{
		DelayMs(3);
		SDA=0;
		DelayMs(1);
	}
	else
	{
		DelayMs(1);
		SDA=0;
		DelayMs(3);
	}
	addr>>=1;
}
SDA=1;
while(!BUSY);				// 等待播放完毕

}
四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

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

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

相关文章

Joom、Etsy、Daraz、Newegg专业运营模式解析,助你更上一层楼

首先我们来先了解一下这些平台的结构和运营模式。 Joom是一家总部位于爱沙尼亚的跨境电商平台&#xff0c;专注于为全球消费者提供具有竞争力价格和高品质商品的便利购物体验。Joom通过直采模式与全球品牌和供应商直接合作&#xff0c;确保商品的优质和价格的合理。此外&#x…

java使用多线程不分页查询100万条数据

如果用普通查询需要5分多分钟才查询完毕&#xff0c;所以我们用索引加多线程来实现。 那我们就开始吧&#xff01;GO&#xff01;&#xff01;GO&#xff01;&#xff01; 数据库设计 编写数据库字段 然后要生成100万条数据 在数据库添加索引 代码实现 java编写 controll…

STM32CubeMX 软件删除用户代码的问题解决

总结stm32cubeMx 会删除用户代码的问题。 自己的代码不会被删除的软件格式及配置方法。当然还需要注意一点&#xff1a;软件生成的工程不能有中文字符&#xff0c;要不然生成错误。 1、stm32cubeMx 的配置如下&#xff1a; 2、就是按照格式把自己的代码写到应该写的位置。如下图…

【Python】Python Flask token身份认证(附完整代码)

前言 Python Flask是一个使用Python编写的轻量级Web应用框架&#xff0c;它可以非常方便地搭建Web应用。在Web应用中&#xff0c;经常需要进行身份认证&#xff0c;以确保只有授权用户才能访问某些资源。本文将介绍如何使用token进行身份认证&#xff0c;以及如何在Python Fla…

IIS搭建本地电脑服务器:通过内网穿透技术实现公网访问的步骤指南

1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类&#xff0c;为方便用户使用&#xff0c;还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务&#xff0c;都是为了方便我们…

20W到80W SIP音柱

SIP-7042 20W到80WSIP音柱 一、描述 SIP-7042是一款壁挂式SIP有源音柱&#xff0c;具有10/100M以太网接口&#xff0c;可将SIP音源通过自带的功放和喇叭输出播放&#xff0c;其采用铝合金防水设计&#xff0c;功率可以从20W到80W。SIP-7042作为SIP广播播放系统的终端&#xff…

一招搞定Nuxt3中配置全局样式和全局变量

// nuxt.config.ts // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({devtools: { enabled: true },css: [/assets/style/global.less], // 全局样式vite: {css: {preprocessorOptions: {less: {additionalData: import "/asse…

记录一次ORA-00600 [kdsgrp1]导致的large tracefile的处理过程

文章目录 1.问题描叙2 查因过程2.1 查看磁盘空间状况2.2 检查表空间增长情况2.3 检查$ORACLE_BASE相关文件2.4查看trace file内容 3.处理过程3.1数据文件检查3.2 表及索引段检查 4.结论&#xff1a; 1.问题描叙 收到check_mk告警&#xff0c;约在15:17左右硬盘空间消耗暴增 …

在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

数据资产入表 先行者数据宝在做什么?

2023年8月21日&#xff0c;财政部印发了《企业数据资源相关会计处理暂行规定》&#xff0c;规定数据将作为资产进入企业资产负债表&#xff0c;具体是将数据确认为企业资产负债表中“资产”一项&#xff0c;在财务报表中体现其真实价值与业务贡献。入表意味着数据完成了从自然资…

ChatGPT 实现动态地图可视化展示

地图可视化分析有许多优点和好处: 1.直观理解:地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率:地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高效的数据整…

streamlit--构建对话式应用程序

聊天元素 st.chat_message st.chat_input 构建镜像回复输入内容的机器人 使用流式传输构建简单的聊天机器人 构建一个类似ChatGPT的应用程序 参考资料 streamlit-构建对话式应用程序

iOS开发Swift-4-IBAction,group,音乐播放器-木琴App

1.使用素材创建木琴App的UI。 2.连接IBAction。 其余按钮直接拖拽到play里边。 当鼠标置于1处时2处显示如图&#xff0c;表示成功。当用户按下任一按钮都会触发play中的内容。 3.将7个按钮的View中的Tag值分别调为1、2、3、4、5、6、7. 4.将音频文件拖入项目文件中。 Create gr…

一篇文章告诉你JavaScript 如何实现继承

一、背景简介 JavaScript 在编程语言界是个特殊种类&#xff0c;它和其他编程语言很不一样&#xff0c;JavaScript 可以在运行的时候动态地改变某个变量的类型。 比如你永远也没法想到像isTimeout这样一个变量可以存在多少种类型&#xff0c;除了布尔值true和false&#xff0…

大数据平台数据脱敏是什么意思?有哪些方案?

大数据平台包含了海量多样化数据&#xff0c;所以保障大数据平台数据安全非常重要&#xff0c;数据脱敏就是手段之一。今天我们就来简单聊聊大数据平台数据脱敏是什么意思&#xff1f;有哪些方案&#xff1f; 大数据平台数据脱敏是什么意思&#xff1f; 大数据平台数据脱敏简…

Golang数据结构和算法

Golang数据结构和算法 数据的逻辑结构和物理结构常见数据结构及其特点算法的时间复杂度和空间复杂度Golang冒泡排序Golang选择排序Golang插入排序Golang快速排序Golang归并排序Golang二分查找Golang sort包Golang链表Golang container/list标准库Golang栈stackGolang二叉搜索树…

域内密码喷洒

在Kerberos阶段认证的AS-REQ阶段&#xff0c;请求包cname对应的值是用户名&#xff0c;当用户名存在时候&#xff0c;密码正确和错误两种情况下&#xff0c;AS-REP返回包不一样&#xff0c;所以可以利用这一点对域用户名进行密码喷洒攻击 域内密码喷洒工具 Kerbrute kerbrut…

62.C++ deque容器

目录 1.deque容器基本概念 2.deque与vector区别&#xff1a; 3.deque构造函数 4.deque赋值操作 5.deque大小操作 6.deque双端操作和删除 7.deque数据存取 8.deque插⼊操作 9.deque删除操作 1.deque容器基本概念 deque是⼀种双向开⼝的连续线性空间。所谓的双向开⼝&…

找不到vcruntime140.dll,无法继续执行代码。可行的解决方法分享

在日常使用电脑的过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是提示“由于找不到 VCRUNTIME140.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。”&#xff0c;这一般是什么原因导致了这个问题&#xff0c;我们要如何解决&#xff1f; …

14:00面试,14:10就出来了,问的问题有点变态......

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…