在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > 基于DS18B20與TMS320LF2407A的溫度測量系統(tǒng)

            基于DS18B20與TMS320LF2407A的溫度測量系統(tǒng)

            作者: 時間:2012-07-07 來源:網絡 收藏

            #define PIN_LEAVE() {DATA_PORT=DATA_PORT(~DATA_OUT)|DATA_BIT;}
            /* 傳感器復位程序 */
            unchar reset(void)
            { unchar retval;
            unint loopindex="0";
            PIN_HIGH();
            nop();nop();nop();nop(); /* 延時1us*/
            PIN_LOW();
            for(loopindex=0;loopindex213;loopindex++){;} /*置總線為低電平并保持至少480us */
            PIN_HIGH();
            for(loopindex=0;loopindex26;loopindex++){;} /*等電阻拉高總線并保持15-60us */
            PIN_LEAVE(); /*接受應答信號*/
            nop();
            if((DATA_PORT DATA_BIT) == 0x0000)
            { retval = 0; }
            else
            { retval = 1; }
            PIN_HIGH();
            for(loopindex=0;loopindex106;loopindex++){;} /*延時60-240us */
            return(retval); /*返回應答信號 */
            }
            /* 從傳感器中讀一個字節(jié) */
            void read_byte(unchar *ReadByte)
            {
            int i;
            unchar temp="0";
            unint loopindex="0";
            PIN_HIGH();
            for(i=0;i8;i++)
            {
            temp="temp">>1;
            PIN_LOW();
            nop();nop();nop();nop(); /*延時2us */
            nop();nop();nop();nop();
            PIN_HIGH();
            for(loopindex=0;loopindex6;loopindex++){;} /* 延時14us */
            PIN_LEAVE();
            nop();
            if((DATA_PORT DATA_BIT) == 0x0000)
            { temp="temp" 0x7F; }
            else
            { temp="temp" | 0x80; }
            PIN_HIGH();
            for(loopindex=0;loopindex26;loopindex++){;} /* 延時60us */
            }
            *ReadByte=temp;
            return;
            }
            /* 將讀得的溫度轉化為十進制 */
            float transform(unchar *T)
            {
            unchar temp="0";
            float temprature="0";
            temp=temp|(*(T+1)8);
            temp=temp|*T;
            if((temp0x0F800)==0x0F800)
            { temprature="0-"((~temp)+1)*0.0625; }
            else
            { temprature="temp"*0.0625; }
            return(temprature);
            }
            /* 讀取溫度主函數,返回十進制溫度數 */
            float read_temp()
            {
            Unchar buff[2];
            float temprature="0";
            unint loopindex="0";
            while (reset()==1){}; /* 復位等待從機應答 */
            write_byte(0xCC); /* 忽略ROM匹配 */
            write_byte(0x44); /* 發(fā)送溫度轉化命令 */
            for(loopindex=0;loopindex65535;loopindex++){;} /* 延時300ms,等待數模轉換 */
            for(loopindex=0;loopindex65535;loopindex++){;}
            while(reset()==1){}; /* 再次復位,等待從機應答 */
            write_byte(0xCC); /* 忽略ROM匹配 */
            write_byte(0xBE); /* 發(fā)送讀溫度命令 */
            read_byte(buff); /* 讀出溫度低8位 */
            read_byte(buff+1); /* 讀出溫度高8位 */
            temprature="transform"(buff);
            PIN_HIGH(); /* 釋放總線 */
            return(temprature);
            }

              4 結束語

              是一款非常優(yōu)秀的單總線數字式傳感器。硬件設計簡單,運行可靠。通過分析C語言編譯后的匯編語言可以很明確的計算出軟件延時的時間,從而滿足單線總線通訊的時序要求,從而可以出色的完成DSP通訊的軟件設計。

              5 本文創(chuàng)新點有兩個:

              1、通過C編譯器編譯出來的相應的C語言的延時程序,從而得到其對應的匯編語言,再通過定時器計時,能夠知道單指令周期的時間,從而能夠精確的計算出軟件延時程序的延時時間。

              2、通常都是與單片機配合使用的,而本文則詳細的介紹了DS18B20與DSP的結合使用方法,其區(qū)別主要是在端口的操作上和延時的控制上。


            上一頁 1 2 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉