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

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

基于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.kler.cn/a/569249.html

相关文章:

  • C++STL---<limits>
  • 【Redis学习】Redis Docker安装,自定义config文件(包括RDB\AOF setup)以及与Spring Boot项目集成
  • Github 仓库 git clone 速度过慢解决方案
  • Spring Cloud GateWay搭建
  • C++中的“结界”机制:作用域与变量可见性探秘
  • 使用cmake preset + vs2022构建Qt C++项目
  • Composer如何通过GitHub Personal Access Token安装私有包:完整教程
  • el-input实现金额输入
  • SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型
  • leetcode第40题组合总和Ⅱ
  • 安装Maven配置阿里云地址 详细教程
  • P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair
  • spring boot整合flyway实现数据的动态维护
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(9)
  • 【无标题】Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错
  • Apollo canbus 学习笔记
  • 【Jenkins】个人向-Jenkinsfile如何写
  • git 中 commit 的修改
  • Ubuntu 防火墙iptables和 ufw
  • C# 13与.NET 9革新及工业开发应用