2024-09-01
售卖作品
00

目录

实验报告:基于51单片机的身高体重测量仪设计
背景介绍
硬件介绍
设计原理
电路原理
程序原理
主要函数解析
结论
资料

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指示灯的亮灭。

主要函数解析

c
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
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!