#includefloatflag=0;unsignedintup=30,down=20,kf=1,hfflag=1,hf;//up為報(bào)警溫度上限值,down為報(bào)警溫度下限值;//k">
ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換

ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換

ID:35734719

大小:15.85 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-04-15

ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換_第1頁(yè)
ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換_第2頁(yè)
ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換_第3頁(yè)
ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換_第4頁(yè)
ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換_第5頁(yè)
資源描述:

《ds18b20程序包含溫度設(shè)置、報(bào)警、華氏溫度和攝氏溫度轉(zhuǎn)換》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、#include#includefloatflag=0;unsignedintup=30,down=20,kf=1,hfflag=1,hf;//up為報(bào)警溫度上限值,down為報(bào)警溫度下限值;//kf為報(bào)警溫度設(shè)定標(biāo)志位,kf為1,數(shù)碼管顯示溫度值,kf=0,進(jìn)入報(bào)警溫度設(shè)定選項(xiàng)。//hfflag為攝氏度與華氏溫度轉(zhuǎn)換標(biāo)志位,hfflag=1,顯示的為攝氏度值,hfflag=0,顯示的為華氏溫度值。//hf為用來(lái)存儲(chǔ)華氏溫度。sbitDQ=P2^0;//ds

2、18b20端口unsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39,0x63,0x40,0x71};//0x39,0x63用來(lái)顯示攝氏度,0x40用來(lái)顯示--。unsignedchartabb[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//帶有小數(shù)點(diǎn)的0-9.voiddisplayset();voiddelayms(intx)//延時(shí)1ms函

3、數(shù){intm,j;for(m=1;m<=x;m++)for(j=1;j<=123;j++);}voidreset()//對(duì)ds18b20進(jìn)行復(fù)位{unsignedinti;DQ=1;//DQ復(fù)位_nop_();//稍做延時(shí),此為延時(shí)1ms函數(shù)DQ=0;//單片機(jī)將DQ拉低i=70;while(i>0)i--;//根據(jù)協(xié)議要滿足大于480usDQ=1;//拉高總線i=4;while(i>0)i--;}voiddswait()//等待ds18b20響應(yīng)的函數(shù){while(DQ);while(~DQ);/

4、/檢測(cè)到應(yīng)答脈沖}bitreadone()//讀取一位數(shù)據(jù){unsignedinti;bitb;DQ=0;i++;//根據(jù)資料,進(jìn)行一次unsignedint型數(shù)據(jù)的++,大約為8us時(shí)間,此處i++,符合協(xié)議要求至少保持1usDQ=1;i++;i++;//延時(shí)約16us,符合協(xié)議要求的至少延時(shí)15us以上b=DQ;i=8;while(i>0)i--;//延時(shí)約64us,符合讀時(shí)隙不低于60us要求return(b);}unsignedcharreadB()//讀取一字節(jié)數(shù)據(jù){unsignedint

5、i;unsignedcharj,dat=0;for(i=0;i<8;i++){j=readone();dat=(j<<7)

6、(dat>>1);//將每一次輸出的值通過(guò)移位相或送到dat}return(dat);}voidwriteB(unsignedchardat)//寫操作,通過(guò)次函數(shù)可以控制ds18b20進(jìn)行一系列操作{unsignedinti;unsignedcharj;bitb;for(j=0;j<8;j++){b=dat&0x01;dat>>=1;if(b)//寫"1",將DQ拉低15us

7、后,在15us~60us內(nèi)將DQ拉高,即完成寫1{DQ=0;i++;i++;//此處延時(shí)16us。滿足延時(shí)15us以后DQ=1;//將DQ拉高i=8;while(i>0)i--;//延時(shí)約64us,符合寫時(shí)隙不低于60us要求}else////寫"0",將DQ拉低60us~120us{DQ=0;i=8;while(i>0)i--;DQ=1;i++;i++;//整個(gè)寫0時(shí)隙過(guò)程已經(jīng)超過(guò)60us}}}voidsendchange()//溫度轉(zhuǎn)換{reset();dswait();delayms(1);w

8、riteB(0xcc);//寫入跳過(guò)序列號(hào)命令字writeB(0x44);//寫入溫度轉(zhuǎn)換命令字}voidsendread()//讀取數(shù)據(jù){reset();dswait();delayms(1);writeB(0xcc);//寫入跳過(guò)序列號(hào)命令字writeB(0xbe);//寫入讀取數(shù)據(jù)令字}intgetvalue()//獲取溫度函數(shù){unsignedinttempvalue;longtemp1,temp2;intvalue,final;floatt;unsignedcharlow,high;sen

9、dread();//讀取數(shù)據(jù)low=readB();high=readB();tempvalue=high;tempvalue<<=8;tempvalue

10、=low;value=tempvalue;t=value*(0.0625);//精度值為0.0625temp1=t*1000;temp2=t*100;if((temp1-temp2*10)>=5)//四舍五入{t=t+(0.01);final=t*100;hf=(32+t*1.8)*100;//華氏溫度轉(zhuǎn)換}els

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。