DS18B20详细使用方法
DS8B的具体使用措施DS18B20概述 D1B2数字温度计是ALL公司生产的1-Wire,即单总线器件,具有线路简朴,体积小的特点。因此用它来构成一种测温系统,具有线路简朴,在一根通信线,可以挂诸多这样的数字温度计,十分以便。2、DS18B20产品的特点(1).只规定一种端口即可实现通信。().在8B20中的每个器件上均有独一无二的序列号。()实际应用中不需要外部任何元器件即可实现测温。(4).测量温度范畴在-5。C到25。C之间。()数字温度计的辨别率顾客可以从9位到位选择。(6).内部有温度上、下限告警设立。3、DS1820引脚图及引脚功能简介TO92封装的DS18B2的引脚排列见图1,其引脚功能描述见表。(底视图)图1表1DS8B20具体引脚功能描述.D18B的使用措施由于DS18B采用的是1-Wie总线合同方式,即在一根数据线实现数据的双向传播,而对A89S51单片机来说,硬件上并不支持单总线合同,因此,我们必须采用软件的措施来模拟单总线的合同时序来完毕对DS18芯片的访问。由于DS18B0是在一根IO线上读写数据,因此,对读写的数据位有着严格的时序规定。DS1B2有严格的通信合同来保证各位数据传播的对的性和完整性。该合同定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传播都是从主机积极启动写时序开始,如果规定单总线器件回送数据,在进行写命令后,主机需启动读时序完毕数据接受。数据和命令的传播都是低位在先。S1B的复位时序S18B20的读时序对于DSB20的读时序分为读0时序和读时序两个过程。对于18B2的读时隙是从主机把单总线拉低之后,在1秒之内就得释放单总线,以让D180把数据传播到单总线上。DS18B20在完毕一种读时序过程,至少需要60s才干完毕。DS18B20的写时序对于DS1B0的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的规定不同,当要写0时序时,单总线要被拉低至少60,保证DS8B可以在15us到45us之间可以对的地采样IO总线上的“0”电平,当要写时序时,单总线被拉低之后,在us之内就得释放单总线。D18B20应用电路图用一片S8B0构成测温系统,测量的温度精度达到.1度,测量的温度的范畴在20度到+00度之间,用8位数码管显示出来。下图是采用AT89C2051的测温系统硬件原理图.18B20与AT01构成的测温系统源程序 用一片D18B构成测温系统,测量的温度精度达到0.度,测量的温度的范畴在-0度到+10度之间,用8位数码管显示出来。 下面是采用T89C051单片机与S8B2的测温系统语言源程序,硬件电路请参照本站有关文章.#I Ncud <9X52.H> #Nclude <INTRNS.H>Unigned Char Cod Dsplaybt0xfe,xfd,xfb,0, xf,xdf,0xf,0x7; Unsign Char Code splcoe=0x,0x06,0xb,04f, 0x6,0x6d,x7d,0x0, 0x7f,0x6,0x77,0x7, 0x3,0x5e,079,0x71,x0,0x40; signedCr Cod Doode320,3,9,16,9,2, 25,28,1,34,8,1,,8, 5,53,,5,3,6,6,72, 7,7,81,8,8,1,94,97; sned Char Displayont; nsigned Char Dsplab=6,16,16,16,16,6,16,16; Unsgned Char Ticount; UnsigedCr Readdta8;St DQ=P37; B Slag;BitRsepulse(od) Unsgndhar I; D=0; For(I=55;I>I-); DQ=; For(I=6;I>I-); etun(Q); Fr(I=20;I>0;-);Void Wrtecmandt80(Usign Char Comnd) Unin Char ; Unsigned har J; For(I;<8;I+) If(Command & 0x01)=0) D=0; F(J=35;J;J-); DQ=; l D=0; Fo(J=2;J0;J-); Q=; For(J=33;J0;J-); Cmmad=_cror(Cmad,1); Usigned Ca Readdaafromd8b20(Void) Unine Cha I; Unsied Char; Unsignd Chrem; Tp=0; or(I=;<8;I+) Temp=cr_(Tep,1); D=0; _np(); _nop_(); =1; For(J=1;J>-); If(D=1) Tp=Tm | x80; Else Temp=Temp| x0; or(J=200;J>0;J-); en(Temp); Void Main(Vod) TMO=0x0; H=(6556-4000)256; TL0=(556-4000)256; ET0=; EA=1; Whi(Rsetplse(); itcmmandtods1b0(0xc); iteommandtds18b20(044); R01; hile(1) ; Vod T(oid) Interru1 Using 0 UnigedCar ; Unsigne nt Result; T0=(66-400)/26; T0=(655-000)%256; I(Dplycoun=2) P0=DspacodipaybufDisplont| 0x8; ls P=DsplacodeDilabufDilacoun; P=iplbitiplacoun; Displaunt+; If(splaycn=) Dislacont0; Timcount+;I(Timecot=150) imcou=0; While(esetplse()); Witecmados1b20(xcc); Witommndtd18b20(0xbe); Readta0=adatafromds18b20(); edtaRaddtafrom18b2(); Fr(X=0;X;X+) isplaybuf=16; ag=0; I(Raddata1 & 0f8)!0x00) flag1; Readata1=Readata1; Readdata0=eadaa0; Resul=Readat01; Readdta0=Resut; I(Result>255) Readta+; Readat1=Readdata<<4; Readdata1ada1 & 0x70; X=eata0; X=X> X=X & x0f; Readda=Readaa1 | ; X2; esult=Rada1;