资料编号:149 下面是相关功能视频演示:
149-基于stm32单片机BMP180气压计海拔高度温度测量Proteus仿真(源码+仿真+全套资料)
本设计:
基于STM32的BMP180气压传感器(仿真+程序)
Proteus仿真版本:proteus 8.9
程序编译器:keil 5
编程语言:C语言
设计说明:
通过STM32读取BMP180输出的数据通过串口及LCD显示屏,将高度,温度大气压强信息显示出来。
下面是该程序部分展示:
int main(void)
{
char str[80];
extern long result_UT;
extern long result_UP;
u32 result_UPP,temp;
float altitude;
HAL_Init();
/* 配置系统时钟为72 MHz */
SystemClock_Config();
/*初始化USART 配置模式为 115200 8-N-1,中断接收*/
DEBUG_USART_Config();
printf("\r\n 这是一个EEPROM 读写小数和长整数实验 \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);
}
}
下面是该资料的分享下载链接: