【TB作品】51单片机 Proteus仿真 超声波LCD1602ADC0832 身高体重测量仪

00024 超声波LCD1602ADC0832
在这里插入图片描述

实验报告:基于51单片机的身高体重测量仪设计

背景介绍

本实验设计并实现了一个基于51单片机的身高体重测量仪。该系统利用超声波传感器测量高度,通过ADC0832模数转换芯片获取重量数据,并使用LCD1602显示屏显示测量结果。该测量仪器可以自动检测身高和体重,并将结果显示在LCD上,适用于婴儿体检。

硬件介绍

  1. 51单片机:作为主控芯片,负责整个系统的控制与数据处理。
  2. LCD1602显示屏:用于显示测量结果,包括体重和身高。
  3. 超声波传感器:用于测量身高,包含Trig和Echo两个引脚,分别用于触发和接收超声波信号。
  4. ADC0832模数转换芯片:用于将模拟重量信号转换为数字信号。
  5. LED:用于指示状态,当重量大于500克时点亮。

设计原理

电路原理

系统电路主要包括以下几个部分:

  1. 超声波模块连接
    • Trig (P1.6):连接超声波传感器的触发端。
    • Echo (P1.7):连接超声波传感器的接收端。
  2. LED指示灯连接:连接在P3.1端口,用于指示重量状态。
  3. LCD1602显示屏连接:用于显示测量结果。

程序原理

程序主要分为以下几个模块:

  1. 初始化模块

    • 初始化LCD1602显示屏。
    • 初始化定时器0,用于超声波测距。
    • 初始化超声波传感器的引脚。
  2. 超声波测距模块

    • 通过触发Trig引脚发出超声波。
    • Echo引脚接收到回波信号后,通过定时器0计算时间,进而计算出距离。
    • 根据测得的距离换算出身高。
  3. 重量测量模块

    • 使用ADC0832芯片获取重量的模拟信号并转换为数字信号。
    • 通过计算公式将ADC结果转换为实际重量值。
  4. 显示模块

    • 将测得的身高和体重显示在LCD1602上。
  5. 指示灯控制模块

    • 根据测量的重量控制LED指示灯的亮灭。

主要函数解析

uint Conut()
{static uint Time = 0, S = 0;Time = TH0 * 256 + TL0;TH0 = 0;TL0 = 0;S = (Time * 1.7) / 100; // 换算为cmif ( (S >= 700) || Flag_Ultrasonic == 1 ) // 超出测量范围{Flag_Ultrasonic = 0;S = 700;}return(S);
}void delay_ms( unsigned char x )
{unsigned char a, b, c;for ( c = x; c > 0; c-- ){for ( b = 102; b > 0; b-- )for ( a = 3; a > 0; a-- );}
}void Init_Timer0()
{TMOD &= 0xf0;TMOD |= 0x01; // 定时器0模式1TH0 = 0;TL0 = 0;ET0 = 1; // 使能定时器0中断EA = 1;  // 使能总中断
}void main()
{u8 disp[10];u8 count = 0;u16 distance = 0;int weight = 0;Trig = 0;Echo = 1;LED = 0;LCD_init();Init_Timer0();LCD_write_str(0, 0, "weight: 00.0 kg");LCD_write_str(0, 1, "height: 000  cm");delay_ms(100);while (1){weight = ((float)Get_AD_Result(0) * (10000.0 / 255.0));LCD_write_com(0x80 + 8);LCD_write_data(weight % 100000 / 10000 + '0');LCD_write_data(weight % 10000 / 1000 + '0');LCD_write_data('.');LCD_write_data(weight % 1000 / 100 + '0');TR0 = 0;TH0 = 0;TL0 = 0;Trig = 1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();Trig = 0;while (!Echo);TR0 = 1;while (Echo);TR0 = 0;distance = 204 - Conut();count = 0;disp[count++] = distance % 1000 / 100 + '0';disp[count++] = distance % 100 / 10 + '0';disp[count++] = distance % 10 / 1 + '0';disp[count++] = 0;LCD_write_str(8, 1, disp);if (weight > 500){LED = 1;}else{LED = 0;}}
}void Timer0() interrupt 1
{Flag_Ultrasonic = 1;
}

结论

本实验成功实现了基于51单片机的身高体重测量仪。通过使用超声波传感器测量身高,ADC0832芯片获取体重数据,并通过LCD1602显示屏显示结果,实现了体检仪的基本功能。该系统可以准确测量和显示婴儿的身高和体重,具有良好的实用性和可靠性。

资料

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

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

相关文章

Alt与Tab切换窗口时将Edge多个标签页作为一个整体参与切换的方法

本文介绍在Windows电脑中,使用Alt与Tab切换窗口时,将Edge浏览器作为一个整体参与切换,而不是其中若干个页面参与切换的方法。 最近,需要将主要使用的浏览器由原本的Chrome换为Edge;但是,在更换后发现&#…

桌面快充插线板+伸缩数据线,轻松实现1+1>2

手机、平板、笔记本等电子设备已成为我们日常工作和学习的必备工具。然而,随着设备数量的增加,充电问题也日益凸显。桌面空间有限,多个快充头不仅显得杂乱无章,而且效率低下,无法满足我们高效办公的需求。 在这样的背景下,倍思Nomos氮化镓100W桌面充电站凭借其创新的设计和强大…

SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目

1,如何打包一个项目 通过IDEA自带的命令行,执行 ./gradlew clean build 2,检查生成的JAR文件 进入 build/libs 目录,你应该会看到一个类似 helloredis-0.0.1-SNAPSHOT.jar 的文件。 3:运行生成的JAR文件 你可以在…

ESP32-C3-Arduino-uart

引脚图 2实现串口发送接收 1默认值初始化串口(默认是uart0) Serial.begin(UART_BAUD); 参数是波特率 2自定义其他串口 2-1创建实例 HardwareSerial SerialUART(0); //数值指的是uart0 1为uart1.。。。。 2-2初始化 SerialUART.begin(UART_BAU…

Docker运行MSSQL2022

安装地址: https://hub.docker.com/r/microsoft/mssql-server 拉取mssql容器镜像 docker pull mcr.microsoft.com/mssql/server 拉取成功 运行mssql镜像 docker run -e "ACCEPT_EULAY" -e "MSSQL_SA_PASSWORDAa123456" -p 1433:1433 -d mcr.microsof…

人工智能系列-Python面向对象编程

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 面向对象编程和面向过程编程 在使用计算机语言进行代码编写时,常见的两种思路是面向对象编程和面向过程编程。 面向过程:根据业务逻辑从上到下写代码。…

异常组成、作用、处理方式(3种)、异常方法、自定义异常

目录 异常的组成:运行异常与编译异常 两者区别:编译异常用来提醒程序员,运行异常大部分是由于参数传递错误导致 异常作用: 作用1:就是平时的报错,方便我们找到报错的来源 作用2:在方法内部…

一.2.(2)基本共射放大电路组成、工作原理;

1.基本共射放大电路组成 共什么取决于输入输出,共剩下的那一极 2.工作原理 输入信号ui通过电容C1加到三极管的基 极,引起基极电流iB的变化,iB的变化又使集电极电流ic发生变 化,且ic的变化量是iB变化量的β倍。由于有集电极电压&…

linux-虚拟内存-虚拟cpu

1、进程: 计算机中的程序关于某数据集合上的一次运行活动。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个…

Let‘s Encrypt 申请免费 SSL 证书(每隔60天自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构,旨在促…

2024世界人工智能大会,神仙打架

B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 该栏目以周更频率总结国内外前沿AI动态,感兴趣的可以点击订阅合集以及时收到最新推送 B站首秀世界人工智能大会,展示自研AI技术与AIGC…

人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析|文献速递·24-07-07

小罗碎碎念 本期文献主题:人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析 这一期文献的速递,是有史以来数量最大的一次,足足有十一篇,本来打算分两期写,但是为了知识的系统性,我决定咬咬牙&…

Partisia Blockchain 现已完成第一阶段空投,即将在DeFi领域发力

Partisia Blockchain 是以 MPC 方案为基础的 Layer1 生态,其具备可审计的隐私特性,同时还能保持链的可拓展、高迸发、可互操作以及安全等系列特性,Partisia Blockchain 被认为是目前最具潜力的企业级公链,并且估值高达 16 亿美元。…

远心镜头简介

一、远心镜头 大家都有这种印象,一个物体在人眼看来,会有近大远小的现象。这是因为物体近的时候,在视网膜上投影大,小的时候,投影小。镜头也是一样,因为近大远小的原因,会产生误差。特别是在做尺…

java项目总结8

1.方法引用 1.方法引用概述 注意注意: 1.引用出必须是函数式接口 2.被引用的方法必须已经存在 3.被引用方法的型参和返回值需要跟抽象方法保持一致 4.被引方法的功能要满足当前需求 Arrays.sort(arr,Main::subtraction); Main是该类的名称,&#xff1a…

C++20中的基于范围的for循环(range-based for loop)

C11中引入了对基于范围的for循环(range-based for loop)的支持&#xff1a;该循环对一系列值(例如容器中的所有元素)进行操作。代码段如下&#xff1a; const std::vector<int> vec{ 1,2,3,4,5 }; for (const auto& i : vec)std::cout << i << ", …

【server】nacos 安装

1、本地安装 1.1 nacos官网 Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 git 下载地址&#xff1a;https://github.com/alibaba/nacos/releases 1.2 解压并修改配置 1.2.1 通过properties 修改配置&#xff0c;添加数据库配置 1.2.2 创建数据库&…

数据库(表)

要求如下&#xff1a; 一&#xff1a;数据库 1&#xff0c;登录数据库 mysql -uroot -p123123 2&#xff0c;创建数据库zoo create database zoo; Query OK, 1 row affected (0.01 sec) 3&#xff0c;修改字符集 mysql> use zoo;---先进入数据库zoo Database changed …

利用docker搭建漏洞环境,使用SSRF+Redis写入centos以及ubuntu的公钥,实现免密登录

一、实验环境 kali:在kali中搭建docker容器环境&#xff0c;这里我主要是使用第一个&#xff1b; redis作为一种数据库&#xff0c;它可以将数据写入内存中去&#xff0c;我们通过利用ssrf请求&#xff0c;实现服务器对自己的公钥写入&#xff0c;从而实验免密登录&#xff1b;…

RK3568 GPU介绍及使用

一、RK3568简介 RK3568四核64位Cortex-A55 处理器&#xff0c;采用全新ARM v8.2-A架构&#xff0c;主频最高可达2.0GHz&#xff0c;效能有大幅提升&#xff1b;采用22nm先进工艺&#xff0c;具有低功耗高性能的特点RK3568集成了双核心架构 GPU&#xff0c;高性能VPU以及高效能…