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

news2024/11/17 21:50:38

一、系统方案
本设计采用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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

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

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

相关文章

基于SSM的网上医院预约挂号系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Linux 部分IO函数

open、close函数 标准C库IO函数的说明文档在 man 3 open Linux系统IO函数说明文档在man 2 open open&#xff08;&#xff09;函数打开文件 && errno 例子&#xff1a;目录下没有a.txt那么运行的时候会报错 open创建新文件 本来没有 create.txt 运行完有了 ll可看文…

【LeetCode-中等题】209. 长度最小的子数组

文章目录 题目方法一&#xff1a;滑动窗口&#xff1a;方法二&#xff1a; 题目 方法一&#xff1a;滑动窗口&#xff1a; 参考图解动画&#xff1a;长度最小的子数组 class Solution { //方法一:滑动窗口public int minSubArrayLen(int target, int[] nums) {int n nums.l…

解决jsp/html界面跳转servlet出现404错误的方法

解决jsp/html界面跳转servlet出现404错误的方法 最近在学习黑马项目过程中遇到的问题 问题一&#xff1a; 检查页面的跳转路径和名称拼写是否正确 问题二&#xff1a; tomcat发布项目时所使用的路径名称与项目不同 在idea右上角点击如图圈住的按钮 在deployment中更改出现…

【SpringCloud微服务项目学习-mall4cloud项目(1)】——环境部署,构建与运行

环境部署&#xff0c;构建与运行 mall4cloud项目介绍源码地址 开发环境搭建pom搭建项目运行前端运行 mall4cloud项目介绍 mall4j商城系统 首先介绍一下mall4j&#xff0c;是一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布…

Redis的基本概念与基础用法(1)

在节假日前12306的访问量就会急剧增加&#xff0c;在这种海量用户高并发的情况下就容易出现网站崩溃的情况&#xff0c;造成网站奔溃的罪魁祸首就是关系型数据库&#xff0c;因为关系型数据库有&#xff1a; 性能瓶颈&#xff1a;磁盘IO性能低下扩展瓶颈&#xff1a;数据关系复…

【三维重建】Ubuntu18.04安装COLMAP

Ubuntu18.04安装COLMAP 文章目录 Ubuntu18.04安装COLMAP前言安装COLMAP&#xff1a;安装CUDA, cuDNN安装依赖项安装Ceres优化库安装glog(可选)配置并编译COLMAP运行COLMAP 总结 前言 COLMAP是一种通用的运动结构(SfM)和多视图立体(MVS)管道&#xff0c;具有图形和命令行界面。…

RBTree(红黑树)模拟实现(插入)

目录 红黑树的性质 红黑树的模拟插入 叔叔存在且为红色 叔叔不存在 旋转情况​​​​​​​ 叔叔存在且为黑色 总结 插入实现 节点 插入逻辑 左单旋 右单旋 红黑树是一颗平衡搜索二叉树&#xff0c;但是红黑树并不像 AVL 树一样是高度平衡二叉树&#xff0c;任意一…

正在吞食世界的Python!

谁能想到&#xff0c;30年后&#xff0c;一条蟒蛇因为人工智能而席卷了全世界&#xff01;这一切&#xff0c;都源于1989年的那个圣诞节。 一个名叫Guido van Rossum程序员在荷兰的阿姆斯特丹呆着&#xff0c;无所事事的圣诞假期有点无聊。为了打发时间&#xff0c;他开发了一…

前端中的事件委托

前端小知识 事 件 委 托 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/132819265 【介绍】&#xff1…

MATLAB语言 实验一 MATLAB工作环境熟悉及简单命令的执行

一、 实验名称 MATLAB工作环境熟悉及简单命令的执行 二、 实验目的 熟悉MATLAB的工作环境&#xff0c;学会使用MATLAB进行一些简单的运算。 三、实验内容 MATLAB的启动和退出&#xff0c;熟悉MATLAB的桌面&#xff08;Desktop&#xff09;&#xff0c;包括菜单&#xff08…

抖音视频批量智能剪辑/智能一键成片功能如何技术开发源头?

抖音seo&#xff0c;视频剪辑&#xff0c;批量发布&#xff0c;账号矩阵管理&#xff0c;无人直播自动询盘锁定客户&#xff0c;想实现以上功能都要有正规的接口权限&#xff0c;这个权限接口已经在前面文章发过。 一、剪辑技术开发 智能剪辑&#xff1a;咱们研发公司自主研发…

初识Vue3

目录 创建实例 Vue3生命周期 响应式基础 为什么要使用 ref&#xff1f; 声明响应式状态 ref()和reactive() toRef()和toRefs() 创建实例 通过对Vue2的学习&#xff0c;我们可以这样在Vue2中创建一个实例&#xff1a; var vm new Vue({// 选项 }) 或者通过Vue全局api…

webrtc-m79-测试peerconnectionserver的webclient-p2p-demo

1 背景 webrtc的代码中有peerconnectionclient和peerconnectionserver的例子&#xff0c;但是没有对应的web端的例子&#xff0c;这里简单的写了一个测试例子&#xff0c;具体如下&#xff1a; 2 具体操作 2.1 操作流程 2.2 测试效果 使用webclient与peerconnectionclient的…

Windows安装MySQL8.0完整教程

很多朋友在安装MySQL的时候&#xff0c;总会遇到各种各样的问题。本文来教你怎样正确安装MySQL。 一、 下载MySQL 如果已经下载好了可以忽略&#xff0c;我下面提供两个版本的下载链接 阿里云盘 夸克云盘 链接&#xff1a;https://pan.quark.cn/s/1894623c2e6a 提取码&…

Go入门教程

什么是Go语言&#xff1f; Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全&#xff0c;GC&#xff08;垃圾回…

BGP感想

BGP 边界网关协议 属于外部或域间路由协议&#xff0c;距离矢量路由协议。 AS(自治系统)&#xff0c;在一个自治系统内运行osfp,is-is,rip,vlan等,实现AS内网络互通。 BGP做什么&#xff0c;为处于不同自治系统&#xff08;AS&#xff09;中的路由器之间进行“路由信息通信…

视频推流测试——使用ffmpeg进行推流生成rtsp视频流

在我们完成开发工作之后,需要通过推流的形式来验证能否正确接收视频流,并送入视频检测程序。笔者在这里使用的是业内最为常用的ffmpeg。具体方法如下。 1、安装ffmpeg 访问ffmpeg的官网,地址为https://ffmpeg.org/download.html,按照如下途中来选择下载。 下载完成后,会…

LeetCode(力扣)53. 最大子数组和Python

LeetCode53. 最大子数组和 题目链接代码 题目链接 https://leetcode.cn/problems/maximum-subarray/ 代码 class Solution:def maxSubArray(self, nums: List[int]) -> int:result float(-inf)count 0for i in range(len(nums)):count nums[i]if count > result:res…

华为云云耀云服务器L实例评测|华为云云耀云服务器docker部署srs并调优,可使用webrtc与rtmp

华为云云耀云服务器L实例评测&#xff5c;华为云云耀云服务器docker部署srs并调优&#xff0c;可使用webrtc与rtmp 什么是华为云云耀云L实例 云耀云服务器L实例&#xff0c;面向初创企业和开发者打造的全新轻量应用云服务器。提供丰富严选的应用镜像&#xff0c;实现应用一键…