找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1079|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DS18B20

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:256430 發(fā)表于 2018-1-3 15:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "reg51.h"
#include " intrins.h"
#define uchar unsigned char
        #define uint unsigned int
                sbit dq=P3^7;
        bit flag;
        sbit sm1=P1^3;
        sbit  sm2=P1^4;
       
        uchar d1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
        uchar d2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
       
        void delay(uchar n)
        {
                do
                {
                        _nop_();
                        _nop_();
                        _nop_();
                        n--;
                }
                while(n);
        }
       
        void chushi()
        {
                dq=1;
                delay(10);
                dq=0;
                delay(120);
                dq=1;
                delay(30);
                if(dq==0)
                        flag==1;
                else
                        flag==0;
                delay(40);                       
        }
       
       
       
        uchar readbyte()
        {
                uchar i;
                uchar date=0;
                for(i=8;i>0;i--)
                {
                        dq=0;
                        delay(1);
                        dq=1;
                        date>>=1;
                        if(dq)
                                date|=0x80;
                        delay(11);
                       
                }
                return date;
        }
       
        void writebyte(uchar dat)
        {
                uchar i;
                for(i=0;i<8;i++)
           {
                   dq=0;
                         delay(1);
                         dat=dat&0x01;
                         delay(14);
                         dq=1;
                        dat=dat>>1;
                         delay(20);                         
           }
        }
        uint readtemp()
        {
                uchar a,b;
                uint temp;
                chushi();
                writebyte(0xcc);
                writebyte(0xbe);
                a=readbyte();
                b=readbyte();
                temp=b;
                temp=temp<<8;
                temp=temp|a;
                temp=temp*0.0625;
                return temp;
        }
         display(uint temp)
         {
                 
               
                          sm1=1;
                         sm2=0;
         
                         P2=d1[(temp/10)&0x0f];                         
                         delay(1000);
                          sm1=0;
                         sm2=1;       
               
                         
                         P2=d1[(temp%10)&0x0f];
                                         
                         delay(1000);                       
                 
         }
         void main()
         {
                 while(1)
                 {
                         chushi();
                         writebyte(0xcc);
                         writebyte(0x44);
                         display(readtemp());
                 }
         }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表