新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MPX4105數字氣壓計設計

        基于MPX4105數字氣壓計設計

        作者: 時間:2016-11-18 來源:網絡 收藏
        單片機不僅可以用于溫度測量,也可以用來測量氣壓這類非電信號,就要用到氣壓傳感器。氣壓傳感器的原理是將氣壓信息轉換為電流或者電壓輸出,轉換后的電壓或者電流常為模擬信號,因此還必須進行A/D轉換,以滿足單片機的接口需要。在學習了溫度傳感器的是使用后,結合MPX4105氣壓傳感器,學習了數字氣壓機的設計。

        本文引用地址:http://www.104case.com/article/201611/315964.htm

        主要器件:

        1、AT89C52單片機芯片,采集、控制、處理傳感器的氣壓信息。

        2、MPX4105集成壓力傳感器。

        3、電壓/頻率轉換器為LM331高精度V/F轉換芯片。

        4、三端低電流線性穩壓芯片MC78L05輸出穩定的+5v電壓。

        試驗流程圖:

        試驗電路圖:

        試驗程序代碼:

        //DigAirPress.h程序

        #ifndef_DIGAIRPRESS_H//防止DigAirPress.h被重復引用

        #define_DIGAIRPRESS_H

        #include //引用標準庫的頭文件

        #include

        #include

        #include

        #define uchar unsigned char

        #define uint unsigned int

        #define K 2000// K為V/F轉換增益常數

        uchar PressVal;//氣壓值

        uchar count;//計數器

        #endif

        // DigAirPress.c程序

        #include "DigAirPress.h"

        void display();

        /*定時器0中斷*/

        void timer0() interrupt 1 using 1

        {

        uint x,y;

        uint fo;

        ET0 = 0;//關閉定時器0中斷

        count++;

        if (count == 10)// 500ms

        {

        TR1 = 0;//停止計數器1

        count = 0;

        x = TH1;

        y = TL1;

        /*計算頻率值,由于是500ms所以需乘以2 */

        fo = (x*256+y)*2;

        /*根據推算出來的公式P=20fo/K+9計算氣壓值*/

        PressVal = (uint)(20*(float)(fo)/K+9);

        /*顯示函數,將計算出的PressVal值通過5位數碼管(4位數字和1位小數點)

        顯示出來,顯示精度為0.1,即保留小數點后一位。此函數本例中略去。*/

        display();

        /*計數器1清0 */

        TH1 = 0;

        TL1 = 0;

        }

        /*重置TH0和TL0 */

        TH0 = -50000/256;

        TL0 = -50000%256;

        ET0 = 1;//打開定時器0中斷

        TR1 = 1;//啟動計數器1

        return;

        }

        /*主程序*/

        void main(void)

        {

        EA = 1;

        ET0 = 1;//打開定時器0中斷

        /*設置T1為16位計數器,T0為16位定時器*/

        TMOD = 0x51;

        /*定時器0為50ms定時*/

        TH0 = -50000/256;

        TL0 = -50000%256;

        /*定時器1從0開始計數*/

        TH1 = 0;

        TL1 = 0;

        TR0 = 1;//啟動定時器0

        TR1 = 1;//啟動計數器1

        count = 0;

        /*開始無限循環,等待中斷到來*/

        while (1);

        }

        void display(void)

        {

        //本例中略去

        }



        關鍵詞: MPX4105數字氣壓

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宾阳县| 鹤峰县| 德庆县| 秀山| 玛纳斯县| 陆河县| 彰化县| 政和县| 玛曲县| 福建省| 咸阳市| 肃宁县| 北海市| 汾阳市| 双峰县| 潜江市| 固镇县| 吐鲁番市| 北辰区| 芜湖县| 巴林右旗| 墨江| 获嘉县| 文成县| 陵川县| 赫章县| 拉萨市| 翁牛特旗| 洛扎县| 丰镇市| 青神县| 广昌县| 门头沟区| 南雄市| 玉屏| 万荣县| 浦县| 炉霍县| 简阳市| 泽普县| 尚志市|