《基于51单片机DS18B20温度传感器的C语言程序和电路(共4页).doc》由会员分享,可在线阅读,更多相关《基于51单片机DS18B20温度传感器的C语言程序和电路(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上基于51单片机DS18B20温度传感器的C语言程序和电路DS18B20在外形上和三极管很像,有三只脚。电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 至+125 。温度传感器可编程的分辨率为912位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统。 下面是DS18B20的子程序,本人用过完全可行的:#include<reg51.h>#include<intrins.h>#define uchar un
2、signed char#define uint unsigned intsbit DQ=P20; void reset();
3、0; /DS18B20复位函数void write_byte(uchar val); /DS18B20写命令函数uchar read_byte(void); /DS18B20读1字节函数void read_temp();
4、0; /温度读取函数void work_temp(); /温度数据处理函数uchar data temp_data2=0x00,0x00;uchar data display5=0x00,0x00,0x00,0x00,0x00;
5、; /对于温度显示值值 uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09; /温度小数部分查表 main() while(1) 自己添加;void d
6、elay1(uint t)for(;t>0;t-);/温度控制子函数 void reset()uchar presence=1;while(presence) while(presence) DQ=1;_nop_();_nop_(); DQ=0;
7、0; delay1(50); DQ=1; delay1(6); presence=DQ; delay1(45); presence=DQ; DQ=1;void write_byte(uchar val)
8、uchar i;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_();uchar read_byte(void)uchar i;uchar val
9、ue=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(
10、DQ)value|=0x80; delay1(6); DQ=1;return(value);void read_temp()reset();write_byte(0xcc);write_byte(0xbe);temp_data0=read_byte();temp_data1=read_byte();reset();write_byte(0xcc);write_byte(0x44);void work_temp()if(temp_data1>127) tem
11、p_data1=(256-temp_data1); temp_data0=(256-temp_data0); n=1; /需要前面宏定义 display4=temp_data0&0x0f; /低位的低4位
12、160; display0=ditabdisplay4; /小数点后的数值display4=(temp_data0&0xf0) >> 4)|(temp_data1&0x0f)<<4); /小数点前的数值 display3=display4 / 100;display1=display4 % 100;display2=display1 / 10; display1=display1 % 10;电路: 专心-专注-专业