ds18b20多路溫度采集程序_第1頁
ds18b20多路溫度采集程序_第2頁
ds18b20多路溫度采集程序_第3頁
ds18b20多路溫度采集程序_第4頁
ds18b20多路溫度采集程序_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、-+本程序為ds18b20的多路溫度采集程序,是我自己參考其他程序后改寫而成,可顯示4路正負(fù)溫度值,并有上下限溫度報警(聲音、燈光報警)。親測,更改端口即可使用。(主要器件:51單片機(jī),ds18b20, led顯示器)附有Proteus仿真圖,及序列號采集程序U2VCOD 口迪gISBZO(J3DQ« «耐hdXTLaI SI -+FAk-T F.lEP E,UE-DI -.LCKUC4囂 釜蘭.s墨欝nKIHj iL* E*PlCWAEPf和M =2 H匚 S戈山H 吃"釘7 42三必1三 rPT 2 |rl ?2PI WT?PI.NTZS;FM.qrPlni*

2、iTCP1 S匸= =01pija*iTTP 1 出C£%1P3沁pi fJEf裁p-. - ntihCExa書.師tPl 叫“5rtTE* B%rEnPERfiRTURE:U2 -0?乩 2a JI -!?=oi-runpam-.A-PA-AiriI ll I r 門2RP1Mm叱汁* f &DQ"Hh sbit sp=P 1八0;sbit d1= P1八2;sbit d2=PIT;uchar Icdrom48=0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e,0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0x

3、b9,0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0,0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7;un sig ned char code table0="TE MP ERARTURE:U"un sig ned char code table1="0123456789ABCDEF"int f4;int tvalue;float ftvalue;uint warnl=320;uint warn h=992;uint i,j;for(i=ms;i>0;i-)for(j=110;j>

4、;0;j-);void wrcom(uchar com)/ 寫指令delayms(l);rs=0;P 3=com;delayms(1);e=1;delayms(1);e=0;void wrdat(uchar dat)/ 寫數(shù)據(jù)rs=1;e=0;P3=dat;delayms(5);e=1;delayms(5);-+e=0;void Icdinit()/ 初始化 leddelayms(15);wrcom(0x38);delayms(5);wrcom(0x0c);delayms(5);wrcom(0x06);delayms(5);wrcom(0x01);delayms(5);void display

5、(uchar *p)/ 顯示while(* p!='0')wrdat(* p);p+;delayms(1);displayinit()/初始化顯示lcd in it();Wcom(ox80=disp_ayaab_eo=void dssf()1ds8b20 沁dsHqwh=e(ivo)TdsHnwh=e(ivo)Tbif dsrdool 萍Im臂議bif dardsHO 二+_dsH 二+=+_-+dat=ds;i=8;while(i>0)i-;return(dat);uchar dsrd()/讀1個字節(jié)數(shù)據(jù)uchar i,j,dat;dat=0;for(i=8;i>

6、0;i-)j=dsrd0();dat=(j<<7)|(dat>>1);return(dat);void dswr(uchar dat)/ 寫數(shù)據(jù)uint i;uchar j;bit testb;for(j=8;j>0;j-)fes&HdafaoxondafHdafvvnifaesfb)dsHqi+二+_dsHniHQWhi-e(ivo)Te-sedsHqiHQWhi-e(ivo)TdsHni+二+_void fmsfarto/甘dsl8b20spuncmhd2±dsgde-aymsu =dsw(oxcc=dsw(0x44=uchar Ljxuch

7、ar abrooj£j+)dsrsgde-aymsu =dsw(0x55=fo(no 天8=+)dsw(_cd5m曰曰=/灘64 弔宜血dsw(oxbe=-+a=dsrd();b=dsrd();tvalue=b;tvaluevv=8;tvalue=tvalue|a;if(tvaluevO)d1=1;tvalue=tvalue+1;wrcom(OxcO);wrdat(0x2d);if(tvalue>war nl)d2=0;sp=0;elsed2=1;sp=1;elsed2=1;wrcom(OxcO);wrdat('');if(tvalue>war nh)d1

8、=O;sp=O;elsed1=1;sp=1;if(j=O)wrcom(0x8e);wrdat('2');if(j=1)wrcom(0x8e);wrdat(3);if(j=2)wrcom(0x8e);wrdat('4');if(j=3)wrcom(0x8e);wrdat('5');ftvalue=tvalue*0.0625;tvalue=ftvalue*10+0.5;ftvalue=ftvalue+0.05;fj=tvalue;/溫度擴(kuò)大十倍,精確到一位小數(shù) tvalue=fj;t=tvalue/1000;wrcom(0x80+0x41);wrda

9、t(table1t);/ 顯示百位t=tvalue%1000/100;wrdat(table1t);/ 顯示十位t=tvalue%100/10;wrdat(table1t);/ 顯示個位wrdat(0x2e); /顯示小數(shù)點兒 t=tvalue%10/1;wrdat(table1t);/ 顯示小數(shù)位delayms(5000);主函數(shù)*/void mai n()d1=1;d2=1;sp=1;displayinit();/ 初始化顯示while(1)tmstart();/ 初始化read_dealte mp();/讀取溫度序列號讀取程序*/#in elude <reg52.h> #de

10、fi ne uchar un sig ned char #defi ne uint un sig ned int/溫度傳感sbit DQ = PMI;器信號線sbit rs = P1八4;/LCD數(shù)據(jù)/命令選擇端(H/L)位聲明sbit Icden = P1八6;/LCD使能信號端位聲明void delay(uint z);/延時函數(shù)voidDS18B20_Reset(void);/DQ18B20復(fù)位,初始化函數(shù)bit DS18B20_Readbit(void);/讀1位數(shù)據(jù)函uchar DS18B20_ReadByte(void);/讀1個字節(jié)數(shù)據(jù)函數(shù)void DS18B20_WriteBy

11、te(uchar dat);/ 向 DQ18B20 寫一個字節(jié)數(shù)據(jù)函數(shù)void LCD_WriteCom(uchar com);/1602液晶命令寫入函數(shù)void LCD_WriteData(uchar dat);/1602液晶數(shù)據(jù)寫入函數(shù)voidLCD_I nit();/顯示18B20序列/LCD初始化函數(shù) void Display18B20Rom(char Rom);-+號函數(shù)/* /* */*void mai n()uchar a,b,c,d,e,f,g,h;LCDnit();DS18B20_Reset();delay(1);DS18B20_WriteByte(0x33);delay(1

12、);a = DS18B20_ReadByte();b = DS18B20_ReadByte();c = DS18B20_ReadByte();d = DS18B20_ReadByte();e = DS18B20_ReadByte();f = DS18B20_ReadByte();g = DS18B20_ReadByte();h = DS18B20_ReadByte();LCD_WriteCom(0x80+0x40);Dis play18B20Rom(h);Dis play18B20Rom(g);Dis play18B20Rom(f);Dis play18B20Rom(e);Dis play18

13、B20Rom(d);Dis play18B20Rom(c);Dis play18B20Rom(b);Dis play18B20Rom(a);while(1);*/*延時函數(shù):voiddelay()*/*延時函數(shù)*/*void delay(ui nt z)/ 延時函數(shù)uint x,y;for( x =乙 x > 0; x-)for( y = 110; y > 0; y-);/*/*DS18B20 函 數(shù):void DS18B20_Reset()*/*復(fù)位 18B20*/*void DS18B20_Reset(void)/DQ18B20 復(fù)位,初始化函數(shù)uint i;DQ = 0;i

14、= 103;while( i > 0 ) i-;DQ = 1;i = 4;while( i > 0 ) i-;/*/*DS18B20 函 數(shù):void DS18B20_Readbit()*/*功能:讀1個字節(jié)數(shù)據(jù)函數(shù)*/*-+bit DS18B20_Readbit(void)/讀1位數(shù)據(jù)函數(shù)uint i;bit dat;i+;i+起延時作用DQ = 0;*DQ = 1;i+;i+;dat = DQ;i = 8;while( i > 0 )i-;retur n( dat );*/*DS18B20 函 數(shù):void DS18B20_ReadByte()*/*功能:讀1個字節(jié)數(shù)據(jù)函

15、數(shù)/讀1個字節(jié)數(shù)據(jù)函數(shù)*/ uchar DS18B20_ReadByte(void)-+uchar i,j,dat;dat = 0;for( i = 1; i <= 8; i+ )j = DS18B20_Readbit();dat = ( j << 7 ) | ( dat >> 1 );return(dat);*/*DS18B20 函 數(shù):void DS18B20_WriteByte()*/*功能:向DQ18B20寫一個字節(jié)數(shù)據(jù)函數(shù)*/ 向 DQ18B20 寫一*void DS18B20_WriteByte(uchar dat)個字節(jié)數(shù)據(jù)函數(shù)uint i;ucha

16、r j;bit testb;-+for( j=1; jv=8; j+)testb = dat&OxO1;/寫1dat= dat>>1;if(testb)DQ = 0;i+;i+;DQ = 1;i = 8;while(i>0)i-;/寫0elseDQ = 0;i = 8;while(i>0)i-;DQ = 1;i+;i+;/*LCD函 數(shù) :voidLCD_WriteCom()*-+*/*向 LCD 寫 入 命*/*void LCD_WriteCom(uchar com)rs = 0;P3= com;delay(5);Icde n = 0;delay(5);lcd

17、e n = 1;delay(5);lcde n = 0;*/*LCD函 數(shù):voidLCD_WriteData(uchardat)*/*/*LCD 寫 入 數(shù)void LCD_WriteData(uchar dat)rs = 1;/選擇LCD為寫入數(shù)據(jù)狀態(tài)Icde n = 0;P3= dat;將待寫入數(shù)據(jù)放到總線上delay(5);Icde n = 1;LCD使能端一個脈沖delay(5);/信號將之前放到總線上lcde n = 0;/的數(shù)據(jù)寫入LCDdelay(5);*/*LCD數(shù) :voidLCD_I nit()*/*功能:初始化LCD,設(shè)定LCD 的初始狀態(tài)void LCD_I nit(

18、)-+*/LCD_WriteCom(0x38);/LCD顯示模式設(shè)定delay(15);LCD_WriteCom(0x08);/關(guān)閉LCD顯delay(3);LCD_WriteCom(0x01);/LCD顯示清delay(3);LCD_WriteCom(0x06);/設(shè)定光標(biāo)地址指針為自動加1delay(3);LCD_WriteCom(0x0c);/打開LCD顯示,但不顯示光標(biāo)/*/*/*18B20*/*-+*/ /* void Dis play18B20Rom(char Rom)uchar h,l;l = Rom & 0x0f;/取低4位/取高4位if( ( l >=0x00 )&&( l <= 0x09 )LCD_WriteData(l+0x30);/h = Rom & 0xf0;h >>= 4;if( ( h >= 0x00 )&&(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論