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

news2024/9/20 18:45:27

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; // 换算为cm
    if ( (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模式1
    TH0 = 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.coloradmin.cn/o/1904576.html

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

相关文章

26_嵌入式系统网络接口

以太网接口基本原理 IEEE802标准 局域网标准协议工作在物理层和数据链路层,其将数据链路层又划分为两层,从下到上分别为介质访问控制子层(不同的MAC子层,与具体接入的传输介质相关),逻辑链路控制子层(统一的LLC子层,为上层提供统…

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展(无规律数据) 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

MATLAB制作一个简单的函数绘制APP

制作一个函数绘制APP,输入函数以及左右端点,绘制出函数图像。 编写回调函数: 结果:

D1.排序

1.快速排序 双指针 采用分治的思想,基于一个数作为标准,进行分治 步骤: 确定分界点的值。x q[l]、q[(lr)/2]、q[r]、随机 都可以;划分区间:使得小于等于x的数放在数组的左边;大于等于x的数放在数组的右边…

【C语言】 —— 编译和链接

【C语言】 —— 编译和链接 一、编译环境和运行环境二、翻译环境2.1、 预处理2.2、 编译(1)词法分析(2)语法分析(3)语义分析 2.3、 汇编2.4、链接 三、运行环境 一、编译环境和运行环境 平时我们说写 C语言…

【电机控制】EG2134无刷电机驱动、控制一体板——开环、无感SMO验证

【电机控制】EG2134无刷电机驱动、控制一体板——开环、无感SMO验证 文章目录 前言一、硬件二、软件三、开环SVPWM四、SMO无感观测器闭环控制五、参考文献总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 【电机控制】EG2134无感FOC驱控一体板-滑模观测器 使用…

详解Linux的shell脚本基础指令

一、shell简介 是Linux系统的用户界面,它提供用户与内核的一种交互方式。它接收用户输入的命令,并把它送入内核去执行,是一个命令解释器。 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以…

数学系C++(六七)

目录 * &指针与地址 void指针 指针可以等于: const 指向常量的指针 const int *px 常指针 int * const px 指向常量的常指针const 类型标识符 * const 指针名 指针加减: 指针恒等式 函数指针【待续】 指针型函数: 指向函数的…

【mindspore进阶】02-ResNet50迁移学习

Mindspore 应用(2)ResNet50迁移学习 在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍的做法是,在一个非常大的基础数据集上训练得到一个预训练模型,然后使用该模型来初始化…

关于Python的电影信息爬取与数据可视化分析报告

目录 1 引言 1.1 研究背景 1.2 研究目的 1.3 研究意义 2 相关技术介绍 2.1 Python语言及其应用领域 2.2 网络爬虫技术 2.3 数据可视化技术 2.4 PyCharm 2.5 Jupyter Notebook 3 数据爬取 4 数据预处理 5 数据分析及可视化 5.1数据分析背景 5.2从电影评分角度分析…

嵌入式开发SPI基本介绍与应用

目录 #SPI通信协议 #SPI基础概念 #SPI通信模式 #SPI通信时序类型 前言:本篇笔记参考嘉立创的开发文档,连接放在最后。 #SPI通信协议 #SPI基础概念 Serial Peripheral Interface 缩写SPI 翻译:串行外设接口 同步串行通信协议&…

运维系列.Nginx配置中的高级指令和流程控制

运维专题 Nginx配置中的高级指令和流程控制 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/…

镭速实现大文件传输软件预览功能

在当前的数字时代,大文件传输软件成为了提高工作效率和文件管理便捷性的关键工具。镭速作为其中的一员,以其独特的功能和优势,为用户提供了多样化的文件预览和传输解决方案。 目前镭速支持对文档格式文件,一般图片格式及视频格式…

非比较排序 计数排序

1.核心思路 首先要找出max 和 min,最大值 - 最小值 1,就可以计算出数据在什么范围然后创建计数数组大小,a[i] - min 在数组的相对位置计数 通过自然序列排序然后把计数好的值,按照顺序依次放回原数组即可 动图解释,其…

Nettyの源码分析

本篇为Netty系列的最后一篇,按照惯例会简单介绍一些Netty相关核心源码。 1、Netty启动源码分析 代码就使用最初的Netty服务器案例,在bind这一行打上断点,观察启动的全过程: 由于某些方法的调用链过深,节约篇幅&#xf…

Nuxt框架中内置组件详解及使用指南(二)

title: Nuxt框架中内置组件详解及使用指南(二) date: 2024/7/7 updated: 2024/7/7 author: cmdragon excerpt: 摘要:“本文详细介绍了Nuxt 3中和组件的使用方法,包括组件的基本概念、属性、自定义属性、获取引用以及完整示例&a…

利用redis Zset实现 排行榜功能 配合xxl-job持久化每一个赛季的排行榜

zset 可以排序 使用xxl-job实现定时任务 对历史排行榜持久化到数据库 排行榜有当前赛季排行版和历史排行榜 当前赛季排行榜利用redis 中的SortSet 数据结构 获取 每个月的 月初 利用xxl-job的定时任务持久化化上一个月的排行榜信息 并删除redis中的数据 当排行榜数据量巨大时…

【技术追踪】GeCA:高分辨率医学图像合成的神经元胞扩散(MICCAI-2024)

扩散方法与传统方法相结合,挺有意思~ 本文提出一种称为生成式元胞自动机 (Generative Cellular Automata,GeCA) 的新模型系列,其灵感来自于生物体从单细胞进化而来的过程,显著提高了11 种不同眼科疾病分类任务的表现。 论文&#…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到,请教公司前辈解决,简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完…

ES7210高性能四通道音频ADC转换模拟麦克风为IIS数字咪头

特征 高性能多位 Delta-Σ 音频 ADC 102 dB 信噪比 -85 分贝 THDN 24 位,8 至 100 kHz 采样频率 I2S/PCM 主串行数据端口或从串行数据端口 支持TDM 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 低功耗待机模式 应用 麦克风阵列 智能音箱 远场语音捕获 订购…