编号:68
基于STM32单片机的压力监测仪(MPX4115)
功能描述:
本设计由STM32单片机+MPX4115压力传感器+液晶1602模块
1、主控制器是STM32F103单片机
2、MPX4115压力传感器采集气压力,通过ADC0832模数转换器进行A/D转换,读取压力数据
3、液晶1602显示其压力值
视频演示链接:
68、基于STM32单片机的压力监测仪(MPX4115)
仿真图:
程序源码:
#include "delay.h"
#include "LCD1602.h"
#include "led.h"
#include "adc.h"
#include "stdio.h"
#include "stdlib.h"
int main(void)
{
unsigned char buf[20];
u32 adcx = 0; //AD值
float voltage = 0; //电压
unsigned int Pressure = 0; //方便计算 这是扩大十倍的压力值
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
Lcd1602_Init(); //液晶1602初始化
LED_Init();
Adc_Init();
Lcd1602_Write_Com(0x01);
LED_Init();
Lcd1602_String(0,0," MPX4115 Test ");
while(1)
{
adcx = Get_Adc_Average(ADC_Channel_0,10); //AD转换读取
/*
线性区间标度变换公式: y=(115-15)/(4.766-0.267)X+9.1kpa
这个公式是怎么来的呢?
测量115kPa时,AD转换后测得电压为0.267V
测量15kPa时, AD转换后的数字为4.766V
又因为压力与电压有线性关系,因此两者的比例关系为 y=(115-15)/(4.766-0.267))
再加上9.1kPa的修正值即可
*/
voltage =(float)adcx*(5.0/4096); //ADC值转换为电压值
if(voltage>=0.267&&voltage<4.766) //MPX4115在15kpa-115kpa之间是线性的
{
float Vary = voltage;
Pressure = (((100.0/4.499)*Vary)+9.1)*10; //压力计算公式 扩大十倍 方便计算
}
sprintf((char *)buf,(const char *)"Pressure:%5.1fkpa",(float)Pressure/10);
Lcd1602_String(0,1,buf); //显示
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg
提取码:ab58
文件下载:
链接: https://pan.baidu.com/s/1ilaCBEF9HBCxly61Z0-MaA?pwd=1234
提取码: 1234