在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR 單個(gè)DS18B20溫度讀取程序(可測負(fù)溫度)

            AVR 單個(gè)DS18B20溫度讀取程序(可測負(fù)溫度)

            作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
            使用方法:
            把兩個(gè)文件放入工程,需要溫度時(shí)調(diào)用DS18B20_ReadTemperature,返回值就是溫度.
            DS18B20.h
            /****** AVR 單個(gè)DS18B20溫度讀取程序 ******
            * 版本.........: 1.0
            * 目標(biāo).........: AVR
            * 文件名.......: DS18B20.h
            * 編譯器.......: IAR for AVR V5.5
            *****************************************/
            #ifndef __DS18B20_H__
            #define __DS18B20_H__

            #include
            #include "delay.h"

            #define DS18B20_DQ_DDR DDRG
            #define DS18B20_DQ_PORT PORTG
            #define DS18B20_DQ_PIN PING
            #define DS18B20_DQ_BIT 4

            #define DS18B20_DQ_IN DS18B20_DQ_DDR &= ~(1 << DS18B20_DQ_BIT)
            #define DS18B20_DQ_OUT DS18B20_DQ_DDR |= (1 << DS18B20_DQ_BIT)
            #define DS18B20_DQ_LOW DS18B20_DQ_PORT &= ~(1 << DS18B20_DQ_BIT)
            #define DS18B20_DQ_HIGH DS18B20_DQ_PORT |= (1 << DS18B20_DQ_BIT)
            #define DS18B20_DQ_VALUE (DS18B20_DQ_PIN & (1 << DS18B20_DQ_BIT))

            externfloatDS18B20_ReadTemperature(void);


            #endif/* __DS18B20_H__ */


            #endif/* __DS18B20_H__ */
            DS18B20.c
            /****** AVR 單個(gè)DS18B20溫度讀取程序 ******
            * 版本.........: 1.0
            * 作者.........: 陳利棟
            * 目標(biāo).........: AVR
            * 文件名.......: DS18B20.c
            * 編譯器.......: IAR for AVR V5.5
            * 創(chuàng)建時(shí)間.....: 2010.10.09
            * 最后修改.....: 2010.10.09
            *****************************************/
            #include "DS18B20.h"

            staticvoidDS18B20_Init(void)
            {
            unsignedchartime_out=0;

            DS18B20_DQ_OUT;
            DS18B20_DQ_HIGH;
            DS18B20_DQ_LOW;
            _delay_us(600);
            DS18B20_DQ_IN;
            DS18B20_DQ_HIGH;
            _delay_us(100);
            while(DS18B20_DQ_VALUE&&((time_out++)<200));
            _delay_us(400);
            }

            staticvoidDS18B20_WriteByte(unsignedchar_data)
            {
            unsignedchari=0;

            DS18B20_DQ_OUT;
            for(i=0;i<8;i++)
            {
            DS18B20_DQ_LOW;
            _delay_us(2);
            if(_data&0x01)
            {
            DS18B20_DQ_HIGH;
            }
            _data>>=1;
            _delay_us(60);
            DS18B20_DQ_HIGH;
            }
            }

            staticunsignedcharDS18B20_ReadByte(void)
            {
            unsignedchari=0,_data=0;

            for(i=0;i<8;i++)
            {
            DS18B20_DQ_OUT;
            DS18B20_DQ_LOW;
            _delay_us(5);
            _data>>=1;
            DS18B20_DQ_HIGH;
            DS18B20_DQ_IN;
            if(DS18B20_DQ_VALUE)
            {
            _data|=0x80;
            }
            DS18B20_DQ_OUT;
            DS18B20_DQ_HIGH;
            _delay_us(60);
            }

            return_data;
            }

            floatDS18B20_ReadTemperature(void)
            {
            unsignedchartl=0,th=0;
            floatt=0;

            DS18B20_Init();
            DS18B20_WriteByte(0xcc);
            DS18B20_WriteByte(0x44);

            DS18B20_Init();
            DS18B20_WriteByte(0xcc);
            DS18B20_WriteByte(0xbe);

            tl=DS18B20_ReadByte();
            th=DS18B20_ReadByte();
            if((th&0xf8)==0)// 正溫度
            {
            t=((th&0x07)<<4)+((tl&0xf0)>>4)+((tl&0x07)*0.125);
            }
            else// 負(fù)溫度
            {
            t=-55+(((th&0x07)<<4)+((tl&0xf0)>>4)-0x49)+((tl&0x07)*0.125);
            }

            returnt;
            }


            關(guān)鍵詞: AVRDS18B20溫度讀

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉