资讯详情

ds18b20温度传感器

ds18b20:单总线数字温度计,可编程分辨率。 供电电压:3.0V–5.5V 测温范围为:-55– 125摄氏度 测温精度:-10– 85摄氏度 (上下浮动5摄氏度) 在芯片中,有9个字节的临时存储器

0 温度LSB 1 温度MSB 2 TH用户字节 3 TL用户字节 4 配置寄存器(转换精度9–12位) 5、6、7 保留 8 CRC

#define ds1302_sec_add 0x80  #define ds1302_min_add 0x82  #define ds1302_hr_add 0x84  #define ds1302_date_add 0x86  #define ds1302_month_add 0x88  #define ds1302_day_add 0x8a  #define ds1302_year_add 0x8c  #define ds1302_control_add 0x8e  #define ds1302_charger_add 0x90  #define ds1302_clkburst_add 0xbe  sbit SCK = P2^2; sbit IO = P2^3; sbit RST = P2^4;  //位写入时序 void ds1302_write_byte(unsigned char addr, unsigned char byte) {    unsigned char i;       addr = addr & 0xfe;       SCK = 0;       RST = 0;        RST = 1;       for(i = 0; i < 8; i  )       {         IO = addr & 0x01;               SCK = 0;               SCK = 1;               addr >>= 1;     }      for(i = 0; i < 8; i  )       {         IO = byte & 0x01;               SCK = 0;               SCK = 1;               byte >>= 1;    } }  //读出 unsigned char ds1302_read_byte(unsigned char addr) {    unsigned char i;       unsigned char temp = 0;       addr = addr & 0xfe;       SCK = 0;       RST = 0;        RST = 1;       addr =addr   1;       for(i = 0; i < 8; i  )       {         IO = addr & 0x01;               SCK = 0;               SCK = 1;               addr >>= 1;         }         for(i = 0; i < 8; i  )         {        SCK = 1;               SCK = 0;               temp >>= 1;               if(IO)              {             temp  = 0x80;         }       }
        RST = 0;
        return temp;
}

void ds1302_write_time()
{
      unsigned char temp;
      unsigned char temp1;
      unsigned char i;
      for(i = 0; i < 7; i++)
      {
              temp = timebuf[i]/10;
              temp1 = timebuf[i]%10;
              disbuf[i] = (temp << 4) | temp1;
      }
        ds1302_write_byte(ds1302_control_add, 0x00);
        ds1302_write_byte(ds1302_hr_add, disbuf[0]);
        ds1302_write_byte(ds1302_min_add, disbuf[1]);
        ds1302_write_byte(ds1302_sec_add, disbuf[2]);
        ds1302_write_byte(ds1302_year_add, disbuf[3]);
        ds1302_write_byte(ds1302_month_add, disbuf[4]);
        ds1302_write_byte(ds1302_date_add, disbuf[5]);
        ds1302_write_byte(ds1302_day_add, disbuf[6]);
        ds1302_write_byte(ds1302_control_add, 0x80);
}
void ds1302_read_time()
{
      unsigned char temp;
      unsigned char temp1;
      unsigned char i;
      readbuf[0] = ds1302_read_byte(ds1302_hr_add);
      readbuf[1] = ds1302_read_byte(ds1302_min_add);
      readbuf[2] = ds1302_read_byte(ds1302_sec_add);
      readbuf[3] = ds1302_read_byte(ds1302_year_add);
      readbuf[4] = ds1302_read_byte(ds1302_month_add);
      readbuf[5] = ds1302_read_byte(ds1302_date_add);
      readbuf[6] = ds1302_read_byte(ds1302_day_add);

      for(i = 0; i < 7; i++)
      {
              temp = readbuf[i]>>4;
              temp1 = readbuf[i]&0x0f;
              disbuf[i] = temp*10+temp1;
       }
}

标签: hr温度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台