久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 基(ji)于FS4412的DS18B20溫度采集(ji)編程實現(xian)(1-時序分(fen)析)

基于FS4412的DS18B20溫度采集(ji)編程實(shi)現(1-時序分(fen)析) 時(shi)間:2018-09-20      來源(yuan):未知

一、DS18B20簡介

DS18B20是常用(yong)的數(shu)字溫度(du)計(ji)。DS18B20數(shu)字溫度(du)計(ji)提供9至12位(wei)(可配置)溫度(du)讀數(shu),表明該設備的溫度(du)。

信息通過(guo)單總線(xian)接口被發送到DS18B20或從(cong)DS18B20發出(chu),因此從(cong)中央微(wei)處理器到DS18B20只(zhi)有(you)需要一(yi)個線(xian)(和地線(xian))。

讀,寫和進行(xing)溫(wen)度(du)轉(zhuan)換(huan)所需(xu)要的(de)電源(yuan),可(ke)以由(you)數據(ju)線本身(shen)來提(ti)供,無(wu)需(xu)外(wai)部電源(yuan)。 由(you)于每個DS18B20含有唯一(yi)的(de)序列號(hao),多個DS18B20可(ke)以掛載在一(yi)條單總(zong)線上。這允許在許多不同的(de)地方,放置溫(wen)度(du)傳感器(qi)。

這個(ge)功能是非(fei)常有用的,可以應用在(zai)包括(kuo)HVAC環境(jing)控(kong)制(zhi),建筑物內部的溫(wen)度感應, 設備或機械,過程監(jian)測和控(kong)制(zhi)等領域。

二、DS18B20硬件連接

  
DS18B20引腳圖                                                           DS18B20 原理(li)圖

DS18B20 有三個(ge)引(yin)(yin)腳(jiao)(jiao)。根據原理圖可(ke)知(zhi),DS18B20采用了外部供電(dian)的(de)連(lian)接方式,而DQ引(yin)(yin)腳(jiao)(jiao)上拉10k電(dian)阻。DQ引(yin)(yin)腳(jiao)(jiao)連(lian)接在4412芯片(pian)的(de)GPK1_1 引(yin)(yin)腳(jiao)(jiao)上面。

GND
DQ 數據線
VDD 電源(可選)

三、DS18B20時序分(fen)析(xi)

DS18B20是一個單總線,輸(shu)入和(he)輸(shu)出都是通過DQ引腳,我們需要根據時序圖,不斷的操(cao)作DQ這個引腳,實現具體的功能。

(一)ds18b20復位時(shi)序(xu)和函數實現

通(tong)(tong)過復位(wei)信(xin)號,可以檢測DS18B20是否工作正常,并(bing)通(tong)(tong)知(zhi)DS18B20準備通(tong)(tong)信(xin)。

(1)4412拉低DQ引腳,復(fu)位(wei)周期開始。

(2)DQ引(yin)腳上的(de)低電平保持480us—960us 的(de)時間,然后釋(shi)放總線。

(3)4412延時16us—60us等待(dai)DS18B20應(ying)答(da)。

(4)DS18B20拉(la)低DQ引腳60us—240us,表示應(ying)答。

4412讀(du)取(qu)DQ引腳電(dian)平,如果是(shi)低電(dian)平,表示初始(shi)化完成。

(5)DS18B20應答信號結束后(hou),釋放總(zong)線,DQ引腳被上拉(la)電阻拉(la)高,復位周期結束。

實現ds18b20的復位代碼: 
        void DS18_Reset()
        {
                  GPK1.PUD = 0;                                       //GPK1_1 禁止上下拉 
                  GPK1.CON = (GPK1.CON & ~(0xF << 4)) | 0x1 << 4;   //設置GPK1_1為輸出引腳 
                  GPK1.DAT &= ~(0x1 << 1);                                 //設置GPK1_1 輸出‘0’,拉低DQ引腳 
                  delay_us(700);                                                                //延時 600us
                  GPK1.DAT |= 0x1 << 1;                                                      //GPK1_1釋放總線 
                  GPK1.CON &= ~(0xF << 4);                                             //設置GPK1_1為輸入引腳 
                  while(GPK1.DAT & (0x1 << 1));                     //等待DS18B20應答信號 (DQ引腳低電平) 
                  while(!(GPK1.DAT & (0x1 << 1)));
                                    //等待DS18B20應答信號結束(DQ引腳高電平) 
    &nbsp; &nbsp;  }

(二)ds18b20寫時序(xu)和函(han)數實現(xian)

 當我們需要從DS18B20寫(xie)數據的(de)時候,必須(xu)嚴格DS18B20的(de)寫(xie)時序(xu),進行操作。

向(xiang)DS18B20寫邏(luo)輯0操作:

(1)4412拉低(di)DQ引(yin)腳,寫周期開(kai)始。

(2)DQ引腳保(bao)持(chi)低電平15us左右。

(3)DQ引(yin)腳繼續(xu)保持低(di)電平20us--45us。

(4)釋放總線(xian)。

向DS18B20寫邏輯1操作:

(1)4412拉低DQ引腳,寫周期開始。

(2)DQ引(yin)腳上(shang)的低(di)電平保(bao)持大于1us后,拉(la)高(gao)DQ引(yin)腳 ,總共(gong)15us。

(3)DQ引腳(jiao)繼續保(bao)持高電平20us—45us

(4)釋放總線。

實(shi)現(xian)向DS18B20寫(xie)入一個(ge)字節代(dai)碼:

void DS18_Write(unsigned char data)
         {
                  unsigned char i;
                  GPK1.CON = (GPK1.CON & ~(0xF << 4)) | 0x1 << 4;     //設置GPK1_1為輸出引腳 
         
                  for(i = 0; i < 8; i++)
                  {
                            GPK1.DAT |= 0x1 << 1;                                          //設置GPK1_1 輸出1
                            delay_us(1);                                  //延時1us
                            GPK1.DAT &= ~(0x1 << 1);                                                //設置GPK1_1 輸出0形成下降沿 
                            delay_us(12);                                 //延時12us,大于1us小于15us 
                            if(data & 0x1)                                                                //如果數據低位為1
                            GPK1.DAT |= 0x1 << 1;                                     //設置GPK1_1 輸出1
                            delay_us(40);                                                               //延時40us
                            data = data >> 2;                               //數據右移1位 
                  }
     ;    }

(三)ds18b20寫時序和(he)函數實現

當我們需要從DS18B20讀(du)數據的(de)時候,必須嚴(yan)格DS18B20的(de)讀(du)時序,進行操作(zuo)。

(1)通過4412拉(la)低DQ引(yin)腳(jiao),讀周期(qi)開始。

(2)DQ引腳(jiao)(jiao)上的低(di)電(dian)平(ping)至少保持(chi)1us 的時間,然(ran)后釋(shi)放引腳(jiao)(jiao)。

(3)4412延(yan)時幾us(留(liu)物理電平反應時間(jian)),讀取DQ引腳的(de)數據。

注意:根(gen)據(ju)圖中MASTER SAMPLES指示(shi),從拉低電平轉(zhuan)換開始(shi),留給物理電平轉(zhuan)換時間,到后4412的對DQ引腳讀取操作應給在15us之內完成(cheng)。

(4)15us后讀(du)時隙結束時,DQ引腳將(jiang)通過(guo)外(wai)部上(shang)拉電(dian)(dian)阻拉回(hui)高電(dian)(dian)平。

4412延時45us等待讀(du)周期結束。

實現(xian)向(xiang)DS18B20讀(du)入一個(ge)字節數據代碼:

unsigned char DS18_Read()
         {
                  unsigned char i, Temp = 0;                                                       //初始化接受變量Temp為0 
                  for(i = 0; i < 8; i++)
                  {
                            GPK1.CON = (GPK1.CON & ~(0xF << 4)) | 0x1 << 4;  //設置GPK1_1為輸出引腳 
                            GPK1.DAT |= 0x1 << 1;                                                 //設置GPK1_1 輸出1
                            GPK1.DAT &= ~(0x1 << 1);                                                        //設置GPK1_1 輸出0,形成下降沿 
                            GPK1.DAT |= 0x1 << 1;                                                      //GPK1_1釋放總線 
                            GPK1.CON &= ~(0xF << 4);                                           //設置GPK1_1為輸出引腳 
                            Temp >>= 1;                                    //接受變量右移1位 
                            if(GPK1.DAT & (0x1 << 1))                                                        //讀取DQ引腳,如果DQ為1
                            Temp |= 0x80;                              //接受變量Temp,高位置1
                            delay_us(30);                                   //延時30us
                  }
                  return Temp;
                                          //返回接受變量
     &nbsp;   }

 
 

上一篇:Android GPS定位步驟

下一篇:什么是嵌入式系統?

熱點文章(zhang)推(tui)薦
華清(qing)學員就業榜(bang)單
高薪學員經驗分享
熱點(dian)新聞推薦
前臺(tai)專線:010-82525158 企業培訓洽談專線:010-82525379 院校(xiao)合作洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部