您的位置 首页 新能源

ds18b20测温程序,ds18b20温度丈量c51单片机程序

本站为您提供的ds18b20测温程序,ds18b20温度测量c51单片机程序,DS18B20是常用的数字温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

  DS18B20是常用的数字温度传感器,具有体积小,硬件开支低,抗干扰才能强,精度高的特色。首要依据使用场合的不同而改动其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温文操控范畴。

  51单片机是对一切兼容Intel 8031指令体系的单片机的总称。该系列单片机的鼻祖是Intel的8004单片机,后来跟着Flash rom技能的开展,8004单片机取得了长足的发展,成为使用最广泛的8位单片机之一,其代表类型是ATMEL公司的AT89系列,它广泛使用于工业测控体系之中。许多公司都有51系列的兼容机型推出,往后很长的一段时间内将占有很多商场。51单片机是根底入门的一个单片机,仍是使用最广泛的一种。需求留意的是51系列的单片机一般不具备自编程才能。接下来咱们一起来了解一下ds18b20温度丈量c51单片机程序。

  ds18b20测温程序,ds18b20温度丈量c51单片机程序

  ds18b20温度丈量c51单片机程序

  #include《reg51.h》

  #define uchar unsigned char

  #define uint unsigned int

  sbit wela=P2^7;

  sbit dula=P2^6;

  sbit DS=P2^2;

  uchar A;

  uint dian;

  uchar smg_change[6]={10,10,10,10,10,10};

  unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

  unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

  void delay(unsigned int a)

  {

  while(a–);

  }

  void init_tempr()

  {

  uchar n;

  DS=1;

  delay(8);

  DS=0;

  delay(80); //500us

  DS=1;

  delay(8);

  n=DS;

  delay(4);

  }

  void write_byte(uchar dat)

  {

  uchar i;

  for(i=0;i《8;i++)

  {

  DS=0;

  DS=dat&0x01;

  delay(4);

  DS=1;

  dat》》=1;

  }

  delay(4);

  }

  uchar read_byte(void)

  {

  uchar i,value;

  for(i=0;i《8;i++)

  {

  DS=0;

  value》》=1;

  DS=1;

  if(DS)

  value|=0x80;

  delay(4);

  }

  return value;

  }

  uchar readtempr(void)

  {

  uint temp, a,b;

  init_tempr();

  write_byte(0xcc);

  write_byte(0x44);

  delay(300);

  init_tempr();

  write_byte(0xcc);

  write_byte(0xbe);

  a=read_byte();

  b=read_byte();

  temp=b;

  temp《《=4;

  temp+=(a&0xf0)》》4;

  dian=(a&0x0f)*10*6/10;

  return temp;

  }

  void display()

  {

  uchar i;

  for(i=0;i《6;i++)

  {

  P0=0X00;

  dula=1;

  dula=0;

  P0=weima[i];

  wela=1;

  wela=0;

  P0=duanma[smg_change[i]];

  dula=1;

  dula=0;

  delay(200);

  }

  P0=weima[1];

  wela=1;

  wela=0;

  P0=duanma[smg_change[1]]|0x80;

  dula=1;

  dula=0;

  delay(200);

  P0=0X00;

  dula=1;

  dula=0;

  }

  void dis_deal()

  {

  smg_change[0]=A/10;

  smg_change[1]= A%10;

  smg_change[2]=dian/10 ;

  smg_change[3]=dian%10 ;

  }

  void main()

  {

  while(1)

  {

  A=readtempr();

  dis_deal();

  display();

  }

  }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/64080.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部