×
嵌入式 > 嵌入式开发 > 详情

基于ATMEGA128单片机压力的测量

发布时间:2021-04-26 发布时间:
|
本文以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,压力芯片资料可以在网上找到。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
USB接口定义图