单片机温度测温

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

//ÏÂÃæÊǵãÕóÊý¾Ý£¬Ò»¸öºº×ÖÓÐ32×Ö½ÚÊý¾Ý×é³É(ÒõÂëÄæÏòÁÐÐÐʽ)
unsigned char code fa[]= 
{
0x00,0x00,0x18,0x16,0x10,0xD0,0xB8,0x97,0x90,0x90,0x90,0x92,0x94,0x10,0x00,0x00,
0x00,0x20,0x10,0x8C,0x83,0x80,0x41,0x46,0x28,0x10,0x28,0x44,0x43,0x80,0x80,0x00,//"·¢",0//
};

unsigned char code dong[]= 
{
0x40,0x44,0xC4,0x44,0x44,0x44,0x40,0x10,0x10,0xFF,0x10,0x10,0x10,0xF0,0x00,0x00,
0x10,0x3C,0x13,0x10,0x14,0xB8,0x40,0x30,0x0E,0x01,0x40,0x80,0x40,0x3F,0x00,0x00,//"¶¯",1//
};

unsigned char code ji[]= 
{
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,//"»ú",2//
};

unsigned char code shui[]= 
{
0x00,0x20,0x20,0x20,0xA0,0x60,0x00,0xFF,0x60,0x80,0x40,0x20,0x18,0x00,0x00,0x00,
0x20,0x10,0x08,0x06,0x01,0x40,0x80,0x7F,0x00,0x01,0x02,0x04,0x08,0x10,0x10,0x00,//"Ë®",3//
};

unsigned char code wen[]= 
{
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,//"ÎÂ",4//
};

unsigned char code jian[]= 
{
0x10,0x10,0xD0,0xFF,0x90,0x50,0x20,0x50,0x4C,0x43,0x4C,0x50,0x20,0x40,0x40,0x00,
0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x58,0x41,0x4E,0x60,0x58,0x47,0x40,0x40,0x00,//"¼ì",5//
};

unsigned char code ce[]= 
{
0x10,0x60,0x02,0x8C,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0xFF,0x00,0x00,
0x04,0x04,0x7E,0x01,0x80,0x47,0x30,0x0F,0x10,0x27,0x00,0x47,0x80,0x7F,0x00,0x00,//"²â",6//
};

unsigned char code dang[]= 
{
0x00,0x40,0x42,0x44,0x58,0x40,0x40,0x7F,0x40,0x40,0x50,0x48,0xC6,0x00,0x00,0x00,
0x00,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,//"µ±",7//
};

unsigned char code qian[]= 
{
0x08,0x08,0xE8,0x29,0x2E,0x28,0xE8,0x08,0x08,0xC8,0x0C,0x0B,0xE8,0x08,0x08,0x00,
0x00,0x00,0xFF,0x09,0x49,0x89,0x7F,0x00,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,//"Ç°",8//
};

unsigned char code du[]= 
{
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,//"¶È",9//
};

unsigned char code ssd[]= 
{
0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00,
0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00,//"¡æ",10//
};

unsigned char code mao[]= //
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"£º",0*/
};

/********************************************************************************************
*ÄÚÈÝ:   0 1 2 3 4 5 6 7 8 9 ¿Õ°× -     T :
*´óС:   8X16×Ö·û  
*********************************************************************************************/
uchar code letter_logo[16][16]={
/*--  ÎÄ×Ö:  0  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*--  ÎÄ×Ö:  1  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  ÎÄ×Ö:  2  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*--  ÎÄ×Ö:  3  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*--  ÎÄ×Ö:  4  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*--  ÎÄ×Ö:  5  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*--  ÎÄ×Ö:  6  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  ÎÄ×Ö:  7  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*--  ÎÄ×Ö:  8  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*--  ÎÄ×Ö:  9  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

/*--  ÎÄ×Ö:  :  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,

/*--  ÎÄ×Ö:  -  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,

/*--  ÎÄ×Ö:  T  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/

0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

/*--  ÎÄ×Ö: .  --*/
/*--  ËÎÌå12;  ´Ë×ÖÌå϶ÔÓ¦µÄµãÕóΪ£º¿íx¸ß=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,


/*--  ÎÄ×Ö: (  --*/
0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,

/*--  ÎÄ×Ö: )  --*/

0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,


};

sbit CS1=P2^0;//Ƭѡ1,µÍµçƽÓÐЧ£¬CS1=0¿ª×óÆÁÄ»£¬CS1=1¹Ø×óÆÁÄ»
sbit CS2=P2^1;//Ƭѡ2£¬µÍµçƽÓÐЧ£¬CS2=0¿ªÓÒÆÁÄ»£¬CS2=1¹ØÓÒÆÁÄ»
sbit RS=P2^2;//Êý¾Ý£¬Ö¸ÁîÑ¡ÔñÐźţ¬RS=1ΪÊý¾Ý²Ù×÷£¬RS=0ΪдָÁî»ò¶Á״̬£¨Ò»°ãΪ¶Áæ±êÖ¾£©
sbit RW=P2^3;//¶ÁдѡÔñÐźţ¬RW=1Ϊ¶Áѡͨ£¬RW=0Ϊдѡͨ
sbit EN=P2^4;//¶ÁдʹÄÜÐźÅ
void busy()//æ¼ì²âº¯Êý
{
    P0=0X00; //Õâ¾ä²»ÄÜÉÙ
    RS=0;
    RW=1;
    EN=1;
    while(P0&0X80);//P0&0X80½á¹ûΪÕæÔòÒ»Ö±Ö´ÐпղÙ×÷£¬Ò²¾ÍÊÇ˵P0&0X80Ϊ0Ôò½áÊøÑ­»·
    EN=0;
}
void wcmd(uchar cmd)
{
    busy(); //ÿ´ÎдÈëÖ¸Áî»òÊý¾Ý֮ǰ¶¼½øÐÐæ¼ì²â
    RS=0;
    RW=0;
    P0=cmd;
    EN=1;_nop_();_nop_();//ÔÚENϽµÑØдÈëÊý¾ÝºÍÖ¸Áî
    EN=0;
}
void wdata(uchar dat) //дÃüÁîºÍдÊý¾ÝÖ»ÔÚRS=0»òRS=1Éϲ»Í¬£¬ÆäÓ඼Ïàͬ
{
    busy();
    RS=1;
    RW=0;
    P0=dat;
    EN=1;_nop_();_nop_();//ÔÚENϽµÑØдÈëÊý¾ÝºÍÖ¸Áî
    EN=0;
}

/********************************************************************************************
* º¯ÊýÃû³Æ£ºLcd_Set_X(uchar x)
* ¹¦    ÄÜ£ºLCDÉèÖÃX×ø±ê
* Èë¿Ú²ÎÊý£ºx 
* ³ö¿Ú²ÎÊý£ºÎÞ
*********************************************************************************************/
void Lcd_Set_X(uchar x)
{  
   P0=0xb8|x;
   RS=0;
   RW=0;
   EN=1;
   EN=0;  
}
/********************************************************************************************
* º¯ÊýÃû³Æ£ºLcd_Set_Y(uchar y)
* ¹¦    ÄÜ£ºLCDÉèÖÃY×ø±ê
* Èë¿Ú²ÎÊý£ºy
* ³ö¿Ú²ÎÊý£ºÎÞ
*********************************************************************************************/
void Lcd_Set_Y(uchar y)
{  
   P0=0x40|y;
   RS=0;
   RW=0;
   EN=1;
   EN=0;  
}
/********************************************************************************************
* º¯ÊýÃû³Æ£ºLcd_Set_X_Y(uchar x, uchar y )
* ¹¦    ÄÜ£ºLCDÉèÖÃx y×ø±ê
* Èë¿Ú²ÎÊý£ºx y
* ³ö¿Ú²ÎÊý£ºÎÞ
*********************************************************************************************/
void Lcd_Set_X_Y(uchar x, uchar y)
{  
   
   if( y<64 )
      { CS1=1; CS2=0; Lcd_Set_Y( y ); }
   else
      { CS1=0; CS2=1; Lcd_Set_Y( y-64 );  }
    Lcd_Set_X( x);
}
/****************************************************************************
*Ãû³Æ:Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
*¹¦ÄÜ:ÏÔʾ16X8×Ö·û(×Öĸ)         
*Èë¿Ú²ÎÊý:
*³ö¿Ú²ÎÊý:
*˵Ã÷:bit_flag = 1 Õý³£ÏÔʾ  bit_flag = 0 ºÚ°×·´ÏàÏÔʾ
****************************************************************************/ 
void Lcd_Character_16X8( bit bit_flag, uchar x, uchar y, uchar code *point )
{
   uchar i , j,temp;
   temp=y;
   if( bit_flag )
   {   
      for( i=0; i<2; i++ )
      {
         x+=i;
         y=temp;
         for( j=0;j<8;j++ )
         {
            Lcd_Set_X_Y( x, y ); y++;
            wdata( point[ i*8 + j] );  
         } 
      }
   }
   else
   {
      for( i = 0; i < 2; i++ )
      {
         x += i;
         y = temp;
         for( j = 0; j < 8; j++ )
         {
            Lcd_Set_X_Y( x, y ); y++;
            wdata( ~point[ i * 8 + j ] );
         }
      }
   }
}

void set_page(uchar page)//ÉèÖÃÒ³£¬12864LCD¹²ÓÐ8Ò³£¬Ã¿Ò³ÓÐ8ÐеãÕóµã¡£
{
    page=0xb8|page;  //Ê×Ò³µØַΪ0XB8
    wcmd(page);                  //pageÈ¡Öµ·¶Î§Îª0~7,±íʾµÚ1µ½8Ò³
}
void set_line(uchar line)//ÉèÖÃÏÔʾµÄÆðʼÐУ¬¹²ÓÐ0¡ª¡ª63ÐУ¬Ò»°ã´Ó0ÐпªÊ¼ÏÔʾ
{
    line=0xc0|line;  //ÆðʼÐеØÖ·0XC0
    wcmd(line);        //lineÈ¡Öµ·¶Î§Îª0~63£¬±íʾµÚ1µ½64ÐÐ
}
void set_column(uchar column)//ÉèÖÃÏÔʾµÄÁÐ
{
    //column=column&0x3f; //ÁеÄ×î´óֵΪ0X3F£¬¼´64
    column=0x40|column;         //ÁеÄÊ×µØַΪ0X40,
    wcmd(column);                 //columnµÄÈ¡Öµ·¶Î§Îª0~63£¬¹²64ÁÐ
}
void set_onoff(uchar onoff)//ÉèÖÃÏÔʾ¿ª¹Ø£¬onoffȡֵΪ0»ò1
{
    onoff|=0x3e;//0X3EÊǹØÏÔʾ£¬0X3FÊÇ¿ªÏÔʾ
    wcmd(onoff);//ËùÒÔÈôonoffΪ0£¬Ôò±íʾ¹ØÏÔʾ£¬onoffΪ1£¬Ôò±íʾ¿ªÏÔʾ
}
void select_screen(uchar screen)//Ñ¡ÆÁ£¬screenÈ¡Öµ·¶Î§Îª0,1,2
{
    switch(screen)
    {
        case 0:CS1=0;CS2=0;break; //È«ÆÁ
        case 1:CS1=0;CS2=1;break;  //×ó°ëÆÁ
        case 2:CS1=1;CS2=0;break;  //ÓÒ°ëÆÁ
        default:break;
    }
}
void clear_screen(uchar screen)//ÇåÆÁ
{
    uchar i,j;
    select_screen(screen);//ÏÈÑ¡ÆÁ
    for(i=0;i<8;i++)//¿ØÖÆÒ³Êý0¡ª¡ª7£¬¹²8Ò³
    {
        set_page(i);//ÉèÖÃÒ³
        set_column(0); //ÉèÖÃÁУ¬Ã¿Ò³¶¼´ÓµÚ1ÁпªÊ¼£¬¹²64ÁÐ
        for(j=0;j<64;j++)//¿ØÖÆÁÐÊý0¡ª¡ª63£¬¹²64ÁÐ
        wdata(0x00);//дÈë0£¬ÁеØÖ·Ö¸Õë»á×Ô¶¯¼Ó1
    }
}
void init()        //LCD³õʼ»¯
{
    busy(); //æ¼ì²â
    select_screen(0);//Ñ¡ÆÁ£¬È«ÆÁ
    set_onoff(0);        //¹ØÏÔʾ
    select_screen(0); //Ñ¡ÆÁ£¬È«ÆÁ
    set_onoff(1);          //¿ªÏÔʾ
    select_screen(0); //Ñ¡ÆÁ£¬È«ÆÁ
    clear_screen(0);  //ÇåÆÁ
    set_line(0);          //ÆðʼÐУº0
}
void show(uchar screen,uchar page,uchar column,uchar *p)//ÏÔʾһ¸öºº×Ö£¬Ò»¸öºº×ÖÓÐ32×Ö½ÚÊý¾Ý
{
    uchar i;        //screen±íʾѡÔñÆÁÄ»£¬page±íʾҳ£¬column±íʾÁУ¬*p±íʾºº×ÖµÄÊý×é
    select_screen(screen); //Ñ¡ÆÁ
    set_page(page);           //ÉèÖÃÒ³£¬Ð´ÉÏ°ëÒ³
    set_column(column);//ÉèÖÃÁÐ
    for(i=0;i<16;i++) //¿ØÖÆ16ÁеÄÊý¾ÝÊä³ö
    wdata(p[i]);   //ºº×ÖµÄÉϰ벿·Ö
    set_page(page+1); //дÏ°ëÒ³
    set_column(column);        //¿ØÖÆÁÐ
    for(i=0;i<16;i++) //¿ØÖÆ16ÁеÄÊý¾ÝÊä³ö
    wdata(p[i+16]);         //ºº×ÖµÄÏ°벿·Ö
}

sbit DSPORT=P3^6;

sbit beep=P1^5;
sbit LED=P1^0;

void Delay1ms(unsigned int );
unsigned char Ds18b20Init();
void Ds18b20WriteByte(unsigned char com);
unsigned char Ds18b20ReadByte();
void  Ds18b20ChangTemp();
void  Ds18b20ReadTempCom();
int Ds18b20Read_Temp();

void LcdDisplay(int);

void main()
{
    int tp;
    tp=Ds18b20Read_Temp();
    Delay1ms(1000);
    tp=Ds18b20Read_Temp();

    init();  //LCD³õʼ»¯
    clear_screen(0); //ÇåÆÁ
    set_line(0);   //ÏÔʾ¿ªÊ¼ÐÐ

    show(1,0,3*16,shui);
    show(2,0,4*16,wen);
    show(2,0,5*16,jian);
    show(2,0,6*16,ce);

    show(1,2,0*16,dang);
    show(1,2,1*16,qian);
    show(1,2,2*16,wen);
    show(1,2,3*16,du);
    show(2,2,4*16,mao);
    show(2,2,7*16,ssd);

    while(1)
    {
        LcdDisplay(Ds18b20Read_Temp());                
    }
}

void LcdDisplay(int temp)      //lcdÏÔʾ
{
    
      unsigned char datas[] = {0, 0, 0, 0, 0}; //¶¨ÒåÊý×é
    float tp;  

    tp=temp;//ÒòΪÊý¾Ý´¦ÀíÓÐСÊýµãËùÒÔ½«Î¶ȸ³¸øÒ»¸ö¸¡µãÐͱäÁ¿
    //Èç¹ûζÈÊÇÕýµÄÄÇô£¬ÄÇôÕýÊýµÄÔ­Âë¾ÍÊDz¹ÂëËü±¾Éí
    temp=tp*0.0625*10+0.5;    
    //Áô1¸öСÊýµã¾Í*10£¬+0.5ÊÇËÄÉáÎåÈ룬ÒòΪCÓïÑÔ¸¡µãÊýת»»ÎªÕûÐ͵Äʱºò°ÑСÊýµã
    //ºóÃæµÄÊý×Ô¶¯È¥µô£¬²»¹ÜÊÇ·ñ´óÓÚ0.5£¬¶ø+0.5Ö®ºó´óÓÚ0.5µÄ¾ÍÊǽø1ÁË£¬Ð¡ÓÚ0.5µÄ¾Í
    //Ëã¼ÓÉÏ0.5£¬»¹ÊÇÔÚСÊýµãºóÃæ¡£    

    if((temp/10)>=90)
    {
        beep=!beep;
        Delay1ms(100);
        LED=0;
    }
    else
    {
        beep=1;    
        LED=1;
    }
    
    datas[1] = temp/100%10;
    datas[2] = temp/10%10;
    datas[3] = temp%10;

    Lcd_Character_16X8( 1, 2, 8, letter_logo[datas[1]] );
    Lcd_Character_16X8( 1, 2, 16, letter_logo[datas[2]] );
    Lcd_Character_16X8( 1, 2, 24, letter_logo[13] );
    Lcd_Character_16X8( 1, 2, 32, letter_logo[datas[3]] );
}

void Delay1ms(unsigned int y)
{
    unsigned int x;
    for(y;y>0;y--)
        for(x=110;x>0;x--);
}


unsigned char Ds18b20Init()
{
    unsigned int i;
    DSPORT=0;             //½«×ÜÏßÀ­µÍ480us~960us
    i=70;    
    while(i--);//ÑÓʱ642us
    DSPORT=1;            //È»ºóÀ­¸ß×ÜÏߣ¬Èç¹ûDS18B20×ö³ö·´Ó¦»á½«ÔÚ15us~60usºó×ÜÏßÀ­µÍ
    i=0;
    while(DSPORT)    //µÈ´ýDS18B20À­µÍ×ÜÏß
    {
        i++;
        if(i>5000)//µÈ´ý>5MS
            return 0;//³õʼ»¯Ê§°Ü    
    }
    return 1;//³õʼ»¯³É¹¦
}

void Ds18b20WriteByte(unsigned char dat)
{
    unsigned int i,j;
    for(j=0;j<8;j++)
    {
        DSPORT=0;            //ÿдÈëһλÊý¾Ý֮ǰÏÈ°Ñ×ÜÏßÀ­µÍ1us
        i++;
        DSPORT=dat&0x01; //È»ºóдÈëÒ»¸öÊý¾Ý£¬´Ó×îµÍλ¿ªÊ¼
        i=6;
        while(i--); //ÑÓʱ68us£¬³ÖÐøʱ¼ä×îÉÙ60us
        DSPORT=1;    //È»ºóÊÍ·Å×ÜÏߣ¬ÖÁÉÙ1us¸ø×ÜÏ߻ָ´Ê±¼ä²ÅÄܽÓ×ÅдÈëµÚ¶þ¸öÊýÖµ
        dat>>=1;
    }
}

unsigned char Ds18b20ReadByte()
{
    unsigned char byte,bi;
    unsigned int i,j;    
    for(j=8;j>0;j--)
    {
        DSPORT=0;//ÏȽ«×ÜÏßÀ­µÍ1us
        i++;
        DSPORT=1;//È»ºóÊÍ·Å×ÜÏß
        i++;
        i++;//ÑÓʱ6usµÈ´ýÊý¾ÝÎȶ¨
        bi=DSPORT;     //¶ÁÈ¡Êý¾Ý£¬´Ó×îµÍλ¿ªÊ¼¶ÁÈ¡
        /*½«byte×óÒÆһλ£¬È»ºóÓëÉÏÓÒÒÆ7λºóµÄbi£¬×¢ÒâÒƶ¯Ö®ºóÒƵôÄÇλ²¹0¡£*/
        byte=(byte>>1)|(bi<<7);                          
        i=4;        //¶ÁÈ¡ÍêÖ®ºóµÈ´ý48usÔÙ½Ó×ŶÁÈ¡ÏÂÒ»¸öÊý
        while(i--);
    }                
    return byte;
}

void  Ds18b20ChangTemp()
{
    Ds18b20Init();
    Delay1ms(1);
    Ds18b20WriteByte(0xcc);        //Ìø¹ýROM²Ù×÷ÃüÁî         
    Ds18b20WriteByte(0x44);        //ζÈת»»ÃüÁî
//    Delay1ms(100);    //µÈ´ýת»»³É¹¦£¬¶øÈç¹ûÄãÊÇһֱˢ×ŵĻ°£¬¾Í²»ÓÃÕâ¸öÑÓʱÁË
   
}

void  Ds18b20ReadTempCom()
{    
    Ds18b20Init();
    Delay1ms(1);
    Ds18b20WriteByte(0xcc);     //Ìø¹ýROM²Ù×÷ÃüÁî
    Ds18b20WriteByte(0xbe);     //·¢ËͶÁȡζÈÃüÁî
}

int Ds18b20Read_Temp()
{
    int temp=0;
    unsigned char tmh,tml;
    Ds18b20ChangTemp();                 //ÏÈдÈëת»»ÃüÁî
    Ds18b20ReadTempCom();            //È»ºóµÈ´ýת»»Íêºó·¢ËͶÁȡζÈÃüÁî
    tml=Ds18b20ReadByte();        //¶ÁȡζÈÖµ¹²16룬ÏȶÁµÍ×Ö½Ú
    tmh=Ds18b20ReadByte();        //ÔÙ¶Á¸ß×Ö½Ú
    temp=tmh;
    temp<<=8;
    temp|=tml;
    return temp;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值