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

下載本文檔

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

文檔簡(jiǎn)介

1、本程序?yàn)閐s18b20 的多路溫度采集程序,是我自己參考其他程序后改寫(xiě)而成,可顯示4 路正負(fù)溫度值,并有上下限溫度報(bào)警(聲音、燈光報(bào)警)親測(cè),更改端口即可使用。(主要器件: 51 單片機(jī), ds18b20, lcd顯示器)附有 proteus 仿真圖,及序列號(hào)采集程序/* 上限 62 度 下限 -20 度*/#include<>#define uchar unsigned char#define uint unsigned intsbit ds=P1A1;sbit rs=P1A4;sbit e=P1A6;sbit sp=P1A0;sbit d1=P1A2;sbit d2=P1A3;

2、ucharlcdrom48=0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e,0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9,0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0,0x28,0x33,0xc5,0xb8,0x00,0x00,0x00,0xd7;unsigned char code table0="TEMPERARTURE:U "int f4;int tvalue;float ftvalue;uint warnl=320;uint warnh=992;/*lcd程序 */v

3、oid delayms(uint ms)/ 延時(shí)uint i,j;for(i=ms;i>0;i-)for(j=110;j>0;j-);void wrcom(uchar com)/ 寫(xiě)指令delayms(1);rs=0;P3=com;delayms(1);e=1;delayms(1);e=0;void wrdat(uchar dat)/ 寫(xiě)數(shù)據(jù)rs=1;e=0;P3=dat;delayms(5);e=1;delayms(5);e=0;void lcdinit()/ 初始化 lcddelayms(15);wrcom(0x38);delayms(5);wrcom(0x0c);delaym

4、s(5);wrcom(0x06);delayms(5);wrcom(0x01);delayms(5);void display(uchar *p)/ 顯示wrdat(*p);p+;delayms(1);displayinit()/ 初始化顯示lcdinit();wrcom(0x80);display(table0);/*ds18b20 程序 */void dsrst()/ds18b20 復(fù)位uint i;ds=0;i=103;while(i>0)i-;ds=1;i=4;while(i>0)i-;bit dsrd0()/ 讀一位數(shù)據(jù)uint i;bit dat;ds=0;i+;ds=

5、1;i+;i+;dat=ds;i=8;while(i>0)i-;return(dat);uchar dsrd()/ 讀 1 個(gè)字節(jié)數(shù)據(jù)uchar i,j,dat;dat=0;for(i=8;i>0;i-)j=dsrd0();dat=(j<<7)|(dat>>1);return(dat);void dswr(uchar dat)/ 寫(xiě)數(shù)據(jù)uint i;uchar j;bit testb;for(j=8;j>0;j-)(testb=dat&0x01;dat=dat>>1;if(testb)(ds=0;i+;i+;ds=1;i=8;whi

6、le(i>0)i-;else(ds=0;i=8;while(i>0)i-;ds=1;i+;i+;void tmstart()/ 初始化 ds18b20sp=1;d1=1;d2=1;dsrst();delayms(1);dswr(0xcc);dswr(0x44);void read_dealtemp()/ 讀取并處理溫度uchar i,j,t;uchar a,b;for(j=0;j<4;j+)dsrst();delayms(1);dswr(0x55);for(i=0;i<8;i+)dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue&l

7、t;<=8;tvalue=tvalue|a;if(tvalue<0)d1=1;tvalue=tvalue+1;wrcom(0xc0);wrdat(0x2d);if(tvalue>warnl)d2=0;sp=0;elsed2=1;sp=1;dswr(lcdromji);/發(fā)送 64 位序列號(hào)else d2=1;wrcom(0xc0);wrdat(' ');if(tvalue>warnh)d1=0;sp=0;elsed1=1;sp=1;if(j=0)wrcom(0x8e);wrdat('2');if(j=1)wrcom(0x8e);wrdat

8、('3');if(j=2)wrcom(0x8e);wrdat('4');if(j=3)wrcom(0x8e);wrdat('5');ftvalue=tvalue*;tvalue=ftvalue*10+;ftvalue=ftvalue+;fj=tvalue;/ 溫度擴(kuò)大十倍,精確到一位小數(shù)tvalue=fj;t=tvalue/1000;wrcom(0x80+0x41);wrdat(table1t);/ 顯示百位t=tvalue%1000/100;wrdat(table1t);/顯示十位t=tvalue%100/10;wrdat(table1t);/

9、 顯示個(gè)位 wrdat(0x2e); / 顯示小數(shù)點(diǎn)兒 t=tvalue%10/1;/*wrdat(table1t);/ 顯示小數(shù)位 delayms(5000);*/void main()d1=1;d2=1;sp=1;displayinit();/ 初始化顯示while(1)tmstart();/ 初始化read_dealtemp();/ 讀取溫度/* 序列號(hào)讀取程序 */#include <>#define uchar unsigned char#define uint unsigned intsbit DQ = P1八1;/信號(hào)線(xiàn)sbit rs = P1八4;/LCD令選擇端

10、(H/L) 位聲明sbit Icden = P1八6;/LCD聲明void delay(uint z);/數(shù)void DS18B20_Reset(void);/DQ18B20復(fù)位,初始化函數(shù)bit DS18B20_Readbit(void);/uchar DS18B20_ReadByte(void);/據(jù)函數(shù)void DS18B20_WriteByte(uchar dat); /個(gè)字節(jié)數(shù)據(jù)函數(shù)void LCD_WriteCom(uchar com);/1602令寫(xiě)入函數(shù)void LCD_WriteData(uchar dat);/1602據(jù)寫(xiě)入函數(shù)void LCD_Init();溫度傳感器數(shù)據(jù)

11、 / 命使能信號(hào)端位延時(shí)函讀 1 位數(shù)據(jù)函數(shù)讀 1 個(gè)字節(jié)數(shù)向 DQ18B2%一液晶命液晶數(shù)/LCD 初始化函數(shù)void Display18B20Rom(char Rom);/顯示18B20序列號(hào)函/*/*主函數(shù)*/*/ /* void main() uchar a,b,c,d,e,f,g,h;LCD_Init();DS18B20_Reset();delay(1);DS18B20_WriteByte(0x33);delay(1);a = DS18B20_ReadByte();b = DS18B20_ReadByte();c = DS18B20_ReadByte();d = DS18B20_Re

12、adByte();e = DS18B20_ReadByte();f = DS18B20_ReadByte();g = DS18B20_ReadByte();h = DS18B20_ReadByte();LCD_WriteCom(0x80+0x40);Display18B20Rom(h);Display18B20Rom(g);Display18B20Rom(f);Display18B20Rom(e);Display18B20Rom(d);Display18B20Rom(c);Display18B20Rom(b);Display18B20Rom(a);while(1);/*/*延時(shí)函數(shù) :void

13、 delay()/*/功能:延時(shí)函數(shù)*/*/void delay(uint z)/延時(shí)函數(shù)uint x,y;for( x = z; 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 = 103;while( i > 0 ) i-;DQ = 1;i = 4;while( i > 0 ) i-;/*/*DS18B20:void

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

15、for( i = 1; i <= 8; i+ )j = DS18B20_Readbit();dat = ( j << 7 ) | ( dat >> 1 );return(dat);/*/*DS18B20:void DS18B20_WriteByte()*/*功能:向DQ18B20T一個(gè)字節(jié)數(shù)據(jù)函數(shù)*/*/void DS18B20_WriteByte(uchar dat)/向 DQ18B20T一個(gè)字節(jié)數(shù)據(jù)函數(shù)uint i;uchar j;bit testb;for( j=1; j<=8; j+)testb = dat&0x01;dat= dat>

16、>1;if(testb)/寫(xiě)1DQ = 0;i+;i+;DQ = 1;i = 8;while(i>0)i-;elseDQ = 0;/寫(xiě) 0i = 8;while(i>0)i-;DQ = 1;i+;i+;/*/* LCD 函數(shù) :void LCD_WriteCom()*/* 功能:向LCD寫(xiě)入命令*/*/ /* void LCD_WriteCom(uchar com) rs = 0;P3= com;delay(5);lcden = 0;delay(5);lcden = 1;delay(5);lcden = 0;/*/* LCD 函數(shù) :void LCD_WriteData(uc

17、har dat)*/* 功能:向LCD寫(xiě)入數(shù)據(jù)*/ /*/ void LCD_WriteData(uchar dat)rs = 1;/擇LCD為寫(xiě)入數(shù)據(jù)狀態(tài)lcden = 0;將待寫(xiě)入數(shù)據(jù)放P3= dat;/到總線(xiàn)上delay(5);lcden = 1;/給LCD使能端一個(gè)脈沖信號(hào)將之的數(shù)據(jù)寫(xiě)delay(5);/前放到總線(xiàn)上lcden = 0;/入 LCDdelay(5);/*/* LCD 函數(shù) :void LCD_Init()*/* 功能:初始化LCR設(shè)定LCD的初始狀態(tài)*/*/ void LCD_Init()顯示模式設(shè)關(guān)閉LCD顯示顯示清屏LCD_WriteCom(0x38);/LCD士定delay(15);LCD_WriteCom(0x08);/delay(3);LCD_WriteCom(0x01);/LCDdelay(3);LCD_WriteCom(0x06);/設(shè)定光標(biāo)地址指針為自動(dòng)加1delay(3);LCD_WriteCom(0x0c);/打開(kāi) LCD顯示,但不顯示光標(biāo)/*/*/*顯示18B20序列號(hào)*/ /* */ /*/ void Display18B20Rom(char Rom)uchar h,l;l = R

溫馨提示

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

評(píng)論

0/150

提交評(píng)論