新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于RlTOS和ISP功能數字儀表系統設計實現

        基于RlTOS和ISP功能數字儀表系統設計實現

        作者: 時間:2012-02-09 來源:網絡 收藏

        void SetPage(unsigned char page0,unsigned char pagel)

        {

        MasterWriteI(0xb8 | pagel);

        SlaveWriteI(0xb8 | page0);

        }

        void SetColumn(unsigned char address0,unsigned char addressl)

        {

        MasterWriteI(0x3f addressl);

        SlaveWfiteI(0x3f address0);

        }

        //在主控制器操作的左邊LCM屏上顯示一列信息(由8個像素點構成)

        void MasterPutChar(unsigned char masterchar)

        {

        ReadState();

        MasterWriteD(masterchar);

        }

        一般說來。AT89S52的RAM存儲空間是有限的,而圖形或字符的點陣代碼(可以下載相關的應用插件,由.bmp文件或字符自動生成)如果太大,放置到RAM區會出現內存不足的告警提示,為此可按如下方式處理:

        unsigned char code Dotn[]=lOxOO,Ox00,0x30,

        0x00,0x30,Ox00,Ox00,0x00};

        即將點陣代碼通過code關鍵字限定后放于ROM區域內。

        }

        return(midtemp);

        }

        void delay(unsigned char out)

        {

        unsigned char in;

        for(in=out;in>O;in--);

        }

        4 的結構原理

        功能集成到成型的PCB上就可以實現程序的實時更新與升級操作,其結構原理如圖5所示,這對于復雜工程系統設計顯然是很方便的,也是切實可行的。

        55

        5 結論

        隨著智能儀器儀表技術的發展,顯示模塊的液晶化已成為一種較為流行的趨勢。本文給出的軟硬件設計方案已在某武器系統的調試過程中得到正確、可靠、穩定的運行。它不僅克NT模似儀表體積大、故障率高的缺陷,而且由于運用了技術,使數據檢測的敏捷度得到大幅提升。另外,功能的在線集成也為系統功能的擴充預留了空間。


        3.3 DSl8820的1-Wire子程序

        DSl8820的突出優點是將現場采集的環境溫度直接以數字形式輸出,這樣可以省去后續的信號放大及模/數轉換部分,構建外圍電路的元件少且相對簡單,系統成本低廉;1-Wire接口與AT89S52通信,其結構便于多點測量且易于擴展;測溫范圍寬(-550℃~1250℃)且精度高。

        對l-Wire的操作關鍵是軟件時序的處理,對于不同的晶體振蕩器其延時參數是不同的,本系統以12MHz為例給出如下主要程序代碼:

        bit DallassReset(void)

        {

        unsigned char presence=0;

        DallassDataout=1; //發出復位脈沖前先釋

        放總線

        delay(10);

        DallassDataout=0;

        delay(240);//保證延時在4801μs~9601μs之間

        DaUassDataout=1;

        delay(35);

        Dresence=DallassDataout;

        delay(60);

        return(presence);

        }

        //寫時序從主控制器把總線拉低時開始

        void writeCommand(unsigned char command)

        {

        unsigned char count;

        for(count=O;count8;count++)

        {

        DallassDataout=0;

        if(command0x01==1)

        {

        DallassDataout=1;

        //寫“1”時序在將總線拉低后,AT89S52主控制器必須在15μs內釋放總線,所以此語句之前不能有較長時間的延時語句

        }

        delay(35);//無論寫“1”還是寫“0”時序都必須有至少601as的低電平 DallassDataout=1;//總線恢復的過程

        command=command>>1;

        }

        }

        //讀時序從主控制器將總線拉低至少1μs后釋放總線的時刻開始

        unsigned char readdata(void)

        {

        unsigned char value;

        unsigned char midtemp=0;

        for(value=0;value8;Value++)

        {

        I DallassDataout=0;

        midtemp=midtemp>>1;

        -nop_O;

        _nop_O;

        DallassDataout=1;

        //讀時序時,控制器必須在15μs內釋放總線,然后采樣總線狀態,所以此語句之前不能延時太長的時間的延時語句

        if(DallassDataout==1)

        {

        midtemp=midtemp | 0x80;

        //因為midtemp初始被賦值為0,所以如果采樣總線狀態為0則不必處理,0會自動被返回

        }

        delay(35);

        //延時70μs完成此次Bit

        位讀時序過程,為下一次讀作準備

        電能表相關文章:電能表原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 杭州市| 隆安县| 修武县| 隆子县| 安国市| 黄平县| 棋牌| 青州市| 永胜县| 恭城| 遂平县| 儋州市| 平利县| 玛多县| 龙江县| 抚顺县| 瑞安市| 沧州市| 翼城县| 格尔木市| 达日县| 益阳市| 光泽县| 敦化市| 邵武市| 凤城市| 邛崃市| 缙云县| 金昌市| 杭州市| 黄陵县| 平度市| 沙坪坝区| 青田县| 建始县| 白水县| 崇文区| 建瓯市| 胶州市| 黎川县| 龙州县|