<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## **簡介** 液體溫度傳感器YTWD-A1能夠探測液體溫度。溫度探頭采用不銹鋼封裝,能夠防水、防潮和防銹。 ### * 官方商店:[點擊進入](https://item.taobao.com/item.htm?id=627735113474) ![](https://img.kancloud.cn/68/a9/68a95ed11f1ee01ee6cfab1d854825f7_778x630.png =200x) <br/> ## **技術參數** * 溫度測量范圍:-55~+125℃ * 溫度測量精度:0.5℃ * 分辨率調整范圍:9~12位 * 主芯片:DS18b20 * 工作電壓:3.0~5.5v <br/> ## **引腳說明** * 紅色線(VCC):外接3.3~5v供電電源 * 黑色線(GND):地線,電源負極 * 黃色線(DATA):數據輸出 <br/> ## **接線說明** 紅色線(VCC)與黑色線(GND)分別與電源正極和負極連接,黃色線(DATA)與單片機的GPIO連接。 ### <br/> ## **參考代碼** 使用示例代碼如下: ``` #include <reg52.h> #include<math.h> #include <stdio.h> #include<intrins.h> void delay(unsigned int i); void delay1ms(unsigned int i); void ReadTemperature(void); void Init_DS18B20(void); ReadOneChar(); void WriteOneChar(unsigned char dat); /* 變量定義 -----------------------------------------------*/ sbit DQ=P3^6; //數據傳輸線接單片機的相應的引腳 unsigned char tempL=0; //設全局變量 unsigned char tempH=0; unsigned int sdate;//測量到的溫度的整數部分 unsigned char xiaoshu1;//小數第一位 unsigned char xiaoshu2;//小數第二位 unsigned char xiaoshu;//兩位小數 bit fg=1; //溫度正負標志 unsigned char date; /* ******************************************************************************** ** 函數名稱 : delay(unsigned char i) ** 函數功能 : 延時函數 這個延時程序的具體延時時間是time=i*8+10,適用于小于2ms的延時 ******************************************************************************** */ void delay(unsigned int i) { while(i--); } /* ******************************************************************************** ** 函數名稱 : delay1ms(unsigned char i) ** 函數功能 : 延時函數 ******************************************************************************** */ void delay1ms(unsigned int i) { for(i=124;i>0;i--); //延時124*8+10=1002us } /* ******************************************************************************** ** 函數名稱 : Init_DS18B20(void) ** 函數功能 : 初始化 ******************************************************************************** */ void Init_DS18B20(void) { unsigned char x=0; DQ=1; //DQ先置高 delay(8); //稍延時 DQ=0; //發送復位脈沖 delay(80); //延時(>480us) DQ=1; //拉高數據線 delay(5); //等待(15~60us) x=DQ; //用X的值來判斷初始化有沒有成功,18B20存在的話X=0,否則X=1 delay(20); } /* ******************************************************************************** ** 函數名稱 : ReadOneChar() ** 函數功能 : 讀一個字節 ******************************************************************************** */ ReadOneChar() //主機數據線先從高拉至低電平1us以上,再使數據線升為高電平,從而產生讀信號 { unsigned char i=0; //每個讀周期最短的持續時間為60us,各個讀周期之間必須有1us以上的高電平恢復期 unsigned char dat=0; for (i=8;i>0;i--) //一個字節有8位 { DQ=1; delay(1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay(4); } return(dat); } /* ******************************************************************************** ** 函數名稱 : WriteOneChar(unsigned char dat) ** 函數功能 : 寫一個字節 ******************************************************************************** */ void WriteOneChar(unsigned char dat) { unsigned char i=0; //數據線從高電平拉至低電平,產生寫起始信號。15us之內將所需寫的位送到數據線上, for(i=8;i>0;i--) //在15~60us之間對數據線進行采樣,如果是高電平就寫1,低寫0發生。 { DQ=0; //在開始另一個寫周期前必須有1us以上的高電平恢復期。 DQ=dat&0x01; delay(5); DQ=1; dat>>=1; } delay(4); } /* ******************************************************************************** ** 函數名稱 : ReadTemperature(void) ** 函數功能 : 讀溫度值(低位放tempL;高位放tempH;) ******************************************************************************** */ void ReadTemperature(void) { Init_DS18B20(); //初始化 WriteOneChar(0xcc); //跳過讀序列號的操作 WriteOneChar(0x44); //啟動溫度轉換 delay(125); //轉換需要一點時間,延時 Init_DS18B20(); //初始化 WriteOneChar(0xcc); //跳過讀序列號的操作 WriteOneChar(0xbe); //讀溫度寄存器(頭兩個值分別為溫度的低位和高位) tempL=ReadOneChar(); //讀出溫度的低位LSB tempH=ReadOneChar(); //讀出溫度的高位MSB if(tempH>0x7f) //最高位為1時溫度是負 { tempL=~tempL; //補碼轉換,取反加一 tempH=~tempH+1; fg=0; //讀取溫度為負時fg=0 } sdate = tempL/16+tempH*16; //整數部分 xiaoshu1 = (tempL&0x0f)*10/16; //小數第一位 xiaoshu2 = (tempL&0x0f)*100/16%10;//小數第二位 xiaoshu=xiaoshu1*10+xiaoshu2; //小數兩位 } main() { while(1) { ReadTemperature(); } } ``` <br/> ## **善學坊官方信息** * IoT學習平臺:[www.sxf-iot.com](https://www.sxf-iot.com/) * 官方商城:[https://shop233815998.taobao.com](https://shop233815998.taobao.com/) **唯一**微信公眾號:shanxuefang-iot ![](https://img.kancloud.cn/03/8f/038f0602d72588346ebc539e12acd32a_344x344.png =250x)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看