基于单片机超声波测距语音播放

2023-11-14

一、系统方案
本设计采用52单片机作为主控器,HC-SR04测距,液晶1602显示,按键设置报警阀值,语音报警。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
uint dist; // 保存超声波模块测量到的结果

Trig_P=0;

LcdInit();												// 执行液晶初始化
TMOD = 0x01;											// 选择定时器0,并且确定是工作方式1(为了超声波模块测量距离计时用的)

LcdGotoXY(0,0);	    							// 定位到第0行第0列
LcdPrintStr("welcome to use ");	// 第0行显示“  temp=         ”
LcdGotoXY(1,0);	    							// 定位到第1行第0列
LcdPrintStr("  dist=   cm    ");	// 第1行显示“  dist=   cm    ”

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 i;

if(KeySet_P==0)								// 判断是否有按键按下
{
	LcdGotoXY(1,0);							// 液晶第二行刷新显示
	LcdPrintStr("  alarm=   cm   ");
	LcdGotoXY(1,8);							// 显示当前的报警值
	LcdPrintNum(gAlarm);				
	
	DelayMs(10);								// 消除按键按下的抖动
	while(!KeySet_P);						// 等待按键释放
	DelayMs(10);								// 消除按键松开的抖动

	i=1;

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

		if(KeyUp_P==0)			// 报警值加的处理
		{
			if(gAlarm<600)
				gAlarm++;
			LcdGotoXY(1,8);
			LcdPrintNum(gAlarm);
			DelayMs(300);
		}
		
		if(KeySet_P==0)			// 再次按下设置键的判断
		{
			LcdGotoXY(1,0);						// 液晶恢复测量时的内容显示
			LcdPrintStr("  dist=   cm    ");
			DelayMs(10);		  				// 消除按键按下的抖动
			while(!KeySet_P);					// 等待按键释放
			DelayMs(10);		  				// 消除按键松开的抖动
			i=0;
		}			   
	}		
}	

}

4、核心算法程序
//
// 主函数
/
/
void main()
{

uint dist;												// 保存超声波模块测量到的结果


Trig_P=0;

LcdInit();												// 执行液晶初始化
TMOD = 0x01;											// 选择定时器0,并且确定是工作方式1(为了超声波模块测量距离计时用的)

LcdGotoXY(0,0);	    							// 定位到第0行第0列
LcdPrintStr("welcome to use ");	// 第0行显示“  temp=         ”
LcdGotoXY(1,0);	    							// 定位到第1行第0列
LcdPrintStr("  dist=   cm    ");	// 第1行显示“  dist=   cm    ”

	 

while(1)
{
	

	KeyScanf();
	gSpeed=0.607*(28)+331.4;		// 根据公式 v=0.607T+331.4 计算出当前温度值对应的超声波速度,这时的单位是“米/秒” 
	gSpeed=gSpeed/10000;						// 将超声波的速度从单位“m/s”转为“cm/us”,方便后面的计算
	
	dist=GetDistance();							// 通过超声波模块获取距离
	LcdGotoXY(1,7);	    						// 光标定位
	LcdPrintNum(dist);							// 将获取到的距离在液晶上面显示

	AlarmJudge(dist);								// 判断一下是否需要报警,是的话则报警	

		
		
	}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于单片机超声波测距语音播放 的相关文章

  • Python 中的异常处理

    异常的原因通常在程序本身之外 例如 不正确的输入 输入输出设备故障等 由于程序在遇到异常时会突然终止 因此可能会对系统资源 如文件 造成损害 因此 应该正确处理异常 以防止程序突然终止 Python 使用try和except关键字来处理异常
  • 牛客网刷题-两数之和

    问题描述 给出一个整数数组 请在数组中找出两个加起来等于目标值的数 你给出的函数twoSum 需要返回这两个数字的下标 index1 index2 需要满足 index1 小于index2 注意 下标是从1开始的 假设给出的数组中只存在唯一
  • 哈希表【散列表】详解

    哈希表 hash 一 哈希表的插入及查询 hash表是一种数据结构 又称为散列表 其根本的原理就是把一个数变成另外一个易于存储的数 先来看一道例题吧 假如有n个数 n的范围只有10万 但是每个数的大小有1e9 怎么做才能统计每个数出现的次数
  • Windows系统中的Linux系统设置固定IP

    当前虚拟机的Linux操作系统 其IP地址是通过DHCP服务获得的 DHCP 动态获取IP地址 即每次重启设备都会获取一次 可能导致IP地址频繁变更 在VMware Workstation 或Fusion 中配置IP地址网关和网段 IP地址

随机推荐

  • 端口转发&&映射详解、代理&&反向代理深入认知

    端口转发 端口映射 端口转发和端口映射都是为了解决内网主机的端口无法在外部直接访问而衍生出来的技术 通过中间服务器进行中转 将内部的端口映射到公网IP上或者将内部端口转发到外部服务器 供用户或者自己来使用 端口转发 概念 端口转发 Port
  • 抖音去水印最新php方法代码

    输出正常JSON param string 提示信息 param array 输出数据 return json function jok msg success data null header content application js
  • UCI常用说明

    UCI常用函数说明 结构体 API函数 参考文章 安装完成后在 加粗样式 usr local include 目录下存放UCI h文件可以进行参考 结构体 1 struct uci package 包结构体 它对应一个配置文件内容 stru
  • unity-使用UGUI实现游戏开始、结束的设计

    开始界面 结束界面的制作 在场景中 新建一个canvas 在canvas中新建一个image作为背景图 可以通过Inspector界面 设置好image的相关属性 设置好背景之后 在场景中添加Button 根据个人需要 设置好Button的
  • 计算机视觉基础——数字图像与颜色空间

    欢迎大家关注微信公众号 baihuaML 白话机器学习 码字不易 如转载请私信我 在这里 我们一起分享AI的故事 您可以在后台留言 关于机器学习 深度学习的问题 我们会选择其中的优质问题进行回答 Hello 大家好 白话机器学习新的一个专题
  • 疯壳MTK智能穿戴入门篇-新增APP

    MTK编程 新增APP 在MTK 系统中 所有的功能都是模块化管理 并且大多数功能都有自己的功能宏 和对应的源代码文件 我们把这种功能模块称之为应用 简称APP Application 比如闹钟 计算器 日历等都是一个APP 在之前的例子中
  • Android里面的AutoCompleteTextView和MultiAutoCompleteTextView

    AutoCompleteTextView 动态的匹配输入的内容 独特的属性 设置输入多少字符时自动匹配 android completionThreshold 2 下面这个是在界面上定义的控件
  • 原生HTML跳转页面传递和接收参数方法

    传递参数 window location href order html info info 2 接受参数 在window nl ad function 里写下面的代码 var url location search 获取url中 符后的字
  • 过压保护电路(OVP)

    作者 AirCity 2020 2 4 Aircity007 sina com 本文所有权归作者Aircity所有 1 示例一 当VBUS 5V时 各点电压电流如图所示 Q1接近截止 输出信号是5V 当VBUS 5 4V开始 输出信号开始下
  • 《项目管理基础》学考笔记

    控制的主要成分是信息 每个人都应该进行状态和流程总结 条形图尾巴长短表示浮动时间 改善流程是每个项目经理的职责 项目控制分2方面 维持 改善质量 项目总结会议包括3类 设计 流程或经验教训 状态总结 计划时间不应超过4到6周 箭线图对于分析
  • 【平衡小车制作】(一)硬件原理图讲解(超详解)

    大家好 我是小政 之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题 将这些内容记录下来分享给大家 也让大家少走一些弯路 接下来我将从硬件框架选择 软件编程 PID算法 PID调参 蓝牙遥控这五个部分向大家讲解平衡小车的制作过程
  • java 二进制转换为十进制_二进制转换十进制 算法解析

    java里面是有进制间互换现成的方法的 public class十进制与各进制的相互转换 public static voidmain String args java已经实现的机制 十进制转换为二进制 int decimal 10 Sys
  • php截取百度搜索结果

    简单的通过file URL 获取远程网页数据 用implode 函数把数组合并成string 再根据自己的需要 对string进行截取 过滤等个性化处理 基于此思想 可以进一步拓展 估计就是采集器的雏形了
  • 【华为OD机试真题2023 JS】统一限载货物数最小值

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 统一限载货物数最小值 知识点二分查找 时间限制 1s 空间限制 64MB 限定语言 不限 题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车
  • JeeSite快速开发平台 JNPF快速开发平台3.4.6版本 框架源码部署文档入门说明

    JeeSite快速开发平台 JeeSite 快速开发平台 不仅仅是一个后台开发框架 它是一个企业级快速开发解决方案 后端基于经典组合 Spring Boot Shiro MyBatis 前端采用 Beetl Bootstrap AdminL
  • x264编码h264

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 x264介绍 二 x264中主要的编码接口以及主要数据结构介绍 1 void x264 param default x264 param t 2 int
  • 发现一个好用的层级多项目管理工具

    市面上项目管理工具蛮多的 但大多仅支持单层多项目管理 而我们公司有多条产品线 如果没有层级组织用于分类 使用起来就非常麻烦 最近 我们试用了下Topo项目管理软件 它可以根据我们的组织架构进行层级搭建 实际使用效果不错 看图 进系统 进设置
  • 【Linux】网络编程套接字(下)

    Linux 博客主页 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 看似不起波澜的日复一日 一定会在某一天让你看见坚持的意义 祝我们都能在鸡零狗碎里找
  • 第八天字符串

    344 反转字符串 力扣题目链接 opens new window 编写一个函数 其作用是将输入的字符串反转过来 输入字符串以字符数组 char 的形式给出 不要给另外的数组分配额外的空间 你必须原地修改输入数组 使用 O 1 的额外空间解
  • 基于单片机超声波测距语音播放

    一 系统方案 本设计采用52单片机作为主控器 HC SR04测距 液晶1602显示 按键设置报警阀值 语音报警 二 硬件设计 原理图如下 三 单片机软件设计 1 首先是系统初始化 uint dist 保存超声波模块测量到的结果 Trig P