采用stm32单片机+BMP180传感器+LCD1602显示屏,采用BMP180采集当前的大气压强和温度,通过得知当前的气压经过算法计算,就可以得知当前的海拔高度,然后通过LCD1602显示屏显示当前的相关参数,文末有资料分享:
7-基于stm32单片机气压计海拔高度温度检测LCD1602显示(程序+原理图+全套资料)
程序部分展示,有中文注释,新手容易看懂
void PWM_DAC_Set(u16 vol)
{
float temp=vol;
temp/=100;
temp=temp*256/3.3;
TIM_SetCompare1(TIM1,temp);
}
int main(void)
{
u16 adcx,b,adcx1;
u8 temperature=20;
u8 humidity=80;
delay_init(); //延时函数初始化
LED_Init(); //LED端口初始化
TIM3_Int_Init(4999,7199);
uart_init(9600);
LCD1602_Init();
BMP_Init(); //BMP180初始化
BMP_ReadCalibrationData(); //从BMP180的获取计算参数
while(1)
{
Show_Read_Data();//读取气压并且显示
}
}
//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
buf++;
if(buf>2)
{
buf=0;
if(s==0)//1个小时计时
{
t++;
}
if(s==1)//5分钟倒计时
{
t--;
if(t<0) t=0;
}
}
if(t>3600)//大于1小时 提醒
{
TIM_Cmd(TIM3, DISABLE); //使能TIM3
LED0=0;
}
}