当前位置:首页 > 单片机 > 单片机
[导读]#include <reg51.h> #include<intrins.h>#define BUSY1 (DQ1==0) sbit DQ1 = P0^4; unsigned char idata TMP; unsigned char idata TMP_d; unsigned char f; void wr_ds18_1(char dat); uns

#include <reg51.h>
#include<intrins.h>

#define   BUSY1    (DQ1==0)
sbit      DQ1    =  P0^4;

unsigned char idata TMP;
unsigned char idata TMP_d;
unsigned char f;
void wr_ds18_1(char dat);
unsigned char rd_ds18_1();

/***************延时程序,单位us,大于10us*************/
void time_delay(unsigned char time)
{
 
  time=time-10;
  time=time/6;
  while(time!=0)time--;
}


/*****************************************************/
/*                reset ds18b20                      */
/*****************************************************/
void ds_reset_1(void)
{
  unsigned char idata count=0; 
  DQ1=0;
   time_delay(240);
 time_delay(240);
  DQ1=1;
  return;
}

 

void check_pre_1(void)
{
     while(DQ1);
     while(~DQ1);
  
         time_delay(30);
}


void read_ROM(void)
{
 int n;
 ds_reset_1();
  check_pre_1();
  wr_ds18_1(0x33);
  for(n=0;n<8;n++){ROM[n]=rd_ds18_1();}  
}


/*****************************************************/
/*      Read a bit from 1820      位读取             */
/*****************************************************/
bit tmrbit_1(void)
{
        idata char i=0;
     bit dat;
     
     DQ1=0;_nop_();
   
        DQ1=1;
       
   _nop_();
   _nop_();
   _nop_();
 _nop_();
  _nop_();
   _nop_();
   _nop_();
   _nop_();
        _nop_();
  _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
 
   
     dat = DQ1;
     
        time_delay(50);
     
     return dat;
}

 


/*****************************************************/
/*                read a bety from ds18b20 字节读取  */
/*****************************************************/
unsigned char rd_ds18_1()
{
  unsigned char idata i,j,dat=0;
     for(i=1;i<=8;i++)
     {
         j=tmrbit_1();
         dat=(j<<(i-1))|dat;
     }
     return dat;
}


/*****************************************************/
/*         write a bety from ds18b20   写字节        */
/****************************************************/
void wr_ds18_1(char dat)
{
     signed char  idata i=0;
     unsigned char idata j;
     bit testb;

     for(j=1;j<=8;j++)
     {
         testb=dat & 0x01;
         dat = dat>>1;
         if(testb)
         {
              DQ1=0;
               _nop_();
       _nop_();
              DQ1=1;
            time_delay(60);  
            }
         
         else
         {
              DQ1=0;
              time_delay(50);
                  
              DQ1=1;
               _nop_();
       _nop_();
         }
     }
}

int get_temp_1(void)
{
  unsigned char idata a=0,b=0;
  unsigned char idata i;
  EA=0;
  
  ds_reset_1();
  check_pre_1();
  
  wr_ds18_1(0xcc);                  
  wr_ds18_1(0x44);       
  while(BUSY1);
  
  ds_reset_1();
  check_pre_1();
  wr_ds18_1(0xcc);                
  wr_ds18_1(0xbe);                 
  
  a=rd_ds18_1();
  b=rd_ds18_1();
  
  i=b;   /*若b为1则为负温   */
  i=(i>>4);
  if(i==0)
  {
   f=0;
   TMP=((a>>4)|(b<<4));
  a=(a&0x0f);
  if (a>8)
  {
   TMP=(TMP+1);
  }
  }
  else
  {
   f=1;
  a=a>>4;
   b=b<<4;
      
   TMP=(a|b);
   
   TMP=~TMP;
   TMP=(TMP+1);
  }
  EA=1;
  return(TMP);
}

  
 

int get_temp_d(void)
{
  unsigned char idata a=0,b=0;
  unsigned char idata i,m;
  EA=0;
  
  ds_reset_1();//复位
  check_pre_1();
  
  wr_ds18_1(0xcc);       
  wr_ds18_1(0x44);       
  while(BUSY1);
  
  ds_reset_1();
  check_pre_1();
  wr_ds18_1(0xcc);       
  wr_ds18_1(0xbe);       
  
  a=rd_ds18_1();
  b=rd_ds18_1();
  
  
  i=b;   /*若b为1则为负温   */
  i=(i>>4);
  
  if(i==0)
  {
   f=0;
   TMP=((a>>4)|(b<<4));
  a=(a&0x0f);
  TMP_d=a;
  }
  else
  {
   f=1;
   a=~a;
   a=(a+1);
   b=~b;
   b=(b+1);
   
   m=a;
   a=a>>4;
   b=b<<4;
      
   TMP=(a|b);   
   m=(m&0x0f);
   TMP_d=m;
  }
  
  EA=1;
  return(TMP);
}
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭