资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
基于51单片机DS18B20温度传感器的C语言程序和电路DS18B20在外形上和三极管很像,有三只脚。电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 至+125 。温度传感器可编程的分辨率为912位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统。 下面是DS18B20的子程序,本人用过完全可行的:#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P20; void reset(); /DS18B20复位函数void write_byte(uchar val); /DS18B20写命令函数uchar read_byte(void); /DS18B20读1字节函数void read_temp(); /温度读取函数void work_temp(); /温度数据处理函数uchar data temp_data2=0x00,0x00;uchar data display5=0x00,0x00,0x00,0x00,0x00; /对于温度显示值值 uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09; /温度小数部分查表 main() while(1) 自己添加;void delay1(uint t)for(;t0;t-);/温度控制子函数 void reset()uchar presence=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;void write_byte(uchar val)uchar i;for(i=8;i0;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 value=0;for(i=8;i0;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);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_data1127) temp_data1=(256-temp_data1); temp_data0=(256-temp_data0); n=1; /需要前面宏定义 display4=temp_data0&0x0f; /低位的低4位 display0=ditabdisplay4; /小数点后的数值display4=(temp_data0&0xf0) 4)|(temp_data1&0x0f)4); /小数点前的数值 display3=display4 / 100;display1=display4 % 100;display2=display1 / 10; display1=display1 % 10;电路:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号