• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > DS18B20測溫實驗原理及實現

    DS18B20測溫實驗原理及實現

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

    構成的系統,測量溫度精度達到0.1度,測量的溫度的范圍在-20度到+50度之間,用4位數碼管顯示出來。

    DPY-1板連接
    用排線把JP-CODE連到JP8是,注意:a接P0.0;b接P0.1;c接P0.3…… 把JP-CS連到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7;

    連接好注意極性不要弄反,否則可能燒壞。的外型與常用的三極管一模一樣,上圖是它的管腳分布。用導線將JK—DS的DA端連到P3.1上。

    本文引用地址:http://www.czjhyjcfj.com/article/161057.htm

    硬件電路圖


    DS18B20數字溫度計是DALLAS公司生產的1-Wire,即單總線器件,具有線路簡單,體積小的特點。因此用它來組成一個系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計。DS18B20產品的特點
    (1)、只要求一個I/O口即可通信。
    (2)、在DS18B20中的每個器件上都有獨一無二的序列號。
    (3)、實際應用中不需要外部任何元器件即可
    (4)、測量溫度范圍在-55。C到+125。C之間。
    (5)、數字溫度計的分辨率用戶可以從9位到12位選擇。
    (6)、內部有溫度上、下限告警設置。
    DS18B20詳細引腳功能描述1 GND地信號;2 DQ數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;3 VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。
    DS18B20的使用方法。由于DS18B20采用的是1-Wire總線協議方式,即在一根數據線數據的雙向傳輸,而對AT89S51單片機來說,我們必須采用軟件的方法來模擬單總線的協議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。

    C語言源程序:

    #includereg52.h>
    code unsigned char seg7code[11]={0x3f,0x06,0x5b,0x4f,0x66,
    0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //顯示段碼
    void Delay(unsigned int tc) //顯示延時程序
    {while( tc != 0 )
    {unsigned int i;
    for(i=0; i100; i++);
    tc--;}
    }
    sbit TMDAT =P3^1; //DS18B20的數據輸入/輸出腳DQ,根據情況設定
    unsigned int sdata;//測量到的溫度的整數部分
    unsigned char xiaoshu1;//小數第一位
    unsigned char xiaoshu2;//小數第二位
    unsigned char xiaoshu;//兩位小數
    bit fg=1; //溫度正負標志
    void dmsec (unsigned int count) //延時部分
    {
    unsigned char i;
    while(count--)
    {for(i=0;i115;i++);}
    }
    void tmreset (void) //發送復位
    {
    unsigned char i;
    TMDAT=0; for(i=0;i103;i++);
    TMDAT = 1; for(i=0;i4;i++);
    }
    bit tmrbit (void) //讀一位//
    {
    unsigned int i;
    bit dat;
    TMDAT = 0;
    i++;
    TMDAT = 1;
    i++; i++; //微量延時 //
    dat = TMDAT;
    for(i=0;i8;i++);
    return (dat);
    }


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 新竹县| 郁南县| 绵竹市| 依兰县| 乐亭县| 尉犁县| 滁州市| 西峡县| 哈巴河县| 晋城| 武功县| 定日县| 喀什市| 龙里县| 平舆县| 亳州市| 偏关县| 吐鲁番市| 峡江县| 邮箱| 通山县| 离岛区| 铜陵市| 阜城县| 秭归县| 富民县| 陈巴尔虎旗| 崇礼县| 元氏县| 吴堡县| 枣庄市| 孟连| 盐池县| 宜宾市| 芜湖县| 彩票| 政和县| 永福县| 益阳市| 岳普湖县| 卓尼县|