在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)寫DS18B20的驅(qū)動(dòng)

            51單片機(jī)寫DS18B20的驅(qū)動(dòng)

            作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏

            初始化操作方法:單片機(jī)先給總線一個(gè)高電平,略微延時(shí),然后拉低總線,至少延時(shí)480us(我們?nèi)?00us),然后拉高總線,等待15~60us的時(shí)間(我們?nèi)?0us),此后DS18B20如果響應(yīng),則會(huì)發(fā)出0,拉低總線,否則為1,單片機(jī)檢測(cè)是否響應(yīng)的時(shí)間在60~240us之內(nèi),之后釋放總線,程序如下:
            bit DS18B20_init()//初始化

            本文引用地址:http://www.biyoush.com/article/201611/320856.htm

            {
            uchar i;
            bit flag_response=0;
            DQ=1;
            _nop_();_nop_();
            DQ=0;
            delay_us(90); //延時(shí)600us
            DQ=1;
            delay_us(10); //延時(shí)80us
            for(i=0;i<15;i++)
            {
            _nop_();_nop_();_nop_();_nop_();_nop_();
            if(!DQ)
            {
            flag_response=1;
            break;
            }
            }
            delay_us(63);//延時(shí)420us
            DQ=1;//釋放總線
            return(flag_response);
            }



            寫操作方法:由于是單總線,讀寫操作都分為寫0和寫1,從一個(gè)字節(jié)的最低位逐次往DS18B20里寫,先使總線產(chǎn)生一個(gè)由1到0的跳變,等待15us(我們?nèi)?3us),然后判斷要寫的那位是1還是0,如果是1,則拉高總線,0則不去操作總線(因?yàn)榭偩€開始產(chǎn)生跳變時(shí)已被拉低),等待45us(我們?nèi)?4us)以后釋放總線(這段時(shí)間DS18B20會(huì)采樣,如上圖所示),程序如下:

            void DS18B20_write(uchar dat)//寫1個(gè)字節(jié)
            {
            uchar i;
            for(i=0;i<8;i++)
            {
            DQ=1;
            _nop_();_nop_();
            DQ=0;
            delay_us(1);//延時(shí)13us
            if(dat&0x01)
            DQ=1;
            delay_us(8);//延時(shí)64us
            DQ=1;//釋放總線
            dat>>=1;
            }
            }

            讀操作方法:使總線產(chǎn)生一個(gè)由1到0的跳變,等待1us,馬上拉高總線,等待大約12個(gè)us(datasheet推薦的采樣時(shí)間是快接近15us的時(shí)候,我們略微提前),單片機(jī)采樣,如果總線被拉低,則讀出的是0,否則就讀出1,然后延時(shí)45us以上(我們?nèi)?5us)釋放總線;注意,讀也是從最低位開始的,這里讀出的0,1加到字節(jié)最高位,讀完后,最高位被移到最低位,實(shí)際上是右移了7次

            uchar DS18B20_read()//讀1個(gè)字節(jié)
            {
            uchar i,dat=0;
            for(i=0;i<8;i++)
            {
            dat>>=1;
            DQ=1;
            _nop_();_nop_();
            DQ=0;
            _nop_();
            DQ=1;
            _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//按datasheet上的推薦時(shí)序,略微提前
            if(DQ)
            dat|=0x80;
            delay_us(7); //延時(shí)55us
            DQ=1;
            }
            return dat;
            }



            關(guān)鍵詞: 51單片機(jī)DS18B20驅(qū)

            評(píng)論


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

            關(guān)閉