新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機·DS18B20溫度傳感器

        單片機·DS18B20溫度傳感器

        作者: 時間:2016-11-24 來源:網絡 收藏
        一、DS18B20的特點
        1.“一線總線”數字化溫度傳感器。(一線掌握好時序,比較簡單)
        2. 3~5V寬電壓工作范圍
        3. 分辨9-12位可調
        二、DS18B20的正確接線




        面對著扁平的那一面,左負右正,一旦接反就有可能燒毀,也是溫度顯示85°C的原因。
        且只有一根I/O線,注意讀寫時序 。
        三、DS18B20時序介紹
        1)復位

        輸入
        t0-t1時刻:復位脈沖 480-960us ;
        t1-t2時刻:釋放總線 15-60us ;
        檢測
        t2-t3時刻:虛線部分由DS18B20控制,60-240us低電平則表示復位成功,否則失敗 ;
        t3-t4時刻:釋放總線
        2)寫操作

        寫0時序
        輸入
        t0-15us:保持低電平,輸入0;
        檢測
        15-60us:檢測i/o是否為低電平 ;
        輸入間隔>1us
        寫1時序
        輸入
        t0-15us:拉高電平,輸入1;
        檢測
        15-60us:檢測i/o是否為高電平
        輸入間隔>1us
        3)讀操作

        t0-t1:保持4us低電平
        t1-15us:DS18B20或者上拉電阻起作用,低電平或者高電平讀出
        15us-60us:釋放總線
        三、DS18B20的溫度
        1.DS18B20的溫度格式表
        一共是16位,我們用前5位表示符號位,后11位表示數值
        2.DS18B20的溫度數據表


        125℃/2000 = 0.0625
        當符號位為0時,表示正數,0.0625*hex得到溫度的值 ;
        當符號位為1時,表示負數,將所得到的(數值取反+1)*0.0625得到溫度的值;
        四、程序
        1.啟動溫度轉換
        1)復位DS18B20;
        2)發出Skip Rom命令(CCH)【僅適用于只有一個DS18B20】 ;
        3)發出convert命令(44H)
        2.讀取溫度
        1)復位DS18B20;
        2)發出Skip Rom命令(CCH);
        3)發出convert命令(BEH);
        4)讀2字節的溫度 ;
        5)溫度格式轉換 ;
        程序
        main.h
        # ifndef _MAIN_H_
        # define _MAIN_H_
        # include
        # include
        sbit DQ = P3^2 ;
        sbit RS = P1^0 ;
        sbit RW = P1^1 ;
        sbit EN = P1^5 ;
        sbit BUSY = P0^7;
        typedef unsigned char uint8 ;
        typedef unsigned int uint16 ;
        typedef int int16 ;
        #define nops() {_nop_();_nop_();_nop_();_nop_();}
        #endif
        main.c
        # include "main.h"
        void delay(uint16 n)
        {
        while(n--) ;
        }
        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 彭泽县| 原平市| 响水县| 丰镇市| 崇阳县| 普兰店市| 台前县| 寻甸| 冀州市| 饶平县| 峨眉山市| 青铜峡市| 涪陵区| 冷水江市| 泾源县| 玉门市| 达孜县| 仲巴县| 大竹县| 嵊州市| 澳门| 治多县| 会昌县| 广德县| 左权县| 澄迈县| 如皋市| 宁强县| 巩义市| 会宁县| 栾川县| 吉木乃县| 通州市| 惠来县| 弥勒县| 柞水县| 深水埗区| 大同市| 苗栗市| 贵南县| 山西省|