⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temp1.c

📁 初始化ds1820温度传感器
💻 C
字号:
#include <stdio.h>
#include <reg52.h>


sbit DQ=0x97;

void delay(int a)
  {
    for(;a!=0;a--);
  }

unsigned char reset(void)     //复位ds1820
  {
    unsigned char presence;
   DQ=0;  //拉低电平
   delay(60);   //拉低480um
   DQ=1;     //重新拉高
   delay(6);  //等待15-60um
   presence=DQ;    // 接收存在脉冲
   delay(28);     // 存在脉冲为60-240um的低电平信号
   return(presence);  //0:存在  1:不存在
  }

unsigned char read_byte(void)       //读一字节
  {
    unsigned char i;
    unsigned char value=0;
    for (i=8;i>0;i--)
      {
        value>>=1; //移位
        DQ = 1;
        DQ = 0;
        for (i=0; i<5; i++); //延时15um
        if(DQ)
        {
          value|=0x80;  //取值
        }
        delay(8); //
      }
    return(value);
  }


void write_byte(char val)             //写一字节
  {
    unsigned char i;
    for (i=8; i>0; i--)
      {
        DQ = 0;
        DQ = val&0x01;   //取值
        delay(15);
        DQ = 1;
        val=val/2;
      }
    delay(8);
  }

void read_temper(void)               //读取温度
  {
    char temper[10];
   char temper_l,temper_m,temperature;
   int k;
   reset();
   write_byte(0xcc);   // skip rom
   write_byte(0x44);   //温度变换
   delay(15);   //130um
   reset();
   write_byte(0xcc);   // skip rom
   write_byte(0xbe);   //读暂存存储器
   for (k=0;k<9;k++)
     {
       temper[k]=read_byte();  //按位读出数据
     }
   //printf("%x%x%x%x%x%x\n",temper[8],temper[7],temper[6],temper[5],temper[4],temper[3],temper[2],temper[1],temper[0]);
   temper_m=temper[1];
   temper_l=temper[0];
   if (temper_m<=0x80)
     {
       temper_l=(temper_l/2);
     }
   temperature=temper_l;
   //printf("%d",(int)temper);
  }

main()
  {
    unsigned char s;
   PCON=0x00;
   SCON=0x50;
   TMOD=0x21;
   PCON|=0x80;//???
   TH0=TL0=0;
   TH1=TL0=(unsigned int)(256-((12000000/38400)/192));
   TR0=1;
   TR1=1;
   TI=1;
   reset();
   //if (presence)
     {
       write_byte(0xcc);// skip rom
      read_temper();
      //printf("%d",temperature);
     }

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -