微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ATMEGA128单片机压力的测量

基于ATMEGA128单片机压力的测量

时间:11-21 来源:互联网 点击:
本文以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,压力芯片资料可以在网上找到。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top