⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds18b20数字温度计使用.htm

📁 这是我平时收集的ds18b20的资料现打包下载, 希望对朋友们有用
💻 HTM
📖 第 1 页 / 共 2 页
字号:
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt" 
                      vAlign=top width=48>
                        <P style="TEXT-ALIGN: center" align=center>名称</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 357.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt" 
                      vAlign=top width=477>
                        <P style="TEXT-ALIGN: center" 
                    align=center>引脚功能描述</P></TD></TR>
                    <TR>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 32.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=43>
                        <P>1</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=48>
                        <P>GND</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 357.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=477>
                        <P>地信号</P></TD></TR>
                    <TR>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 32.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=43>
                        <P>2</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=48>
                        <P>DQ</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 357.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=477>
                        <P>数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。</P></TD></TR>
                    <TR style="HEIGHT: 20.55pt">
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 32.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 20.55pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=43>
                        <P>3</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 36pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 20.55pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=48>
                        <P>VDD</P></TD>
                      <TD 
                      style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; WIDTH: 357.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 20.55pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" 
                      vAlign=top width=477>
                        <P>可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。</P></TD></TR></TBODY></TABLE>
                  <P 
                  style="MARGIN-LEFT: 39pt; TEXT-INDENT: -39pt; tab-stops: list 39.0pt left 54.0pt; mso-list: l0 level2 lfo1">3. 
                  DS18B20的使用方法 
                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt">由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。 

                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt">由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 

                  <P style="TEXT-INDENT: 21pt; tab-stops: 54.0pt">DS18B20的复位时序 
                  <P style="tab-stops: 54.0pt"><IMG height=142 
                  src="DS18B20数字温度计使用.files/200692185725580.gif" width=544 
                  v:shapes="_x0000_i1025"> 
                  <P>DS18B20的读时序 
                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">对于DS18B20的读时序分为读0时序和读1时序两个过程。 

                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。 

                  <P style="tab-stops: 54.0pt"><IMG height=152 
                  src="DS18B20数字温度计使用.files/200692185726621.gif" width=544 
                  v:shapes="_x0000_i1026"> 
                  <P style="tab-stops: 54.0pt">DS18B20的写时序 
                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。 

                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt">对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 

                  <P style="tab-stops: 54.0pt"><IMG height=168 
                  src="DS18B20数字温度计使用.files/200692185726360.gif" width=544 
                  v:shapes="_x0000_i1027"> 
                  <P style="tab-stops: 54.0pt">  
                  <P 
                  style="MARGIN-LEFT: 39pt; TEXT-INDENT: -39pt; tab-stops: list 39.0pt left 54.0pt; mso-list: l0 level2 lfo1">4. 
                  实验任务 
                  <P 
                  style="TEXT-INDENT: 21pt; tab-stops: 54.0pt">用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+100度之间,用8位数码管显示出来。 

                  <P 
                  style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt left 54.0pt; mso-list: l5 level1 lfo8">5. 
                  电路原理图 
                  <P style="tab-stops: 54.0pt"><IMG height=564 
                  src="DS18B20数字温度计使用.files/200692185726371.gif" width=544 
                  v:shapes="_x0000_i1028"> 
                  <P style="tab-stops: 54.0pt">  
                  <P 
                  style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt left 54.0pt; mso-list: l5 level1 lfo8">6. 
                  系统板上硬件连线 
                  <P 
                  style="MARGIN-LEFT: 70.3pt; TEXT-INDENT: -49.3pt; tab-stops: list 0cm left 54.0pt; mso-list: l4 level1 lfo3">(1). 
                  把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。 
                  <P 
                  style="MARGIN-LEFT: 70.3pt; TEXT-INDENT: -49.3pt; tab-stops: list 0cm left 54.0pt; mso-list: l4 level1 lfo3">(2). 
                  把“单片机系统”区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。 
                  <P 
                  style="MARGIN-LEFT: 70.3pt; TEXT-INDENT: -49.3pt; tab-stops: list 0cm left 54.0pt; mso-list: l4 level1 lfo3">(3). 
                  把DS18B20芯片插入“四路单总线”区域中的任一个插座中,注意电源与地信号不要接反。 
                  <P 
                  style="MARGIN-LEFT: 70.3pt; TEXT-INDENT: -49.3pt; tab-stops: list 0cm left 54.0pt; mso-list: l4 level1 lfo3">(4). 
                  把“四路单总线”区域中的对应的DQ端子连接到“单片机系统”区域中的P3.7/RD端子上。 
                  <P 
                  style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt; tab-stops: list 36.0pt left 54.0pt; mso-list: l5 level1 lfo8">7. 
                  C语言源程序<BR>#include &lt;AT89X52.H&gt;<BR>#include 
                  &lt;INTRINS.h&gt;<BR> <BR>unsigned char code 
                  displaybit[]={0xfe,0xfd,0xfb,0xf7,<BR>0xef,0xdf,0xbf,0x7f};<BR>unsigned 
                  char code 
                  displaycode[]={0x3f,0x06,0x5b,0x4f,<BR>0x66,0x6d,0x7d,0x07,<BR>0x7f,0x6f,0x77,0x7c,<BR>0x39,0x5e,0x79,0x71,0x00,0x40};<BR>unsigned 
                  char code 
                  dotcode[32]={0,3,6,9,12,16,19,22,<BR>25,28,31,34,38,41,44,48,<BR>50,53,56,59,63,66,69,72,<BR>75,78,81,84,88,91,94,97};<BR>unsigned 
                  char displaycount;<BR>unsigned char 
                  displaybuf[8]={16,16,16,16,16,16,16,16};<BR>unsigned char 
                  timecount;<BR>unsigned char readdata[8];  <BR>sbit 
                  DQ=P3^7;<BR>bit sflag;<BR> <BR>bit 
                  resetpulse(void)<BR>{<BR>unsigned char 
                  i;<BR> <BR>DQ=0;<BR>for(i=255;i&gt;0;i--);<BR>DQ=1;<BR>for(i=60;i&gt;0;i--);<BR>return(DQ);<BR>for(i=200;i&gt;0;i--);<BR>}<BR> <BR>void 
                  writecommandtods18b20(unsigned char command)<BR>{<BR>unsigned 
                  char i;<BR>unsigned char 
                  j;<BR> <BR>for(i=0;i&lt;8;i++)<BR>{<BR>if((command &amp; 
                  0x01)==0)<BR>{<BR>DQ=0;<BR>for(j=35;j&gt;0;j--);<BR>DQ=1;<BR>}<BR>else<BR>{<BR>DQ=0;<BR>for(j=2;j&gt;0;j--);<BR>DQ=1;<BR>for(j=33;j&gt;0;j--);<BR>}<BR>command=_cror_(command,1);<BR>}<BR>}<BR> <BR>unsigned 
                  char readdatafromds18b20(void)<BR>{<BR>unsigned char 
                  i;<BR>unsigned char j;<BR>unsigned char 
                  temp;<BR> <BR>temp=0;<BR>for(i=0;i&lt;8;i++)<BR>{<BR>temp=_cror_(temp,1);<BR>DQ=0;<BR>_nop_();<BR>_nop_();<BR>DQ=1;<BR>for(j=10;j&gt;0;j--);<BR>if(DQ==1)<BR>{<BR>temp=temp 
                  | 0x80;<BR>}<BR>else<BR>{<BR>temp=temp | 
                  0x00;<BR>}<BR>for(j=200;j&gt;0;j--);<BR>}<BR>return(temp);<BR>}<BR> <BR>void 
                  main(void)<BR>{<BR>TMOD=0x01;<BR>TH0=(65536-4000)/256;<BR>TL0=(65536-4000)%256;<BR>ET0=1;<BR>EA=1;<BR> <BR>while(resetpulse());<BR>writecommandtods18b20(0xcc);<BR>writecommandtods18b20(0x44);<BR>TR0=1;<BR>while(1)<BR>{<BR>;<BR>}<BR>}<BR> <BR>void 
                  t0(void) interrupt 1 using 0<BR>{<BR>unsigned char 
                  x;<BR>unsigned int 
                  result;<BR> <BR>TH0=(65536-4000)/256;<BR>TL0=(65536-4000)%256;<BR>if(displaycount==2)<BR>{<BR>P0=displaycode[displaybuf[displaycount]] 
                  | 
                  0x80;<BR>}<BR>else<BR>{<BR>P0=displaycode[displaybuf[displaycount]];<BR>}<BR>P2=displaybit[displaycount];<BR>displaycount++;<BR>if(displaycount==8)<BR>{<BR>displaycount=0;<BR>}<BR> <BR>timecount++;<BR>if(timecount==150)<BR>{<BR>timecount=0;<BR>while(resetpulse());<BR>writecommandtods18b20(0xcc);<BR>writecommandtods18b20(0xbe);<BR>readdata[0]=readdatafromds18b20();<BR>readdata[1]=readdatafromds18b20();<BR>for(x=0;x&lt;8;x++)<BR>{<BR>displaybuf[x]=16;<BR>}<BR>sflag=0;<BR>if((readdata[1] 
                  &amp; 
                  0xf8)!=0x00)<BR>{<BR>sflag=1;<BR>readdata[1]=~readdata[1];<BR>readdata[0]=~readdata[0];<BR>result=readdata[0]+1;<BR>readdata[0]=result;<BR>if(result&gt;255)<BR>{<BR>readdata[1]++;<BR>}<BR>}<BR>readdata[1]=readdata[1]&lt;&lt;4;<BR>readdata[1]=readdata[1] 
                  &amp; 0x70;<BR>x=readdata[0];<BR>x=x&gt;&gt;4;<BR>x=x &amp; 
                  0x0f;<BR>readdata[1]=readdata[1] | 
                  x;<BR>x=2;<BR>result=readdata[1];<BR>while(result/10)<BR>{<BR>displaybuf[x]=result%10;<BR>result=result/10;<BR>x++;<BR>}<BR>displaybuf[x]=result;<BR>if(sflag==1)<BR>{<BR>displaybuf[x+1]=17;<BR>}<BR>x=readdata[0] 
                  &amp; 
                  0x0f;<BR>x=x&lt;&lt;1;<BR>displaybuf[0]=(dotcode[x])%10;<BR>displaybuf[1]=(dotcode[x])/10;<BR>while(resetpulse());<BR>writecommandtods18b20(0xcc);<BR>writecommandtods18b20(0x44);<BR>}<BR>} 
                  </P><SPAN class=style1>(<A class=link3 
                  href="http://www.avrw.com/" 
                target=_parent>综合电子论坛</A>)</SPAN></TD></TR></TBODY></TABLE>
            <P 
            align=center>&nbsp;*注:部份文章为网上收录供大家共同学习参考之用,并不代表本站意见。如存在版权问题请马上通知我们,我们将马上删除。</P></TD></TR></TBODY></TABLE></P></TD></TR></TBODY></TABLE>
<SCRIPT src="DS18B20数字温度计使用.files/floor.htm"></SCRIPT>

<SCRIPT src="DS18B20数字温度计使用.files/homeright.js"></SCRIPT>

<SCRIPT language=javascript src="DS18B20数字温度计使用.files/339405.js" 
type=text/javascript></SCRIPT>
<NOSCRIPT><A href="http://www.51.la/?339405" target=_blank><IMG 
style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" 
alt=我要啦免费统计 src="DS18B20数字温度计使用.files/go.htm"></A></NOSCRIPT>
<SCRIPT language=JavaScript src="DS18B20数字温度计使用.files/stat.htm" 
charset=gb2312></SCRIPT>

<SCRIPT src="DS18B20数字温度计使用.files/shownum.htm"></SCRIPT>
 </BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -