资源简介

基于51单片机和DS18B20的温度控制器(带Pretues仿真),对学习51单片机,学习LCD1602,和DS18B20的应用,是不错的资料,每个模块独立,简单,KielC开发环境。

资源截图

代码片段和文件信息

#include“ds18b20.h“

/******************************ds1820程序***************************************/
 void delay_18B20(unsigned int i)//延时1微秒
{
  while(i--);
}
//************************************************************
// ds18b20复位
//**********************************************************
void ds1820rst()
 {  
uchar x=0;
DQ = 1;           //DQ复位
delay_18B20(4);   //延时
DQ = 0;           //DQ拉低
delay_18B20(100);  //精确延时大于480us
DQ = 1;           //拉高
    delay_18B20(40);  
   }  

//***************************************************
// 读数据
//***************************************************  
uchar ds1820rd()
  { 
uchar i=0;
uchar dat = 0;
 for (i=8;i>0;i--)
 {   
DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
  dat|=0x80;
delay_18B20(10);
 }
  return(dat);
  }

//************************************************
// 写数据
//******************************************************
  void ds1820wr(uchar wdata)
  {
uchar i=0;
    for (i=8; i>0; i--)
   { 
 DQ = 0;
     DQ = wdata&0x01;
     delay_18B20(10);
     DQ = 1;
     wdata>>=1;
   }
 }
  
//*****************************************************
// 读取温度并转换温度
//*************************************************
uint read_temp()
 {
uchar ab;
// EA=1;
   ds1820rst();    
   ds1820wr(0xcc);//*跳过读序列号*/
   ds1820wr(0x44);//*启动温度转换*/
  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.625);//温度值扩大10倍,精确到1位小数
// EA=1;

    return(tvalue);

  }
/*****************************温度值显示**************************************/
void ds1820disp()
{    
     uchar flagdat;
 disdata[0]=tvalue/1000+0x30;//百位数
     disdata[1]=tvalue%1000/100+0x30;//十位数
     disdata[2]=tvalue%100/10+0x30;//个位数
     disdata[3]=tvalue%10+0x30;//小数位
    
     if(tflag==0)
    flagdat=0x20; //正温度不显示符号
     else
       flagdat=0x2d; //负温度显示负号:-

    /* if(disdata[0]==0x30)
   {
 disdata[0]=0x20;//如果百位为0,不显示
 if(disdata[1]==0x30)
  {
disdata[1]=0x20;//如果百位为0,十位为0也不显示
  }
}*/
//****************************************************
// 当前温度显示
//********************************************************
   wr_com(0xc5);
   wr_dat(flagdat); //显示符号位
   wr_com(0xc6);
   wr_dat(disdata[0]); //显示百位
   wr_com(0xc7);
   wr_dat(disdata[1]); //显示十位 
   wr_com(0xc8);
   wr_dat(disdata[2]); //显示个位 
   wr_com(0xc9);
   wr_dat(0x2e); //显示小数点 
   wr_com(0xca);
   wr_dat(disdata[3]); //显示小数位
   wr_com(0xcb);
   
   }

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2996  2011-06-29 14:43  temp2\temp2\ds18b20.c

     文件        324  2011-06-29 12:25  temp2\temp2\ds18b20.h

     文件     128253  2011-06-29 19:45  temp2\temp2\Last Loaded 温度控制器.DBK

     文件       2913  2011-06-29 12:51  temp2\temp2\lcd1602.c

     文件        926  2011-06-29 19:33  temp2\temp2\lcd1602.h

     文件        436  2011-06-28 18:24  temp2\temp2\ldc1602.LST

     文件       5115  2002-04-16 15:32  temp2\temp2\STARTUP.A51

     文件      11791  2011-06-29 21:23  temp2\temp2\STARTUP.lst

     文件       4541  2011-06-29 21:23  temp2\temp2\temp.c

     文件       6905  2011-06-29 21:23  temp2\temp2\temp.hex

     文件      30963  2011-06-29 21:23  temp2\temp2\temp.M51

    .......      2091  2011-06-29 20:45  temp2\temp2\temp_Opt.Bak

     文件       4127  2011-06-29 21:25  temp2\temp2\temp.plg

    .......      2157  2011-06-29 20:45  temp2\temp2\temp_Uv2.Bak

     文件     128247  2011-06-29 20:36  temp2\temp2\温度控制器.DSN

     文件       1054  2011-06-29 21:25  temp2\temp2\温度控制器.PWI

     文件         75  2011-06-29 21:23  temp2\temp2\temp.lnp

     文件        908  2011-06-29 21:23  temp2\temp2\STARTUP.obj

     文件       6456  2011-06-29 21:23  temp2\temp2\ds18b20.LST

     文件       7525  2011-06-29 21:23  temp2\temp2\ds18b20.OBJ

     文件       6545  2011-06-29 21:23  temp2\temp2\lcd1602.LST

     文件       9225  2011-06-29 21:23  temp2\temp2\lcd1602.OBJ

     文件      12830  2011-06-29 21:23  temp2\temp2\temp.LST

     文件      15153  2011-06-29 21:23  temp2\temp2\temp.OBJ

     文件      28555  2011-06-29 21:23  temp2\temp2\temp

     文件       2290  2011-06-29 21:25  temp2\temp2\temp.Uv2

     文件       1452  2011-06-29 21:25  temp2\temp2\temp.Opt

     目录          0  2011-06-29 20:45  temp2\temp2

     目录          0  2011-06-29 10:54  temp2

----------- ---------  ---------- -----  ----

............此处省略2个文件信息

评论

共有 条评论