电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

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

2022-05-10 14:07分类:传感器 阅读:

 

  DS18B20是较常用的数字化温度感应器,具备体型小,硬件配置花销低,抗干扰性强,高精度的特性。关键依据使用场所的差异而更改其外型。封裝后的DS18B20可用以缆沟温度测量,炼铁高炉水循环系统温度测量,加热炉温度测量,主机房温度测量,蔬菜大棚温度测量,净化室温度测量,弹药库温度测量等各种各样非極限溫度场所。耐磨损耐碰,体型小,方便使用,封裝多种形式,适用各种各样狭窄室内空间机器设备数据温度测量和操纵行业。

  51单片机设计是对全部兼容Intel 8031计算机指令的51单片机的通称。该系类51单片机的鼻祖是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;

  smg_change[2]=dian/10 ;

  smg_change[3]=dian ;

  }

  void main()

  {

  while(1)

  {

  A=readtempr();

  dis_deal();

  display();

  }

  }

上一篇:DS18B20的时序及代码解析

下一篇:ccd传感器的应用

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部