《18B20温度传感器驱动程序.docx》由会员分享,可在线阅读,更多相关《18B20温度传感器驱动程序.docx(5页珍藏版)》请在第一文库网上搜索。
1、*18B20测试功能:用数码管显示温度接线:用杜邦线将DATA接到P37,用跳线帽连接J8的*/#inc1ude#defineuintunsignedint#defineucharunsignedcharsbitd=P37;/定义18b20数据线ucharcodewu=0x7f,Oxbf,OxdfzOxefzOxf7z0xfb,Oxfd,Oxfe;位选数据ucharcodedu=0c0,0xf9z0xa4z0xb0,0x99,0x92,0x82z0xf8z0x80z0x90,0x40,0x79z0x24z0x30z0x19z0x12,0x02,0x78,0x00,0x10,断选数据Oxff7O
2、xbf/关显示和负号);ucharStr;存放待显示的数据/*函数名称:de1ayms;函数功能:延时Z亳秒;形参:z(延时时间参数)*/voidde1ayms(ucharz)(uintxzy;for(x=z;x0;x-)for(y=110;y0;y-);)*函数名称:disp1ay();函数功能:数码管显示子函数形参:d1(选择第几位数码管)d2(数码管显示的数字)*/voiddisp1ay(ucharduchard2)voidde1ay(uintz)(whi1e(z-);*初始化ds1820*/voidreset()d=1;/d复位de1ay(8);/稍做延时d=0;/单片机将DQ拉低de
3、1ay(80);/精确延时大于480usd=1;/拉高总线de1ay(35);)/*p*voidwrite_b20(uchardat)uchari;for(i=0;i=1;)/给脉冲信号/给数据信息/*ucharread_b20()ucharizdat;for(i=0;i=1;给脉冲信号d=1;if(d=1)dat=080;de1ay(4);)returndat;)/*/J7*voidwrite_com()reset();WritJb20(0XCe);/跳过读序号列号的操作Writej)20(0x44);/启动温度转换读温度intread_temper()(inttemper;uchara,b
4、;reset();write-b20(0xcc);write-b2O(Oxbe);EA=O;a=read_b20();b=read_b20();EA=I;temper=b;temper=8;temper=a;temper*=0.625;returntemper;)voidmain()(inttemper;ucharizj;whi1e(1)跳过读序号列号的操作读取温度寄存器读低8位读高8位write_com();for(j=0;j150;j+)(for(i=0;i5;i+)disp1ay(i,stri);)temper=read-temper();if(temperO)(str4=21;temper=zvtemper+1;)e1se(str4=20;/启动温度转换温度动态显示读温度第五位数码管显示负号如果温度为负取反加1第五位数码管不显示)str3=temper1000;str2=temper100%10;str1=temper10%10+10;str0=temper%10;for(j=0;j10;j+)(for(i=0;i5;i+)disp1ay(izstri);)