00024 超声波LCD1602ADC0832

本实验设计并实现了一个基于51单片机的身高体重测量仪。该系统利用超声波传感器测量高度,通过ADC0832模数转换芯片获取重量数据,并使用LCD1602显示屏显示测量结果。该测量仪器可以自动检测身高和体重,并将结果显示在LCD上,适用于婴儿体检。
51单片机:作为主控芯片,负责整个系统的控制与数据处理。
LCD1602显示屏:用于显示测量结果,包括体重和身高。
超声波传感器:用于测量身高,包含Trig和Echo两个引脚,分别用于触发和接收超声波信号。
ADC0832模数转换芯片:用于将模拟重量信号转换为数字信号。
LED:用于指示状态,当重量大于500克时点亮。
系统电路主要包括以下几个部分:
超声波模块连接:
Trig (P1.6):连接超声波传感器的触发端。
Echo (P1.7):连接超声波传感器的接收端。
LED指示灯连接:连接在P3.1端口,用于指示重量状态。
LCD1602显示屏连接:用于显示测量结果。
程序主要分为以下几个模块:
初始化模块:
初始化LCD1602显示屏。
初始化定时器0,用于超声波测距。
初始化超声波传感器的引脚。
超声波测距模块:
通过触发Trig引脚发出超声波。
Echo引脚接收到回波信号后,通过定时器0计算时间,进而计算出距离。
根据测得的距离换算出身高。
重量测量模块:
使用ADC0832芯片获取重量的模拟信号并转换为数字信号。
通过计算公式将ADC结果转换为实际重量值。
显示模块:
指示灯控制模块:
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


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