基于51单片机超声波测量报警LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

news/2025/3/7 0:26:40/

基于51单片机超声波测量报警LCD1602显示

  • 1. 主要功能:
  • 2. 讲解视频:
  • 3. 仿真
  • 4. 程序代码
  • 5. 设计报告
  • 6. 下载链接

基于51单片机超声波测量报警LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus8.15(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P20

1. 主要功能:

基于51单片机的超声波测距报警设计

具体功能

1、51单片机驱动超声波模块HC-SR04获取超声波测试距离,带有超声波精度温度补偿;

2、LCD1602液晶显示测量的距离和温度;

3、可以通过按键设置距离报警上下限值;

按键功能有:距离加键,距离减键,距离设置键。

4、超过设定的报警上下限值则开始蜂鸣器报警。

(目前仅完全适配普中51-实验板234,其他普中开发板型号可能需要做代码修改或额外接线)

img

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

以下为本设计资料展示图:

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

实物显示图

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

液晶LCD1602显示测量温度和测量距离值。测量距离值超过报警值后蜂鸣器报警。

img

按下设置键可以设置超声波测距的报警上下限值。

img

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

//宏定义
#define uchar unsigned char 
#define uint unsigned int
#define ULint unsigned long int //温度零上与零下的标志位
char flag=0;				    //超声波
char flags=0;				    //超声波距离
char flag1s=0;				    //计算定时间
uint time=0;				    //计算距离
ULint L_=0;					    //温度
int t_=0;				        //显示模式  0正常  1最大值调整  2最小值调整
uchar mode=0;uint Max=200;
uint Min=30; //按键标志
uchar k=0;	  //数值有误
uchar FW=0;	 //头函数
#include <reg51.h>
#include <intrins.h>
#include "key.h"	   	 //按键
#include "display.h"			 //显示头函数
#include "ultrasonic_wave.h"//超声波头函数
#include "DS18B20.h"	   	 //温度传感器头函数//函数声明
void delayms(uint ms);/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
/*********************************************************/
void Delay_Ms(uint time)
{uint i,j;for(i=0;i<time;i++)for(j=0;j<112;j++);
}
//主函数
void main()
{uchar time_cnt=0;Init_ultrasonic_wave();//屏幕初始化Init1602();//温度初始化while(tmp() == 850)		// 等待温度传感器初始化完成{Delay_Ms(10);}//循环显示while(1){Key();time_cnt++;//正常显示
//		Feng_Start();if(mode==0){if((time_cnt%100)==0){StartModule();//启动超声波while(!RX);	  //当RX为零时等待TR0=1;		  //开启计数while(RX);	  //当RX为1计数并等待TR0=0;		  //关闭计数delayms(1);  //1MS//			tmpchange();  //温度转换t_=tmp();     //度温度Conut(t_/10); //计算距离Display_1602(t_/10,L_);}if(L_>Max||L_<Min){Feng_Start();}else{if(FW!=1)Feng_Stop();}}//调整显示else if(mode!=0){//最大最小值Init_MaxMin();while(mode!=0){Key();if(k==1&&mode==1){Init_MaxMin();	write_com(0x8d);//设置位置					}else if(k==1&&mode==2){Init_MaxMin();	write_com(0x8d+0x40);//设置位置	}k=0;}//界面初始化Init1602();}}
}void delayms(uint ms)
{uchar i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}
}//T0中断用来计数器溢出,超过测距范围
void CJ_T0() interrupt 1
{flags=1;							 //中断溢出标志
}

img

5. 设计报告

10877字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。单片机已经无处不在、与我们生活息息相关,并且渗透到生活的方方面面,如空调、VCD机、手机、微波炉、自动洗衣机及汽车电子设备等。单片机的特点是体积较小,也就是其集成特性,其内部结构是普通计算机系统的简化,增加一些外围电路,就能够组成一个完整的小系统,单片机具有很强的可扩展性。它具有和普通计算机类似的、强大的数据处理功能,通过使用一些科学的算法,可以获得很强的数据处理能力。所以单片机在工业应用中,可以极大地提高工业设备的智能化、数据处理能力和处理效率,而且单片机无需占用很大的空间。

同时,随着社会的发展和进步,超声波测距系统日益重要,应用范围迅速扩大,由于超声测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,在较恶劣的环境(如含粉尘)具有一定的适应能力,因此用途极度广泛。在测绘地形图,建造房屋、桥梁、道路、开挖矿山、油井等,倒车雷达、建筑施工工地以及一些工业现场,例如液位、井深、管道长度等场合应用比较普遍。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求。

6. 下载链接

链接: https://pan.baidu.com/s/1PcmNvNvHzeBh3VchH_sS5A?pwd=j6h9
提取码: j6h9

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、烧录工具

8、讲解视频

9、实物图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img


http://www.ppmy.cn/news/1577216.html

相关文章

Java面试常见问题总结

每次面试都要有充分的复习准备&#xff0c;每次面试完&#xff0c;一定要学会总结&#xff0c;不会的查缺补漏。总结一下面试经常遇到的问题。 1&#xff1a;项目介绍&#xff0c;介绍项目主要业务模块及功能&#xff0c;介绍自己负责的模块&#xff0c;项目中遇到过最大的挑战…

nuxt3中请求封装与开发代理配置步骤

一、plugin文件夹中新建axios.js文件 import axios from axios;export default defineNuxtPlugin(nuxtApp > {const axiosInstance axios.create({baseURL: , // 设置你的API基础URLtimeout: 10000, // 设置请求超时时间});// 可以添加请求拦截器等axiosInstance.intercep…

Python-04BeautifulSoup网络爬虫

2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…

【EB-07】TC397 Tresos 导入通信ARXML

TC397 Tresos 导入通信ARXML 1. 导入通信ARXML1.1 创建导入规则1.2 创建导入wizard2 优化ARXML2.1 查看优化效果1. 导入通信ARXML 1.1 创建导入规则 1.2 创建导入wizard EB Tresos不像其他工具会自动加入模块,需要我们手动去加入对应的模块

Elasticsearch 限制索引大小与索引模板匹配冲突解决方案

文章目录 背景介绍环境限制索引大小创建 ILM&#xff08;索引生命周期管理&#xff09;策略创建 ILM 策略 创建索引模板并关联 ILM 策略使用索引模板应用 ILM 策略 解决索引模板匹配冲突✅ 解决方案&#x1f539; 方案 1&#xff1a;修改 index_patterns&#xff08;推荐&#…

JS篇-关于javascript、ts互斥锁的作用和写法

一、一般情况下的单线程 JavaScript 在webworks和 Node.js 环境下&#xff0c;主线程通常是单线程执行的&#xff0c;这意味着同一时间只会执行一个任务&#xff0c;所以大部分情况下不需要传统意义上的互斥锁。 let counter 0;function increment() {counter;console.log(c…

AJAX 文件上传进度条 JAVA

JSP文件 <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>AJAX 文件上传进度条</title>…

OpenMCU(一):STM32F407 FreeRTOS移植

概述 本文主要描述了STM32F407移植FreeRTOS的简要步骤。移植描述过程中&#xff0c;忽略了Keil软件的部分使用技巧。默认读者熟练使用Keil软件。本文的描述是基于OpenMCU_FreeRTOS这个工程&#xff0c;该工程已经下载放好了移植stm32f407 FreeRTOS的所有文件 OpenMCU_FreeRTOS工…