新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機控制的數字氣壓計設計與實現

        基于51單片機控制的數字氣壓計設計與實現

        作者: 時間:2011-12-28 來源:網絡 收藏

        圖3

        3.3

        實現方案需使用的P1口和P3口的一部分以及一個中斷源、一個定時器和一個計數器。因此,筆者選用了ATMEL的AT89C2051,該器件與89C51兼容,具有2kB的可重復編程閃存,2.7V~6V的工作電壓范圍,128Byte的內部RAM以及兩個I/O口(P1,P3)、2個16位的計數器/定時器和6個中斷源,并可直接驅動LED輸出,同時帶有可編程的串行通訊口。另外,該單片機還具有體積小,價格低等特點。

        3.4 LED顯示

        單個LED是由7段發光二極管構成的顯示單元。有10個引腳,對應于7個段、一個小數點和兩個公共端。在顯示電路中,這些發光二極管有兩種接法:共陽極接法和共陰極接法。本設計中需要用4個LED組成顯示單元,并采用動態顯示方式。基于51單片機控制的數字氣壓計設計與實現由于使用4個單個LED進行顯示的連線比較復雜,同時單片機的端口驅動能力也難以保證,而需要加入專門的驅動芯片。所以,筆者采用了4個LED連體的、內部已將其相應段接好的共陽極LED,它具有12個引腳,含7個段和4個公共端,為提高數碼管的亮度,可在位選線上加入一個三極管驅動電路。

        由AT89C2051控制的顯示電路如圖3所示。該顯示電路需要選取合適的電阻R和Ra,才能保證LED的亮度,過大或者過小都無法讓LED正常顯示。設計時取R為4.7kΩ?Ra為510Ω比較理想。若考慮印制板布線的方便,可以采用貼片電阻和排阻來節省空間。另外,也可以用74LS244和74LS06構成驅動顯示電路,但這樣同樣要加限流電阻。因為74LS06是開漏器件,需要在輸出處加上拉電阻。

        4 軟件實現

        通過以上設計,便可通過fo來計算P的大小以得到實時的氣壓值。硬件電路設計完成之后,可使用AEDK5196PH仿真器的仿真環境進行仿真,并可用C51語言來編寫處理程序。其基本程序流程如圖4所示。

        程序設定:T0為定時器,基本的定時時基為50ms。T1為計數器,運用內部中斷0可保證T0定時滿500 ms后就讀取此時計數器的值,以計算氣壓值。如使T1、T0均工作于方式1,并在P1口送字型碼,同時可用P3.0~P3.3做位選線,那么,其相應的函數如下:

        (1)定時器T0中斷函數:

        void timer0(void) interrupt 1 using 1

        {uint x, y;

        uint count_ pluse;

        ET0=0; //關閉T/C0中斷

        Tcount++; //中斷次數

        if?Tcount == 10){

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

        Tcount=0;

        x=TH1;

        y=TL1;

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

        ph=(uint)(10 * ((float)(count pulse+1520)/105.9? ?? //計算氣壓值

        TH1 = 0x00;  //重設計數初值

        TL1=0x00;

        }

        TH0 = -50000/256; //重設50ms初值

        TL0 = -50000%256;

        if(TL0!= 0) TH0--;

        ET0=1;

        TR1=1;

        return;

        }

        脈沖點火器相關文章:脈沖點火器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永春县| 大邑县| 沽源县| 离岛区| 五原县| 霍山县| 巫溪县| 张家界市| 喀喇沁旗| 宜兰县| 安多县| 济源市| 保康县| 扎兰屯市| 天水市| 读书| 射洪县| 永安市| 泾阳县| 伊金霍洛旗| 大兴区| 崇仁县| 耿马| 锡林浩特市| 安宁市| 乌鲁木齐县| 诸城市| 盐亭县| 沙雅县| 伽师县| 辛集市| 平凉市| 泾源县| 景泰县| 庄浪县| 郓城县| 化德县| 奉节县| 建瓯市| 彩票| 大理市|