<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[一片DS18B20构成测温系统C程序 ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 03 Dec 2008 06:20:55 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;用一片DS18B20构成测温系统，测量的温度精度达到0.1度，测量的温度的范围在－20度到＋100度之间，用8位数码管显示出来。<br/><br/><br/><div class="code">#i nclude &lt;AT89X52.H&gt;<br/> <br/>#i nclude &lt;INTRINS.h&gt;<br/> <br/> <br/> <br/>unsigned char code displaybit&#91;&#93;=&#123;0xfe,0xfd,0xfb,0xf7,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0xef,0xdf,0xbf,0x7f&#125;;<br/> <br/>unsigned char code displaycode&#91;&#93;=&#123;0x3f,0x06,0x5b,0x4f,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x66,0x6d,0x7d,0x07,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x7f,0x6f,0x77,0x7c,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x39,0x5e,0x79,0x71,0x00,0x40&#125;;<br/> <br/>unsigned char code dotcode&#91;32&#93;=&#123;0,3,6,9,12,16,19,22,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25,28,31,34,38,41,44,48,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50,53,56,59,63,66,69,72,<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;75,78,81,84,88,91,94,97&#125;;<br/> <br/>unsigned char displaycount;<br/> <br/>unsigned char displaybuf&#91;8&#93;=&#123;16,16,16,16,16,16,16,16&#125;;<br/> <br/>unsigned char timecount;<br/> <br/>unsigned char readdata&#91;8&#93;;<br/> <br/> <br/> <br/>sbit DQ=P3^7;<br/> <br/>bit sflag;<br/> <br/> <br/> <br/> <br/> <br/>bit resetpulse(void)<br/> <br/>&#123;<br/> <br/>&nbsp;&nbsp;unsigned char i;<br/> <br/> <br/> <br/>&nbsp;&nbsp;DQ=0;<br/> <br/>&nbsp;&nbsp;for(i=255;i&gt;0;i--);<br/> <br/>&nbsp;&nbsp;DQ=1;<br/> <br/>&nbsp;&nbsp;for(i=60;i&gt;0;i--);<br/> <br/>&nbsp;&nbsp;return(DQ);<br/> <br/>&nbsp;&nbsp;for(i=200;i&gt;0;i--);<br/> <br/>&#125;<br/> <br/> <br/> <br/>void writecommandtods18b20(unsigned char command)<br/> <br/>&#123;<br/> <br/>&nbsp;&nbsp;unsigned char i;<br/> <br/>&nbsp;&nbsp;unsigned char j;<br/> <br/> <br/>&nbsp;&nbsp;for(i=0;i&lt;8;i++)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((command &amp; 0x01)==0)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=35;j&gt;0;j--);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=1;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=2;j&gt;0;j--);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=1;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=33;j&gt;0;j--);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command=_cror_(command,1);&nbsp;&nbsp;&nbsp;&nbsp; <br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&#125;<br/> <br/> <br/> <br/>unsigned char readdatafromds18b20(void)<br/> <br/>&#123;<br/> <br/>&nbsp;&nbsp;unsigned char i;<br/> <br/>&nbsp;&nbsp;unsigned char j;<br/> <br/>&nbsp;&nbsp;unsigned char temp;<br/> <br/> <br/> <br/>&nbsp;&nbsp;temp=0;<br/> <br/>&nbsp;&nbsp;for(i=0;i&lt;8;i++)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=_cror_(temp,1);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nop_();<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DQ=1;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=10;j&gt;0;j--);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(DQ==1)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=temp &#124; 0x80;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=temp &#124; 0x00;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j=200;j&gt;0;j--);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;return(temp);<br/> <br/>&#125;<br/> <br/> <br/> <br/>void main(void)<br/> <br/>&#123;<br/> <br/>&nbsp;&nbsp;TMOD=0x01;<br/> <br/>&nbsp;&nbsp;TH0=(65536-4000)/256;<br/> <br/>&nbsp;&nbsp;TL0=(65536-4000)%256;<br/> <br/>&nbsp;&nbsp;ET0=1;<br/> <br/>&nbsp;&nbsp;EA=1;<br/> <br/> <br/> <br/>&nbsp;&nbsp;while(resetpulse());<br/> <br/>&nbsp;&nbsp;writecommandtods18b20(0xcc);<br/> <br/>&nbsp;&nbsp;writecommandtods18b20(0x44);<br/> <br/>&nbsp;&nbsp;TR0=1;<br/> <br/>&nbsp;&nbsp;while(1)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&#125;<br/> <br/> <br/> <br/>void t0(void) interrupt 1 using 0<br/> <br/>&#123;<br/> <br/>&nbsp;&nbsp;unsigned char x;<br/> <br/>&nbsp;&nbsp;unsigned int result;<br/> <br/> <br/> <br/>&nbsp;&nbsp;TH0=(65536-4000)/256;<br/> <br/>&nbsp;&nbsp;TL0=(65536-4000)%256;<br/> <br/>&nbsp;&nbsp;if(displaycount==2)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=displaycode&#91;displaybuf&#91;displaycount&#93;&#93; &#124; 0x80;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=displaycode&#91;displaybuf&#91;displaycount&#93;&#93;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;P2=displaybit&#91;displaycount&#93;;<br/> <br/>&nbsp;&nbsp;displaycount++;<br/> <br/>&nbsp;&nbsp;if(displaycount==8)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displaycount=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/> <br/> <br/>&nbsp;&nbsp;timecount++;<br/> <br/>&nbsp;&nbsp;if(timecount==150)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timecount=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(resetpulse());<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writecommandtods18b20(0xcc);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writecommandtods18b20(0xbe);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;0&#93;=readdatafromds18b20();<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;=readdatafromds18b20();<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(x=0;x&lt;8;x++)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displaybuf&#91;x&#93;=16;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sflag=0;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((readdata&#91;1&#93; &amp; 0xf8)!=0x00)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sflag=1;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;=~readdata&#91;1&#93;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;0&#93;=~readdata&#91;0&#93;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=readdata&#91;0&#93;+1;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;0&#93;=result;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(result&gt;255)<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;++;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;=readdata&#91;1&#93;&lt;&lt;4;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;=readdata&#91;1&#93; &amp; 0x70;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=readdata&#91;0&#93;;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=x&gt;&gt;4;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=x &amp; 0x0f;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;readdata&#91;1&#93;=readdata&#91;1&#93; &#124; x;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=2;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=readdata&#91;1&#93;;</div>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 一片DS18B20构成测温系统C程序 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>