《DS18b20温度传感器教学文案.doc》由会员分享,可在线阅读,更多相关《DS18b20温度传感器教学文案.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。DS18b20温度传感器-最小的温度显示程序-c51(2010-12-0700:45:27)转载标签:杂谈分类:51单片机#include#includesbitDQ=P20;bitpresence;unsignedchartempl,temph;chararray10=0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x73,0x4c,0x7f,0x4f;voidDelay(unsignedintnum)/可定义延时while(-num);bitInit_DS18B20(void)DQ=1
2、;/DQ复位Delay(8);/稍做延时DQ=0;/单片机将DQ拉低Delay(90);/精确延时大于480usDQ=1;/拉高总线Delay(8);presence=DQ;/如果=0则初始化成功=1则初始化失败Delay(100);DQ=1;return(presence);/返回信号,0=presence,1=nopresenceunsignedintReadOneChar(void)unsignedchari=0;unsignedchardat=0;for(i=8;i0;i-)DQ=0;/给脉冲信号dat=1;/位右移DQ=1;/给脉冲信号等待传感器返回脉冲if(DQ)dat|=0x80
3、;Delay(4);return(dat);voidWriteOneChar(unsignedchardat)unsignedchari=0;for(i=8;i0;i-)DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat=1;voidRead_Temperature(void)Init_DS18B20();WriteOneChar(0xcc);/跳过读序号列号的操作WriteOneChar(0x44);/启动温度转换Init_DS18B20();WriteOneChar(0xCC);/跳过读序号列号的操作WriteOneChar(0xBE);/读取温度寄存器templ=Rea
4、dOneChar();/温度低8位temph=ReadOneChar();/温度高8位voidmain()floattemp;chara;Init_DS18B20();WriteOneChar(0xcc);WriteOneChar(0x44);/启动温度转换Init_DS18B20();WriteOneChar(0xcc);WriteOneChar(0xbe);/读取温度寄存器templ=ReadOneChar();/温度低8位temph=ReadOneChar();/温度高8位temph&=0x07;temp=(templ4)|(temph4);temp+=(templ&0x0f)*0.06
5、25;a=temp/10;P1=arraya;a=temp-10*a;P0=arraya;/*DS18b20温度传感器p3.4作为数据传输口晶振:11.0592M*/#includesbitDQ=P34;inttemperature;voiddelay(intus)ints;for(s=0;sus;s+);voidrst(void)DQ=1;delay(2);DQ=0;delay(30);/精确延时480960usDQ=1;delay(8);unsignedintread(void)inti=0;unsignedintu=0;for(i=0;i=1;DQ=1;if(DQ)u|=0x8000;d
6、elay(4);return(u);voidwrite(unsignedcharku)inti=0;for(i=0;i=1;voidread0(void)/inttemperature;unsignedinttp;unsignedintlsb;rst();write(0xCC);write(0x44);rst();write(0xCC);write(0xBE);tp=read();lsb=(unsignedint)(tp*6.25);/temperature=lsb/100;voidmain(void)while(1)read0();/读温度子程序读到的温度放在全局变量temperature中可以直接显示这个的内容-