在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 簡(jiǎn)單的DS18B20溫度測(cè)試

            簡(jiǎn)單的DS18B20溫度測(cè)試

            作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            DS18B20是目前比較常用的一種溫度測(cè)試芯片。其具有微型化、低功耗、高性能、抗干擾強(qiáng)等優(yōu)點(diǎn)。同時(shí)可以直接將溫度轉(zhuǎn)化為數(shù)字信號(hào)提供給處理器。詳細(xì)的資料請(qǐng)參見芯片的資料說明。

            本實(shí)驗(yàn)是一個(gè)簡(jiǎn)單的溫度檢測(cè)實(shí)驗(yàn)。單片機(jī)將檢測(cè)到的溫度用數(shù)碼管顯示。程序如下:

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

            =================================================================================================

            #include
            #define uchar unsigned char
            #define uint unsigned int
            int a,b,c,temp;
            sbit DS=P3^3;//18B20端口設(shè)置
            uchar code table[]={
            0x3F, //"0"
            0x06, //"1"
            0x5B, //"2"
            0x4F, //"3"
            0x66, //"4"
            0x6D, //"5"
            0x7D, //"6"
            0x07, //"7"
            0x7F, //"8"
            0x6F //"9"
            };

            void dsdelay(int num)// 延時(shí)10約為53us 時(shí)鐘為11.0592M
            {
            while(num--);
            }

            void delay(uint z) //延時(shí)函數(shù)
            {
            uint x,y;
            for(x=z;x>0;x--)
            for(y=110;y>0;y--);
            }

            int init() //18B20初始化
            {
            uchar x=0;
            DS=1;
            dsdelay(8);//延時(shí)44us
            DS=0;
            dsdelay(110); //延時(shí)約500us
            DS=1;
            dsdelay(14); //稍微延時(shí),讀取x
            x=DS;
            dsdelay(20);
            }

            uchar readchar() //從18B20中讀取1個(gè)字節(jié)
            {
            uchar i=0;
            uchar dat;
            for(i=8;i>0;i--)
            {
            DS=0;
            dat>>=1;
            DS=1;
            if(DS)
            dat|=0x80;
            dsdelay(4);
            }
            return(dat);
            }

            void writechar(uchar dat) //向18B20中寫數(shù)據(jù)
            {
            uchar i=0;
            for(i=8;i>0;i--)
            {
            DS=0;
            DS=dat&0x1;
            dsdelay(5);
            DS=1;
            dat>>=1;
            }
            }

            uint readtemp() //讀取溫度值
            {
            uchar a;
            uchar b;
            uint t;
            float tt;
            a=0;
            b=0;
            t=0;
            tt=0;
            init();

            writechar(0xcc); //跳過讀序號(hào)列號(hào)的操作
            writechar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
            init();
            writechar(0xcc); //跳過讀序號(hào)列號(hào)的操作
            writechar(0xbe); //讀取溫度寄存器
            a=readchar(); //讀高8位
            b=readchar(); //讀高8位
            t=b;
            t<<=8;
            t=t|a;//兩字節(jié)合成一個(gè)整型變量。
            tt=t*0.0625; //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.0625度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度
            t= tt*10+0.5; //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
            return(t);
            }

            void display() //數(shù)碼管顯示溫度值
            {
            P1=0xf0; //位選
            P2=table[a];//段選
            delay(3);
            P1=0xf1;
            P2=table[b];
            delay(3);
            P1=0xf2;
            P2=0x08;
            delay(3);
            P1=0xf3;
            P2=table[c];
            }
            void main()//主函數(shù)
            {
            int m;
            m=0;
            while(1)
            {
            if(m==0) //消除85現(xiàn)象
            {
            delay(500);
            temp=readtemp();
            delay(500);
            delay(200);
            m=1;
            }
            else
            {
            temp=readtemp();
            a=temp/100;
            b=temp0/10;
            c=temp;
            display();
            }
            }

            }



            關(guān)鍵詞: DS18B20溫度測(cè)

            評(píng)論


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

            關(guān)閉