新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MSP430單片機的智能溫度檢測系統設計

        基于MSP430單片機的智能溫度檢測系統設計

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

        3. 1. 2 寫一個字節子程序:

        CPU 將數據線從高電平拉至低電平, 產生寫起始信號; 15 微秒之內, 將所寫的位送到數據線上;DS18B20在之后15~ 60微秒接收位信息; 寫下一個位之前要有1秒以上的高電平恢復; 將以上過程重復8次, 即完成一個字節的寫操作。

        vo idWRDS18B20( unsigned char data0)

        { unsigned char ,i ;j

        for( j= 0; j 8; j+ + )

        {

        DS18B20= 0; / /高電平拉到低電平, 產生寫起始信號

        for( i= 0; i 1; i+ + ) ;

        DS18B20 = da ta0 0x01; / /15微秒內寫一位

        for( i= 0; i 20; i+ + ) ; / /等60微秒, DS18B20完成采樣

        DS18B20= 1; / /高電平恢復

        data0= data0> > 1; / /右移, 為下一位準備}

        }

        3. 1. 3 讀一個字節子程序

        CPU 將數據線從高電平拉到低電平1微秒以上, 再拉到高電平, 產生讀起始信號; 15微秒之內,CPU 讀一位; 讀周期為60微秒, 讀下一個位之前要有1微秒以上的高電平恢復; 將以上過程重復8次,即完成一個字節的讀操作。

        unsigned charRDDS18B20( )

        { unsigned char ,i ,j data0= 0;

        bit temp;

        for( j= 0; j 8; j+ + )

        { DS18B20= 0; / /高電平拉到低電平1微秒以上

        for( i= 0; i ;l i+ + ) ;

        DS18B20= 1; / /再拉到高電平, 產生讀起始信號

        for( i= 0; i 1; i+ + );

        temp= DS18B20; / /15微秒之內讀一位

        for( i= 0; i 20; i+ + ); / /等60微秒

        data0= dataO > > 1; / /為下一位準備

        if( temp= = 1) data0= dataO |0x80;

        else data0= data0 0x7;f

        DS18B20= 1; / /高電平恢復

        for( i= O; i 1; i+ + ); }

        return data0; }

        3. 2 上位機軟件編程

        系統采用MSCOMM 控件實現VC ++ 與之間的數據交換, 具有程序實現簡便、程序模塊化、工作可靠等優點, 并能滿足多數情況下的工控要求。

        使用MSCOMM控件主要是通過事件來處理串行口的交互。控件的MSCOMM 事件負責捕獲或處理這些通訊事件和通訊錯誤。

        4 結束語

        測溫系統采用了集成度高、功耗低的F149 為核心微處理器, 通過傳感器DS18B20實現對測量, 并進行存儲和顯示。實驗表明: 當外界試驗的范圍設定在0℃ ~ 50℃ ,可確保測量誤差不超過±0. 5℃ , 在試驗板上顯示精確到0. 0625℃, AD轉換的時間是750ms, 傳輸的距離是40m。另外, 在該系統的基礎上也可以擴展其他信號, 如濕度, 壓力等。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江城| 浮梁县| 华安县| 阜阳市| 怀仁县| 莱西市| 泗洪县| 衡阳市| 临安市| 孝昌县| 运城市| 南丰县| 乌拉特中旗| 左权县| 印江| 皋兰县| 积石山| 弥勒县| 易门县| 桐柏县| 濉溪县| 应用必备| 奎屯市| 黄陵县| 郎溪县| 东乡族自治县| 石河子市| 龙里县| 阿拉善右旗| 南汇区| 兴文县| 公主岭市| 白银市| 德保县| 海原县| 泰州市| 邵阳县| 芒康县| 同仁县| 平塘县| 广南县|