本文以MPX4250做為壓力傳感器,通過(guò)測(cè)量輸出端電壓來(lái)計(jì)算實(shí)際的壓力,使用ATMEGA128單片機(jī)作為系統(tǒng)的CPU,來(lái)讀取電壓,并進(jìn)行轉(zhuǎn)換。由于做實(shí)物不僅要耗費(fèi)金錢(qián),還要耗費(fèi)大量的時(shí)間用來(lái)做板子,焊接元器件。本系統(tǒng)采用了Proteus仿真,只需要畫(huà)畫(huà)電路圖就可以做出類(lèi)似實(shí)物的效果。通過(guò)測(cè)試,只要選取合適的參數(shù),基本上能正確的讀出壓力值,至于參數(shù)選取不合適,誤差不會(huì)太大,對(duì)于廣大初學(xué)單片機(jī),或是對(duì)壓力傳感器比較模糊的初學(xué)者來(lái)說(shuō)具有很大的學(xué)習(xí)價(jià)值。仿真圖:
程序源代碼:
本文引用地址:http://m.butianyuan.cn/article/201611/319579.htm#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};
//數(shù)碼管顯示函數(shù)
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相關(guān)設(shè)置
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; }
說(shuō)明:軟件用的是GCC,壓力芯片資料可以在網(wǎng)上找到。
評(píng)論