本文以MPX4250做为
压力传感器,通过
测量输出端电压来计算实际的压力,使用
ATMEGA128单片机作为系统的CPU,来读取电压,并进行转换。由于做实物不仅要耗费金钱,还要耗费大量的时间用来做板子,焊接元器件。本系统采用了Proteus仿真,只需要画画电路图就可以做出类似实物的效果。通过测试,只要选取合适的参数,基本上能正确的读出压力值,至于参数选取不合适,误差不会太大,对于广大初学单片机,或是对压力传感器比较模糊的初学者来说具有很大的学习价值。
仿真图:
程序源代码:
#include
#include
#define F_CUP 7372800UL
#define uchar unsigned char
#define uint unsigned int
const uint segcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
uint dis_seg[]={0xF3,0,0,0};
//数码管显示函数
void display(void)
{
uint i=0;
for(i=0;i<4;i++)
{
PORTE=~_BV(i);
PORTB=dis_seg[i];
_delay_us(50);
}
}
int main(void)
{
int AD_Result,Pressure_Value;
DDRB=0xff;PORTB=0xff;
DDRE=0xff;PORTE=0xff;
DDRF=0x00;PORTF=0xff;
//AD相关设置
ADCSRA=0xE6;
_delay_ms(2);
ADMUX=0x07;//通道选择
while(1)
{
AD_Result=ADCL+(ADCH<8);
Pressure_Value=((AD_Result*5.0/1023.0-0.11)/5.0+0.04)/0.004;
dis_seg[1]=segcode[Pressure_Value/100];
dis_seg[2]=segcode[Pressure_Value0/10];
dis_seg[3]=segcode[Pressure_Value];
if(dis_seg[1]==0x3F)
{
dis_seg[1]=0x00;
if(dis_seg[2]==0x3F)
dis_seg[2]=0x00;
}
display();
}
return 0; }
说明:软件用的是GCC,压力芯片资料可以在网上找到。