单片机不只能够用于温度丈量,也能够用来丈量气压这类非电信号,就要用到气压传感器。气压传感器的原理是将气压信息转化为电流或许电压输出,转化后的电压或许电流常为模拟信号,因而还必须进行A/D转化,以满意单片机的接口需求。在学习了温度传感器的是使用后,结合MPX4105气压传感器,学习了数字气压机的规划。
首要器材:
1、AT89C52单片机芯片,收集、操控、处理传感器的气压信息。
2、MPX4105集成压力传感器。
3、电压/频率转化器为LM331高精度V/F转化芯片。
4、三端低电流线性稳压芯片MC78L05输出安稳的+5v电压。
实验流程图:
实验电路图:
实验程序代码:
//DigAirPress.h程序
#ifndef_DIGAIRPRESS_H//避免DigAirPress.h被重复引证
#define_DIGAIRPRESS_H
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define K 2000// K为V/F转化增益常数
uchar PressVal;//气压值
uchar count;//计数器
#endif
// DigAirPress.c程序
#include “DigAirPress.h”
void display();
/*守时器0中止*/
void timer0() interrupt 1 using 1
{
uint x,y;
uint fo;
ET0 = 0;//封闭守时器0中止
count++;
if (count == 10)// 500ms
{
TR1 = 0;//中止计数器1
count = 0;
x = TH1;
y = TL1;
/*核算频率值,由所以500ms所以需乘以2 */
fo = (x*256+y)*2;
/*依据推算出来的公式P=20fo/K+9核算气压值*/
PressVal = (uint)(20*(float)(fo)/K+9);
/*显现函数,将核算出的PressVal值经过5位数码管(4位数字和1位小数点)
显现出来,显现精度为0.1,即保存小数点后一位。此函数本例中省略。*/
display();
/*计数器1清0 */
TH1 = 0;
TL1 = 0;
}
/*重置TH0和TL0 */
TH0 = -50000/256;
TL0 = -50000%256;
ET0 = 1;//翻开守时器0中止
TR1 = 1;//发动计数器1
return;
}
/*主程序*/
void main(void)
{
EA = 1;
ET0 = 1;//翻开守时器0中止
/*设置T1为16位计数器,T0为16位守时器*/
TMOD = 0x51;
/*守时器0为50ms守时*/
TH0 = -50000/256;
TL0 = -50000%256;
/*守时器1从0开端计数*/
TH1 = 0;
TL1 = 0;
TR0 = 1;//发动守时器0
TR1 = 1;//发动计数器1
count = 0;
/*开端无限循环,等候中止到来*/
while (1);
}
void display(void)
{
//本例中省略
}