在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 1-Wire總線與DS18B20應(yīng)用仿真

            1-Wire總線與DS18B20應(yīng)用仿真

            作者: 時間:2008-06-19 來源:今日電子 收藏

              總線的基本通信協(xié)議

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

              作為一種單主機多從機的總線系統(tǒng),在一條總線上可掛接的從器件數(shù)量幾乎不受限制。為了不引起邏輯上的沖突,所有從器件的1- Wire總線接口都是漏極開路的,因此在使用時必須對總線外加上拉電阻(一般取5kΩ左右)。主機對總線的基本操作分為復(fù)位、讀和寫三種,其中所有的讀寫操作均為低位在前高位在后。復(fù)位、讀和寫是1-Wire總線通信的基礎(chǔ),下面通過具體程序詳細介紹這3種操作的時序要求。(程序中DQ代表1 -Wire總線,定義為P1.0,uchar定義為unsigned char)

              1 1-Wire總線的復(fù)位

              復(fù)位是1-Wire總線通信中最為重要的一種操作,在每次總線通信之前主機必須首先發(fā)送復(fù)位信號。如程序1.1所示,產(chǎn)生復(fù)位信號時主機首先將總線拉低480~960μs然后釋放,由于上拉電阻的存在,此時總線變?yōu)楦唠娖健?-Wire總線器件在接收到有效跳變的15~60μs內(nèi)會將總線拉低60~240μs,在此期間主機可以通過對DQ采樣來判斷是否有從器件掛接在當(dāng)前總線上。函數(shù)Reset()的返回值為0表示有器件掛接在總線上,返回值為1表示沒有器件掛接在總線上。

              程序1.1 總線復(fù)位

              uchar Reset(void)
              {
               uchar tdq;
               DQ=0;  //主機拉低總線
               delay480μs(); //等待480μs
               DQ=1; //主機釋放總線
               delay60μs();  //等待60μs
               tdq=DQ;  //主機對總線采樣
               delay480μs();  //等待復(fù)位結(jié)束
               return tdq;  //返回采樣值
              }

              2 1-Wire總線的寫操作

              由于只有一條I/O線,主機1-Wire總線的寫操作只能逐位進行,連續(xù)寫8次即可寫入總線一個字節(jié)。如程序1.2所示,當(dāng)MCS-51單片機的時鐘頻率為12MHz時,程序中的語句_nop_();可以產(chǎn)生1μs的延時,調(diào)用此函數(shù)時需包含頭文件“intrins.h”。向1-Wire總線寫1bit至少需要60μs,同時還要保證兩次連續(xù)的寫操作有1μs以上的間隔。若待寫位wbit為0則主機拉低總線60μs然后釋放,寫0操作完成。若待寫位wbit為1,則主機拉低總線并在1~15μs內(nèi)釋放,然后等待60μs,寫1操作完成。

              程序1.2 向總線寫1bit

              void Writebit(uchar wbit)
              {
               _nop_();
              //保證兩次寫操作間隔1μs以上
               DQ=0;
               _nop_();
              //保證主機拉低總線1μs以上
               if(wbit)
               {            
              //向總線寫1
               DQ=1;
              delay60μs();
               }
               else
               {            
              //向總線寫0
               delay60μs();
               DQ=1;
               }
              }

              3 1-Wire總線的讀操作

              與寫操作類似,主機對1-Wire總線的讀操作也只能逐位進行,連續(xù)讀8次,即可讀入主機一個字節(jié)。從1-Wire總線讀取1bit同樣至少需要60μs,同時也要保證兩次連續(xù)的讀操作間隔1μs以上。如程序1.3所示,從總線讀數(shù)據(jù)時,主機首先拉低總線1μs以上然后釋放,在釋放總線后的 1~15μs內(nèi)主機對總線的采樣值即為讀取到的數(shù)據(jù)。

              程序1.3 從總線讀1bit

              uchar Readbit()
              {
               uchar tdq;
               _nop_();
              //保證兩次連續(xù)寫操作間隔1μs以上
               DQ=0;
               _nop_(); 
              //保證拉低總線的時間不少于1μs
               DQ=1;
               _nop_();
               tdq=DQ; 
              //主機對總線采樣
               delay60μs();
              //等待讀操作結(jié)束
               return tdq;
              //返回讀取到的數(shù)據(jù)
              }

              數(shù)字溫度DS18B20


            上一頁 1 2 3 下一頁

            關(guān)鍵詞: 仿真 1-Wire 傳感器

            評論


            相關(guān)推薦

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

            關(guān)閉