DS18B20程序包含温度设置、报警、华氏温度和摄氏温度转换

DS18B20程序包含温度设置、报警、华氏温度和摄氏温度转换
DS18B20程序包含温度设置、报警、华氏温度和摄氏温度转换

# include

# include

float flag=0;

unsigned int up=30,down=20,kf=1,hfflag=1,hf;//up为报警温度上限值,down为报警温度下限值;

//kf为报警温度设定标志位,kf为1,数码管显示温度值,kf=0,进入报警温度设定选项。

//hfflag为摄氏度与华氏温度转换标志位,hfflag=1,显示的为摄氏度值,hfflag=0,显示的为华氏温度值。

//hf为用来存储华氏温度。

sbit DQ = P2^0; //ds18b20 端口

unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39,0x63,0x40,0x71};

//0x39,0x63用来显示摄氏度,0x40用来显示--。

unsigned char tabb[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带有小数点的0-9. void displayset();

void delayms( int x) //延时1ms函数

{

int m,j;

for(m=1;m<=x;m++)

for(j=1;j<=123;j++);

}

void reset()//对ds18b20进行复位

{ unsigned int i;

DQ = 1; //DQ复位

_nop_(); //稍做延时,此为延时1ms函数

DQ = 0; //单片机将DQ拉低

i=70;while(i>0) i--; //根据协议要满足大于480us

DQ = 1; //拉高总线

i=4;while(i>0) i--;

}

void dswait() //等待ds18b20响应的函数

{

while(DQ);

while(~DQ); //检测到应答脉冲

}

bit readone()//读取一位数据

{ unsigned int i;

bit b;

DQ=0;

i++; //根据资料,进行一次unsigned int 型数据的++,大约为8us时间,此处i++,符合协议要求至少保持1us

DQ=1;

i++;i++; //延时约16us, 符合协议要求的至少延时15us以上

b=DQ;

i=8;while(i>0) i--; //延时约64us, 符合读时隙不低于60us要求

return(b);

}

unsigned char readB()//读取一字节数据

{

unsigned int i;

unsigned char j,dat=0;

for(i=0;i<8;i++)

{

j=readone();

dat=(j<<7)|(dat>>1);//将每一次输出的值通过移位相或送到dat

}

return(dat);

}

void writeB(unsigned char dat)//写操作,通过次函数可以控制ds18b20进行一系列操作{

unsigned int i;

unsigned char j;

bit b;

for(j=0;j<8;j++)

{

b= dat & 0x01;

dat >>=1;

if(b) //写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1

{

DQ=0;

i++;i++; //此处延时16us。满足延时15us以后

DQ=1; //将DQ拉高

i=8;while(i>0) i--; //延时约64us, 符合写时隙不低于60us要求

}

else////写"0", 将DQ拉低60us~120us

{

DQ=0;

i=8;while(i>0) i--;

DQ=1;

i++;i++; //整个写0时隙过程已经超过60us

}

}

}

void sendchange()//温度转换

{

reset();

dswait();

delayms(1);

writeB(0xcc); //写入跳过序列号命令字writeB(0x44); //写入温度转换命令字

}

void sendread()//读取数据

{

reset();

dswait();

delayms(1);

writeB(0xcc); //写入跳过序列号命令字writeB(0xbe); //写入读取数据令字

}

int getvalue() //获取温度函数

{

unsigned int tempvalue;

long temp1,temp2;

int value,final;

float t;

unsigned char low,high;

sendread(); //读取数据

low=readB();

high=readB();

tempvalue=high;

tempvalue<<=8;

tempvalue|=low;

value=tempvalue;

t=value * (0.0625); //精度值为0.0625 temp1=t*1000;

temp2=t*100;

if((temp1-temp2*10)>=5)//四舍五入

{

t=t+(0.01);

final=t*100;

hf=(32+t*1.8)*100; //华氏温度转换}

else

{

final=t*100;

hf=(32+t*1.8)*100;

}

flag=t;

return(final);

}

void baojing() //报警函数

{

if(flag>=up||flag<=down)

P2_2=0;

else

P2_2=1;

}

void display() //数码管显示函数

{

unsigned int m,a,b,c,d,e;

if(kf==1) //kf=1,显示温度值,kf=0,进入报警温度设定项{

if(hfflag==0) //hfflag=0,显示华氏温度

{

getvalue();

m=hf;

}

else

m=getvalue();

a=m/10000;

b=(m%10000)/1000;

c=((m%10000)%1000)/100;

d=(((m%10000)%1000)%100)/10;

e=m%10;

if(hfflag==1)

{

P0=tab[10];

P1_0=1;

P1_0=0;

P0=0xfe;

P1_1=1;P1_1=0;delayms(1);

}

if(hfflag==0)

{

P0=tab[13];

P1_0=1;

P1_0=0;

P0=0xfe;

P1_1=1;P1_1=0;delayms(1);

}

P0=tab[11];

P1_0=1;

P1_0=0;

P0=0xfd;

P1_1=1;P1_1=0;delayms(1);

P0=tab[e];

P1_0=0;

P0=0xfb;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d];

P1_0=1;

P1_0=0;

P0=0xf7;

P1_1=1;P1_1=0;delayms(1);

P0=tabb[c];

P1_0=1;

P1_0=0;

P0=0xef;

P1_1=1;P1_1=0;delayms(1);

P0=tab[b];

P1_0=1;

P1_0=0;

P0=0xdf;

P1_1=1;P1_1=0;delayms(1);

P0=tab[a];

P1_0=1;

P1_0=0;

P0=0xbf;

P1_1=1;P1_1=0;delayms(1); baojing();

}

}

void keyscan() //键盘扫描函数{unsigned int a,b,c,d;

for(d=0;d<4;d++)

{

P0=0;

P1_0=1;

P1_0=0;

P0=_crol_(0xfe,d);

P1_1=1;

P1_1=0;

P1_3=0;

a=P0&0x0f;

if(a!=0x0f)

{

delayms(10);

b=P0&0x0f;

if(a==b)

switch(b)

{

case 0x0e:

{

c=0+4*d;

if(c==0) //每按下一次k0,则进行温度设定选项和温度显示值的功能的转换

{kf=!kf;

delayms(250);

while(!kf)

displayset();

}

};break;

case 0x0d:

{

c=1+4*d;

if(c==1&&kf==0)

{

down++; //按下k1,报警温度上限值加1

delayms(200);

}

if(c==5&&kf==0)

{

down--; //按下k5,报警温度上限值减1

delayms(200);

}

};break;

case 0x0b:

{

c=2+4*d;

if(c==2&&kf==0) //按下k2,报警温度下限值加1

{

up++;

delayms(200);

}

if(c==6&&kf==0) //按下k6,报警温度下限值减1

{

up--;

delayms(200);

};break;

case 0x07:

{

c=3+4*d;

if(c==3&&kf==1) //按下k3,进行摄氏度和温度的转换{hfflag=!hfflag;

delayms(250);}

};

break;

default:break;

}

}

}

while(P0&0x0f!=0x0f); //按键释放检测

}

P1_3=1;

}

}

void displayset() //显示报警上限值和和下限值的函数

{

unsigned int set1,set2,d1,d2,d3,d4,d5,d6;

keyscan();

if(up>125)up=0;

if(down>125)down=0;

set1=up;set2=down;

d1=set1/100;

d2=(set1%100)/10;

d3=set1%10;

d4=set2/100;

d5=(set2%100)/10;

d6=set2%10;

P0=tab[d3];

P1_0=1;

P1_0=0;

P0=0xfe;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d2];

P1_0=1;

P1_0=0;

P0=0xfd;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d1];

P1_0=1;

P1_0=0;

P0=0xfb;

P1_1=1;P1_1=0;delayms(1);

P0=tab[12];

P1_0=1;

P1_0=0;

P0=0xe7;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d6];

P1_0=1;

P1_0=0;

P0=0xdf;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d5];

P1_0=1;

P1_0=0;

P0=0xbf;

P1_1=1;P1_1=0;delayms(1);

P0=tab[d4];

P1_0=1;

P1_0=0;

P0=0x7f;P1_1=1;P1_1=0;delayms(1); }

void main()

{

P0=0;

P1=0x0c;

P2=0;

while(1)

{keyscan();

sendchange();

display();

}

}

华氏度和摄氏度的换算

换算: 摄氏温标(°C)和华氏温标(°F)之间的换算关系为: F=C×1.8+32 C=(F-32)÷1.8 例如: 0℃=(0×1.8+32)℉=32℉ 1 华氏度°F = -17.22222222222 2 摄氏度°C 1 华氏度°F = 1 华氏度°F 1 华氏度°F = 255.92777777778 开氏度K 1 华氏度°F = 460.67 兰氏度°Ra 1 华氏度°F = -13.777777777778 列氏度°Re 华氏温度(Fahrenheit)是指用于测量温度的单位。符号℉。摄氏温度被包括中国在内的世界上大多数国家使用。 世界上只有五个国家使用华氏温度,包括巴哈马,伯利兹,不列颠开曼群岛,帕劳,美利坚合众国和其他附属领土(波多黎各,关岛和美属维尔京群岛)。 起源:华氏度(°F)是温度的一种度量单位,以其发明者德国人华伦海特(Gabriel D. Fahrenheit,1686-1736)命名的。1714年他发现液体金属水银比酒精更适宜制造温度计,以水银为测温介质,发明了玻璃水银温度计,选取氯化铵和冰水的混合物的冰点温度为温度计的零度,人体温度为温度计的100度。在标准大气压下,冰的熔点为32℉,水的沸点为212℉,中间有180等分,每等分为华氏1度,

记作"1℉"。 "华氏温标"是经验温标之一。在美国的日常生活中,多采用这种温标,用字母"℉"表示。 1714年德国人法勒海特(Fahrenheit)以水银为测温介质,制成玻璃水银温度计,选取氯化铵和冰水的混合物的温度为温度计的零度,人体温度为温度计的100度,把水银温度计从0度到l00度按水银的体积膨胀距离分成100份,每一份为1华氏度,记作“1℉”。按照华氏温标,则水的冰点为32℉,沸点为212℉。 “华氏温标”是经验温标之一。在美国的日常生活中,多采用这种温标。规定在一大气压下水的冰点为32度,沸点为212度,两个标准点之间分为180等分,每等分代表1度。 华氏温度用字母“F”表示。 寒暑表中通常有两个刻度:摄氏度(记为0℃)和华氏度(记为0℉)。

华氏摄氏温标对照表

FAHRR ENHEIT:CELSIUS °C=(°F-32)*5/9 F℃F℃F℃F℃F℃ -50-46.7488.811143.814562.718182.7 -40-40.0499.4P11244.414663.318283.3 -35-37.25010.011345.014763.818383.8 -30-34.44412.711445.514864.418484.4 -25-31.76015.511546.115065.518585.0 -20-28.96518.311646.615166.118685.5 -15-26.67021.111747.215266.618786.1 -10-23.37523.811847.715367.218886.6 -5-20.68026.611948.315568.318987.2 0-17.78529.412048.815668.819087.7 +1-17.28630.012149.415769.419188.3 5-15.08730.512250.015870.019288.8 10-12.28831.012350.515970.519389.4 15-9.48931.612451.116071.119490.0 20-6.69032.212551.616171.619590.5 25-3.89132.712652.216272.219691.6 30-1.19233.312752.716372.719791.6 31-0.59334.412853.316473.319892.2 3209535.012953.816573.819992.7 33+0.59635.513054.416674.420093.3 34 1.19836.613166.016775.020193.8 35 1.698.637.013255.516875.520294.4

华氏摄氏温标对照表

FAHRR ENHEIT:CELSIUS °C=(°F-32)*5/9 F ℃ F ℃ F ℃ F ℃ F ℃ -50 -46.7 48 8.8 111 43.8 145 62.7 181 82.7 -40 -40.0 49 9.4P 112 44.4 146 63.3 182 83.3 -35 -37.2 50 10.0 113 45.0 147 63.8 183 83.8 -30 -34.4 55 12.7 114 45.5 148 64.4 184 84.4 -25 -31.7 60 15.5 115 46.1 150 65.5 185 85.0 -20 -28.9 65 18.3 116 46.6 151 66.1 186 85.5 -15 -26.6 70 21.1 117 47.2 152 66.6 187 86.1 -10 -23.3 75 23.8 118 47.7 153 67.2 188 86.6 -5 -20.6 80 26.6 119 48.3 155 68.3 189 87.2 0 -17.7 85 29.4 120 48.8 156 68.8 190 87.7 +1 -17.2 86 30.0 121 49.4 157 69.4 191 88.3 5 -15.0 87 30.5 122 50.0 158 70.0 192 88.8 10 -12.2 88 31.0 123 50.5 159 70.5 193 89.4 15 -9.4 89 31.6 124 51.1 160 71.1 194 90.0 20 -6.6 90 32.2 125 51.6 161 71.6 195 90.5 25 -3.8 91 32.7 126 52.2 162 72.2 196 91.6 30 -1.1 92 33.3 127 52.7 163 72.7 197 91.6 31 -0.5 93 34.4 128 53.3 164 73.3 198 92.2 32 0 95 35.0 129 53.8 165 73.8 199 92.7 33 +0.5 96 35.5 130 54.4 166 74.4 200 93.3 34 1.1 98 36.6 131 66.0 167 75.0 201 93.8 35 1.6 98.6 37.0 132 55.5 168 75.5 202 94.4 36 2.2 99 37.2 133 56.1 169 76.1 203 95.0 37 2.7 100 37.7 134 56.6 170 76.6 204 95.5 38 3.3 101 38.3 135 57.2 171 77.2 205 96.1 39 3.8 102 38.8 136 57.7 172 77.7 206 96.6 40 4.4 103 39.4 137 58.3 173 78.3 208 97.7 41 5.0 104 40.0 138 58.8 174 78.8 209 98.8

摄氏温度与华氏温度换算表

摄氏温度与华氏温度换算表 摄氏温度与华氏温度换算表 ℃℉℃℉℃℉℃℉-2735414279 -270-45464380176 -260-43674481 -250-41884511382 -240-40094683 -230-38210504784 -220-364114885185 -210-346124986 -200-328135012087 -190-310145188 -180-29215595289 -170-274165390194 -160-256175491 -150-238185513192 -140-220195693 -130-20220685794 -120-184215895203 -110-166225996 -100-148236014097 -90-130246198 -80-11225776299 -70-942663100212 60-762764100212 -50-582865149110230 -40-402966120248 -30-22308667130266 -20-43168140284 -183269150302 -163370158160320 -143470180356 -129359572190374 -10143673200392 0323774210410 13875167212413 23976220428 34010477230446 44178240464

℃℉℃℉℃℉℃℉25048263011661000183213702498 26050064011841010185013802516 270518765012021020186813902534 28053666012201030188614002552 29055467012381040190414102570 30057268012561050192214202588 31059069012741060194014302606 32060870012921070195814402624 33062671013101080197614502642 34064472013281090199414602660 35066273013461100201214702678 36068074013641110203014802696 37069875013821120204814902714 38071676014001130206615002732 39073477014181140208415102750 40075278014361150210215202768 41077079014541160212015302786 42078880014721170213815402804 43080681014901180215615502822 44082482015081190217415602840 45084283015261200219215702858 46086084015441210221015802876 47087885015621220222815902894 48089686015801230224616002912 49091487015981240226416102930 50093288016161250228216202948 51095089016341260230016302966 52096890016521270231816402984 540100491016701280233616503002 550102292016881290235416603020 560104093017061300237216703038 570105894017241310239016803056 580107695017421320240816903074 590109496017601330244617003092 600111297017781340244417103110 610113098017961350246217203128 620114899018141360248017303146

摄氏、华氏温度换算表

攝氏度及华氏度換算表- Celsius to Fahrenheit 攝氏度华氏度攝氏度华氏度攝氏度华氏度攝氏度华氏度攝氏度华氏度 -99 -146.2 1 33.8 101 213.8 201 393.8 301 573.8 -98 -144.4 2 35.6 102 215.6 202 395.6 302 575.6 -97 -142.6 3 37.4 103 217.4 203 397.4 303 577.4 -96 -140.8 4 39.2 104 219.2 204 399.2 304 579.2 -95 -139.0 5 41.0 105 221.0 205 401.0 305 581.0 -94 -137.2 6 42.8 106 222.8 206 402.8 306 582.8 -93 -135.4 7 44.6 107 224.6 207 404.6 307 584.6 -92 -133.6 8 46.4 108 226.4 208 406.4 308 586.4 -91 -131.8 9 48.2 109 228.2 209 408.2 309 588.2 -90 -130.0 10 50.0 110 230.0 210 410.0 310 590.0 -89 -128.2 11 51.8 111 231.8 211 411.8 311 591.8 -88 -126.4 12 53.6 112 233.6 212 413.6 312 593.6 -87 -124.6 13 55.4 113 235.4 213 415.4 313 595.4 -86 -122.8 14 57.2 114 237.2 214 417.2 314 597.2 -85 -121.0 15 59.0 115 239.0 215 419.0 315 599.0 -84 -119.2 16 60.8 116 240.8 216 420.8 316 600.8 -83 -117.4 17 62.6 117 242.6 217 422.6 317 602.6 -82 -115.6 18 64.4 118 244.4 218 424.4 318 604.4 -81 -113.8 19 66.2 119 246.2 219 426.2 319 606.2 -80 -112.0 20 68.0 120 248.0 220 428.0 320 608.0 -79 -110.2 21 69.8 121 249.8 221 429.8 321 609.8 -78 -108.4 22 71.6 122 251.6 222 431.6 322 611.6 -77 -106.6 23 73.4 123 253.4 223 433.4 323 613.4 -76 -104.8 24 75.2 124 255.2 224 435.2 324 615.2 -75 -103.0 25 77.0 125 257.0 225 437.0 325 617.0 -74 -101.2 26 78.8 126 258.8 226 438.8 326 618.8 -73 -99.4 27 80.6 127 260.6 227 440.6 327 620.6 -72 -97.6 28 82.4 128 262.4 228 442.4 328 622.4 -71 -95.8 29 84.2 129 264.2 229 444.2 329 624.2 -70 -94.0 30 86.0 130 266.0 230 446.0 330 626.0 -69 -92.2 31 87.8 131 267.8 231 447.8 331 627.8 -68 -90.4 32 89.6 132 269.6 232 449.6 332 629.6 -67 -88.6 33 91.4 133 271.4 233 451.4 333 631.4 -66 -86.8 34 93.2 134 273.2 234 453.2 334 633.2 -65 -85.0 35 95.0 135 275.0 235 455.0 335 635.0 -64 -83.2 36 96.8 136 276.8 236 456.8 336 636.8 -63 -81.4 37 98.6 137 278.6 237 458.6 337 638.6 -62 -79.6 38 100.4 138 280.4 238 460.4 338 640.4

摄氏度和华氏度的换算

1、华氏度 华氏度(fahrenheit)和摄氏度(Centigrade)都是用来计量温度的单位。包括中国在内的世界上很多国家都使用摄氏度,美国和其他一些英语国家使用华氏度而较少使用摄氏度。 华氏度(°F):温度的一种度量单位。华氏度:F=32+1.8×C 华氏度是以其发明者德国人Gabriel D. Fahrenheit(华伦海1681—1736)命名的,其结冰点是32°F。沸点为华氏度212°F。 他发现液体金属水银比酒精更适宜制造温度计,于是发明了水银温度计。当大气压为1.01X10^5Pa时,把水的冰点设为32度,把水沸点设为212度,把32度到212度之间平均分成180等分,每等分为1华氏度。 华氏度和摄氏度的换算37℃等于多少华氏度 2、摄氏度 “在一个标准大气压下,把冰水混合物的温度定为零度,把沸水的温度定为100度,它们之间分成100等份,每一等份是摄氏度的一个单位,叫做1摄氏度。” 摄氏度的发明者是安德斯·摄尔修斯(Anders Celsius

1701-1744),其结冰点是0℃,沸点为100℃。1714年德国人法勒海特(Fahrenheit)以水银为测温介质,制成玻璃水银温度计,选取氯化铵和冰水的混合物的温度为温度计的零度, 人体温度为温度计的100度,把水银温度计从0度到100度按水银的体积膨胀距离分成100份,每一份为1华氏度,记作“1℉”。按照华氏温标,则水的冰点为32℉,沸点为212℉。 “华氏温标”是经验温标之一。在美国的日常生活中,多采用这种温标。规定在一大气压下水的冰点为32度,沸点为212度,两个标准点之间分为180等分,每等分代表1度。华氏温度用字母“F”表示。

开尔文、华氏、摄氏的区别及换算方法

开尔文单位 以绝对零度作为计算起点的温度。即将水三相点的温度准确定义为273.16K后所得到的温度,过去也曾称为绝 高温 对温度。开尔文温度常用符号K表示,其单位为开尔文,定义为水三相点温度的1/273.16。开尔文温度和人们习惯使用的摄氏温度相差一个常数273.15,即=+273.15(是摄氏温度的符号)。例如,用摄氏温度表示的水三相点温度为0.01℃,而用开尔文温度表示则为273.16K。开尔文温度与摄氏温度的区别只是计算温度的起点不同,即零点不同,彼此相差一个常数,可以相互换算。这两者之间的区别不能够与热力学温度和国际实用温标温度之间的区别相混淆,后两者间的区别是定义上的差别。热力学温度可以表示成开尔文温度;同样,国际实用温标温度也可以表示成开尔文温度。当然,它们也都可以表示成摄氏温度。所以1℃=274.15K,0℃=273.15K。 华氏温标 华氏度(Fahrenheit) 和摄氏度(Centigrade)都是用来计量温度的单位。包括中国在内的世界上很多国家都使用摄氏度,美国和其他一些英语国家使用华氏度而较少使用摄氏度。 它是以其发明者Gabriel D. Fahrenheit(1681-1736)命名的,其结冰点是32°F,沸点为212°F。1714年德国人法勒海特(Fahrenheit)以水银为测温介质,制成玻璃水银温度计,选取氯化铵和冰水的混合物的温度为温度计的零度,人体温度为温度计的100度,把水银温度计从0度到100度按水银的体积膨胀距离分成100份,每一份为1华氏度,记作“1℉”。 摄氏温标 它的发明者是Anders Celsius(1701-1744),其结冰点是0℃,沸点为100℃。1740年瑞典人摄氏(Celsius)提出在标准大气压(101.325kPa)下,把冰水混合物的温度规定为0度,水的沸腾温度规定为100度。根据水这两个固定温度点来对玻璃水银温度计进行分度。两点间作100等分,每一份称为1摄氏度。记作1℃。 两者关系 摄氏温度和华氏温度的关系:T ℉= 1.8t℃+ 32 (t为摄氏温度数,T为华氏温度数) 摄氏温度和开尔文温度的关系:°K=℃+273.15

相关文档
最新文档