新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ATMEGA128單片機壓力的測量

        基于ATMEGA128單片機壓力的測量

        作者: 時間:2016-11-21 來源:網絡 收藏
        本文以MPX4250做為壓力傳感器,通過測量輸出端電壓來計算實際的壓力,使用ATMEGA128單片機作為系統的CPU,來讀取電壓,并進行轉換。由于做實物不僅要耗費金錢,還要耗費大量的時間用來做板子,焊接元器件。本系統采用了Proteus仿真,只需要畫畫電路圖就可以做出類似實物的效果。通過測試,只要選取合適的參數,基本上能正確的讀出壓力值,至于參數選取不合適,誤差不會太大,對于廣大初學單片機,或是對壓力傳感器比較模糊的初學者來說具有很大的學習價值。

        仿真圖:

        程序源代碼:

        本文引用地址:http://www.104case.com/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};

        //數碼管顯示函數

        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,壓力芯片資料可以在網上找到。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 霍山县| 威远县| 通榆县| 南宁市| 闽侯县| 腾冲县| 仙游县| 册亨县| 安西县| 阳西县| 临桂县| 屏山县| 门源| 靖边县| 安西县| 洮南市| 汾阳市| 顺平县| 米脂县| 南郑县| 陆河县| 苏州市| 高雄县| 云安县| 乌兰察布市| 桦南县| 高台县| 余姚市| 固原市| 明溪县| 江达县| 蒙城县| 河源市| 宝坻区| 潍坊市| 阳江市| 合阳县| 博湖县| 灌南县| 金门县| 如东县|