数字气压计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附
#include<reg51.H>
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit ADCS =P2^0;
sbit ADDI =P3^7;
sbit ADDO =P3^7;
sbit ADCLK =P3^6;
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;
ADCLK=1;
_nop_();
86.0
96.0
106.0
114.8
116.0
测量值
50.2
59.7
69.3
78.9
88.4
98.0
107.1
115.8
115.8
误差
4.2
3.7
3.3
2.9
2.4
2.0
1.1
1.0
0.2
图11超出量程
图12 气压测量结果
第
经仿真数据反馈,气压值越低,测量误差越大。气压值在96-114.8之间时测量结果较为准确。当气压值超过114.8时,由于超出量程,气压表无法正确显示。
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
{
P1=dispbitcode[k];
P0=dispcode[dispbuf[k]];
if(k==1)
P0&=0x7f;
delay_1ms();
}
}
unsigned int adc0832(unsigned char channel)
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
本设计采用四位七段共阳LED显示模块,以简化程序设计。如图5所示。
图4四位七段共阳LED显示模块
2.1.4
本设计采用四位七段共阳LED显示模块,以简化程序设计。气压传感器MPX4115将气压值转换成电压值输出,经ADC0832转换成数字量,并送单片机处理,然后在数码管上显示。
图5数字气压计的原理图
2.2
引脚
功能
引脚
功能
1
输出电压
4
悬空
2
GND
5
悬空
3
5V电源
6
悬空
表2MPX4115的引脚功能
2.1.2
ADC0832是一种八位分辨率,双通道A/D转换芯片。是8引脚双列直插式封装,5V电源供电,输入电压为0~5V,工作频率为250kHz,转换时间为32us。如图4所示。
图3ADC0932的引脚
2.1.3
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
=0;
_nop_();
_nop_();
ADCLK=1;
dispbuf[1]=((temp%1000)%100)/10;
dispbuf[0]=((temp%1000)%100)%10;
display();
}
}
}
_nop_();
ADCLK=0;
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;
ADCLK=0;
ADDO=1;
dat<<=8;
dat|=ndat;
return(dat);
}
void main(void)
{
while(1)
{
unsigned int temp;
2.2.1
系统启动后,首先进行系统初始化,然后启动ADC0832对传感器的输出电压进行转换,再讲数字电压信号进行处理,最后将气压值显示在数码管上。其流程如图6所示。
图6数字气压计的数字流程
2.2.2
ADC0832的工作有严格的时序,由单片机控制产生必要的时序信号,控制ADC0832将MPX4115输出的模拟信号转换为数字信号,其流程如图7所示。
第
数字气压计通过气压传感器MPX4115获得与大气压相对的模拟电压值,经过ADC0832将模拟电信号转换为数字信号,并送给单片机处理,然后将气压值输出显示在LED数码管上,如图1所示。
图1数字气压计的系统原理
第
2.1
2.1.1
系统选用MPX4115单片集成硅压力传感器,它集成度高,质量小,尺寸小,具有测量准确度高,预热时间短,响应速度快,长期稳定,可靠性高,过载能力强等优点。它的工作温度适应条件很宽,工作电压为5V的直流电源,它把压感单元、温度补偿单元、电压放大电路、模拟信号输出单元等集成在一个芯片上,使用非常方便。其引脚功能如表3所示。
unsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f};
unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
unsigned char dispbuf[4];
uint temp;
uchar getdata;
void delay_1ms(void)
{
unsigned char x,y;
x=3;
while(x--)
{
y=40;
while(y--);
}
}
void display(void)
{
char k;
for(k=0;k<4;k++)
float press;
getdata=adc0832(0);
if(14<getdata<245)
{
int vary=getdata;
press=((10.0/23.0)*vary)+15;
temp=(int)(press*10);
dispbuf[3]=temp/1000;
dispbuf[2]=(temp%1000)/100;
图7数字气压计的A-D转换流程
第
系统启动后,首先进行系统初始化,然后启动ADC0832对传感器的输出电压进行转换,再将数字电压信号进行处理,最后将气压值显示在数码管上。
图8 气压值为46时的测量结果
图9 气压值为86时的测量结果
图10 气压值为106时的测量结果
气压值
46.0
56.0
66.0
76.0
摘 要
为了测量环境中的气压,设计了基于气压传感器MPX4115的数字气压计系统。系统通过气压传感器MPX4115获得与气压相对的模拟电压值,并经过AD转换模块转换为数字脉冲,通过单片机对此脉冲序列的计数等处理后获得实际的气压值,并通过数码管显示电路显示。在有效量程内进行测试,发现气压低的时候,系统误差较大;气压越高,系统性能越好。
#include<reg51.H>
#include"intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit ADCS =P2^0;
sbit ADDI =P3^7;
sbit ADDO =P3^7;
sbit ADCLK =P3^6;
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;
ADCLK=1;
_nop_();
86.0
96.0
106.0
114.8
116.0
测量值
50.2
59.7
69.3
78.9
88.4
98.0
107.1
115.8
115.8
误差
4.2
3.7
3.3
2.9
2.4
2.0
1.1
1.0
0.2
图11超出量程
图12 气压测量结果
第
经仿真数据反馈,气压值越低,测量误差越大。气压值在96-114.8之间时测量结果较为准确。当气压值超过114.8时,由于超出量程,气压表无法正确显示。
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
{
P1=dispbitcode[k];
P0=dispcode[dispbuf[k]];
if(k==1)
P0&=0x7f;
delay_1ms();
}
}
unsigned int adc0832(unsigned char channel)
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
本设计采用四位七段共阳LED显示模块,以简化程序设计。如图5所示。
图4四位七段共阳LED显示模块
2.1.4
本设计采用四位七段共阳LED显示模块,以简化程序设计。气压传感器MPX4115将气压值转换成电压值输出,经ADC0832转换成数字量,并送单片机处理,然后在数码管上显示。
图5数字气压计的原理图
2.2
引脚
功能
引脚
功能
1
输出电压
4
悬空
2
GND
5
悬空
3
5V电源
6
悬空
表2MPX4115的引脚功能
2.1.2
ADC0832是一种八位分辨率,双通道A/D转换芯片。是8引脚双列直插式封装,5V电源供电,输入电压为0~5V,工作频率为250kHz,转换时间为32us。如图4所示。
图3ADC0932的引脚
2.1.3
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
=0;
_nop_();
_nop_();
ADCLK=1;
dispbuf[1]=((temp%1000)%100)/10;
dispbuf[0]=((temp%1000)%100)%10;
display();
}
}
}
_nop_();
ADCLK=0;
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;
ADCLK=0;
ADDO=1;
dat<<=8;
dat|=ndat;
return(dat);
}
void main(void)
{
while(1)
{
unsigned int temp;
2.2.1
系统启动后,首先进行系统初始化,然后启动ADC0832对传感器的输出电压进行转换,再讲数字电压信号进行处理,最后将气压值显示在数码管上。其流程如图6所示。
图6数字气压计的数字流程
2.2.2
ADC0832的工作有严格的时序,由单片机控制产生必要的时序信号,控制ADC0832将MPX4115输出的模拟信号转换为数字信号,其流程如图7所示。
第
数字气压计通过气压传感器MPX4115获得与大气压相对的模拟电压值,经过ADC0832将模拟电信号转换为数字信号,并送给单片机处理,然后将气压值输出显示在LED数码管上,如图1所示。
图1数字气压计的系统原理
第
2.1
2.1.1
系统选用MPX4115单片集成硅压力传感器,它集成度高,质量小,尺寸小,具有测量准确度高,预热时间短,响应速度快,长期稳定,可靠性高,过载能力强等优点。它的工作温度适应条件很宽,工作电压为5V的直流电源,它把压感单元、温度补偿单元、电压放大电路、模拟信号输出单元等集成在一个芯片上,使用非常方便。其引脚功能如表3所示。
unsigned char dispbitcode[8]={0xf7,0xfb,0xfd,0xfe,0xef,0xdf,0xbf,0x7f};
unsigned char dispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
unsigned char dispbuf[4];
uint temp;
uchar getdata;
void delay_1ms(void)
{
unsigned char x,y;
x=3;
while(x--)
{
y=40;
while(y--);
}
}
void display(void)
{
char k;
for(k=0;k<4;k++)
float press;
getdata=adc0832(0);
if(14<getdata<245)
{
int vary=getdata;
press=((10.0/23.0)*vary)+15;
temp=(int)(press*10);
dispbuf[3]=temp/1000;
dispbuf[2]=(temp%1000)/100;
图7数字气压计的A-D转换流程
第
系统启动后,首先进行系统初始化,然后启动ADC0832对传感器的输出电压进行转换,再将数字电压信号进行处理,最后将气压值显示在数码管上。
图8 气压值为46时的测量结果
图9 气压值为86时的测量结果
图10 气压值为106时的测量结果
气压值
46.0
56.0
66.0
76.0
摘 要
为了测量环境中的气压,设计了基于气压传感器MPX4115的数字气压计系统。系统通过气压传感器MPX4115获得与气压相对的模拟电压值,并经过AD转换模块转换为数字脉冲,通过单片机对此脉冲序列的计数等处理后获得实际的气压值,并通过数码管显示电路显示。在有效量程内进行测试,发现气压低的时候,系统误差较大;气压越高,系统性能越好。