基于51单片机DS18B20温度传感器的C语言程序和电路.doc

上传人:b****3 文档编号:2590204 上传时间:2022-11-02 格式:DOC 页数:4 大小:192.50KB
下载 相关 举报
基于51单片机DS18B20温度传感器的C语言程序和电路.doc_第1页
第1页 / 共4页
基于51单片机DS18B20温度传感器的C语言程序和电路.doc_第2页
第2页 / 共4页
基于51单片机DS18B20温度传感器的C语言程序和电路.doc_第3页
第3页 / 共4页
基于51单片机DS18B20温度传感器的C语言程序和电路.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机DS18B20温度传感器的C语言程序和电路.doc

《基于51单片机DS18B20温度传感器的C语言程序和电路.doc》由会员分享,可在线阅读,更多相关《基于51单片机DS18B20温度传感器的C语言程序和电路.doc(4页珍藏版)》请在冰豆网上搜索。

基于51单片机DS18B20温度传感器的C语言程序和电路.doc

基于51单片机DS18B20温度传感器的C语言程序和电路

DS18B20在外形上和三极管很像,有三只脚。

电压范围为3.0V至5.5V无需备用电源测量温度范围为-55至+125℃。

温度传感器可编程的分辨率为9~12位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统。

  

下面是DS18B20的子程序,本人用过完全可行的:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P2^0;           

voidreset();                               //DS18B20复位函数

voidwrite_byte(ucharval);      //DS18B20写命令函数

ucharread_byte(void);            //DS18B20读1字节函数

voidread_temp();                    //温度读取函数

voidwork_temp();                 //温度数据处理函数

uchardatatemp_data[2]={0x00,0x00};

uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};      //对于温度显示值值   

ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};            //温度小数部分查表     

main()

{

while

(1)

{

     自己添加;

}

}

voiddelay1(uintt)

{

for(;t>0;t--);

}

///////温度控制子函数     

voidreset()

{

ucharpresence=1;

while(presence)

  {

   while(presence)

    {

      DQ=1;_nop_();_nop_();

      DQ=0;

      delay1(50);

      DQ=1;

      delay1(6);

      presence=DQ;

    }

   delay1(45);

   presence=~DQ;

  }

DQ=1;

}

voidwrite_byte(ucharval)

{

uchari;

for(i=8;i>0;i--)

  {

   DQ=1;_nop_();_nop_();

   DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();

   DQ=val&0x01;

   delay1(6);

   val=val/2;

  }

DQ=1;

_nop_();

}

ucharread_byte(void)

{

uchari;

ucharvalue=0;

for(i=8;i>0;i--)

  {

    DQ=1;_nop_();_nop_();

    value>>=1;

    DQ=0;

    _nop_();_nop_();_nop_();_nop_();

    DQ=1;_nop_();_nop_();_nop_();_nop_();

    if(DQ)value|=0x80;

    delay1(6);

  }

DQ=1;

return(value);

}

voidread_temp()

{

reset();

write_byte(0xcc);

write_byte(0xbe);

temp_data[0]=read_byte();

temp_data[1]=read_byte();

reset();

write_byte(0xcc);

write_byte(0x44);

}

voidwork_temp()

{

if(temp_data[1]>127)

  {

   temp_data[1]=(256-temp_data[1]);

   temp_data[0]=(256-temp_data[0]);

   n=1;        //需要前面宏定义    

  }

display[4]=temp_data[0]&0x0f;          //低位的低4位      

display[0]=ditab[display[4]];          //小数点后的数值

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);        //小数点前的数值        

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;            

display[1]=display[1]%10;

}

电路:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1