基于51单片机DS18B20温度传感器的C语言程序和电路DS18B20在外形上和三极管很像,有三只脚。电压范围为3.0V至5.5V无需备用电源测量温度范围为-55至+125℃。温度传感器可编程的分辨率为9~12位温度转换为12位数字格式最大值为750毫秒用户可定义的非易失性温度报警设置应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统。下面是DS18B20的子程序,本人用过完全可行的:#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitDQ=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(;t0;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;i0;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;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);}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;}电路: