新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > DS18B20與數(shù)碼管程序

        DS18B20與數(shù)碼管程序

        作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit DQ=P2^0;//P2^0
        uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//不帶小數(shù)點
        uchar code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//帶小數(shù)點
        sbit wei0=P0^0;//P3^2
        sbit wei1=P0^1;//P3^3
        //sbit wei2=P1^2;
        //sbit wei3=P1^3;
        uchar disdata[2];
        uint tvalue;
        uchar tflag;
        void delay(uint i)
        {
        while(i--);
        }
        void ds1820rst()//復位
        {
        DQ=1;
        delay(4);
        DQ=0;
        delay(100);
        DQ=1;
        delay(40);
        }
        uchar ds1820rd()//讀數(shù)據(jù)
        {
        uchar i;
        uchar dat=0;
        for(i=8;i>0;i--)
        {
        DQ=0;
        dat>>=1;
        DQ=1;
        if(DQ)
        dat|=0x80;//dat=DQ;dat&=0x80;
        delay(10);
        }
        return(dat);
        }
        void ds1820wr(uchar wdata)//寫數(shù)據(jù)
        {
        uchar i=0;
        for(i=8;i>0;i--)
        {
        DQ=0;
        DQ=wdata&0x01;
        delay(10);
        DQ=1;
        wdata>>=1;
        }
        }
        read_temp()/*讀取溫度值并轉(zhuǎn)換*/
        {
        uchar a,b;
        ds1820rst();
        ds1820wr(0xcc);//*跳過讀序列號*/
        ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/
        ds1820rst();
        ds1820wr(0xcc);//*跳過讀序列號*/
        ds1820wr(0xbe);//*讀取溫度*/
        a=ds1820rd();
        b=ds1820rd();
        tvalue=b;
        tvalue<<=8;
        tvalue=tvalue|a;
        if(tvalue<0x0fff)
        tflag=0;
        else
        {tvalue=~tvalue+1;
        tflag=1;
        }
        tvalue=(tvalue*0.0625);//0.625溫度值擴大10倍,精確到1位小數(shù)
        return(tvalue);
        }


        void ds1820disp()//溫度值顯示
        {
        disdata[0]=tvalue/10;//十位數(shù)
        disdata[1]=tvalue%10;//個位數(shù)
        wei0=0;
        P1=tab[disdata[0]];
        delay(250);
        wei0=1;
        wei1=0;
        P1=tab[disdata[1]];
        delay(250);
        wei1=1;
        }

        void main()
        {
        while(1)
        {

        read_temp();//讀取溫度

        ds1820disp();//顯示
        }
        }


        關鍵詞: DS18B20數(shù)碼

        評論


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

        關閉
        主站蜘蛛池模板: 陆川县| 内黄县| 怀来县| 张家港市| 辰溪县| 沙坪坝区| 民勤县| 如皋市| 长宁县| 乌兰浩特市| 玛多县| 汕尾市| 镇安县| 大石桥市| 安阳市| 马山县| 凉山| 大安市| 余干县| 永新县| 定远县| 诸暨市| 德化县| 大城县| 普兰店市| 潜山县| 大名县| 绥阳县| 吉水县| 通州区| 黎平县| 舒兰市| 札达县| 五河县| 达州市| 南宫市| 仪征市| 伽师县| 绍兴县| 合肥市| 龙门县|