基于STM32的BMP180气压传感器proteus仿真

概述

实现功能:通过STM32读取BMP180输出的数据通过串口及LCD显示屏,将高度,温度大气压强信息显示出来 仿真效果有些许误差,不能100%还原传感器,误差大概1%
仿真软件:proteus版本8.11 其他版本运行仿真会有问题
代码编写:keil5 基于HAL库

一、仿真效果

视频演示
在这里插入图片描述

二、代码

/**
 * @brief  主函数
 * @param  无
 * @retval 无
 */
int main(void)
{
    char str[80];
    extern long result_UT;
    extern long result_UP;
    u32 result_UPP, temp;
    float altitude;
    HAL_Init();
    /* 配置系统时钟为内部8M*/
    SystemClock_Config();

    /*初始化USART 配置模式为 115200 8-N-1,中断接收*/
    DEBUG_USART_Config();

    printf("\r\n 系统初始化\r\n");
    // LCD1602_GPIO_Config();   //开启GPIO口
    HAL_Delay(10); // 延时一段时间
    /* I2C 外设初(AT24C02)始化 */
    i2c_CfgGpio();
    Init_BMP180(); // 初始化bmp180
    LCD_init();
    HAL_Delay(10);

    while (1)
    {

        /*读取数据标志位*/
        bmp180Convert();
        // 添加报警 气压过低时候 高原地区气压低于600mmhg,而1mmhg=133.3p。所以为80000p
        altitude = 44330.0 * (1 - pow((float)result_UP / 101325, 1 / 5.255)); // 计算高度
        //		OLED_ShowNum(77,32,altitude,4,12);
        result_UPP = result_UP / 100;
        printf("大气压强 %d.%d 帕\r\n", result_UPP, result_UP % 100);
        result_UPP = altitude;
        printf(" 高度%d m\r\n", result_UPP);
        sprintf(str, "%dM %d.%dPa", result_UPP, result_UP / 100, result_UP % 100);
        LCD_write_string(1, 0, (char *)str);
        //		OLED_ShowNum(77,52,(u8)(result_UT*0.1),4,12);                        //显示温度整数部分 因为测量值例如为245没有小数点.....                                         //可以加一个判断 报警
        temp = result_UT; // 计算小数部分
        printf("温度  %d.%d 摄氏度\r\n", temp / 10, temp % 10);
        sprintf(str, " %d.%d C", temp / 10, temp % 10);
        LCD_write_string(1, 1, (char *)str);
        HAL_Delay(1000);
    }
}

关注公众号获取代码+仿真

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma_si

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值