基于單片機的倉庫溫度監(jiān)測系統(tǒng)設(shè)計與制作_第1頁
基于單片機的倉庫溫度監(jiān)測系統(tǒng)設(shè)計與制作_第2頁
基于單片機的倉庫溫度監(jiān)測系統(tǒng)設(shè)計與制作_第3頁
基于單片機的倉庫溫度監(jiān)測系統(tǒng)設(shè)計與制作_第4頁
基于單片機的倉庫溫度監(jiān)測系統(tǒng)設(shè)計與制作_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

致謝畢業(yè)設(shè)計是對我們知識運用能力的一次全面的考核,也是對我們進行科學(xué)研究基本功的訓(xùn)練,培養(yǎng)我們綜合運用所學(xué)知識獨立地分析問題和解決問題的能力,為以后撰寫專業(yè)學(xué)術(shù)論文和工作打下良好的基礎(chǔ)。本次設(shè)計能夠順利完成,首先我要感謝我的母校-大連海事大學(xué),是她為我們提供了學(xué)習(xí)知識的土壤,使我們在這里茁壯成長。

其次我要感謝電子信息科學(xué)與技術(shù)專業(yè)的老師們,他們不僅教會我們專業(yè)方面的知識,而且教會我們做人做事的道理;尤其要感謝本次設(shè)計中給我大力支持和幫助的金老師,也就是我的指導(dǎo)老師,每有問題金老師總是耐心的解答,使我能夠充滿熱情的投入到畢業(yè)設(shè)計中去,還要感謝我的同學(xué)們他們熱心的幫助,還需感謝相關(guān)資料的編著和給予我們支持的社會各界人士,感謝你們?yōu)槲覀兲峁┮粋€良好的環(huán)境,使本次設(shè)計圓滿完成。最后我要特別感謝我的父母,是他們最先教會了我為人處事的道理,給了我學(xué)習(xí)的機會。大學(xué)四年來他們一直在背后默默地支持著、關(guān)心著、牽掛著我,給我精神上的鼓勵和安慰。是他們無言的眷顧和送贈讓我愉快而又順利的度過我的大學(xué)生活。附錄1#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable[]="0123456789.-";ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};uchardatadisplay[2]={0x00,0x00};sbiten=P3^1;sbitrs=P3^0;sbitDQ1=P3^2;sbitDQ2=P3^3;sbitDQ3=P3^4;sbitled1=P2^0;sbitled2=P2^1;uchardatatemp_data[2]={0x00,0x00};//讀出溫度暫放uinttemp1,temp2,temp3;/**********************我的延時函數(shù)********************************/voiddelay1ms(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }/***********************ds18b20的延時函數(shù)**************************************/voiddelay_18B20(uinti){ while(i--); }/****************DS18B20復(fù)位函數(shù)************************/DS18B20_reset1(void)//編號1的ds18b20初始化{ucharx=0;DQ1=1;//DQ復(fù)位,不要也可行。delay_18B20(8);//稍做延時DQ1=0;//單片機拉低總線delay_18B20(80);//精確延時,維持至少480usDQ1=1;//釋放總線,即拉高了總線delay_18B20(4);//此處延時有足夠,確保能讓DS18B20發(fā)出存在脈沖。x=DQ1;delay_18B20(20);}DS18B20_reset2(void)//編號2的ds18b20初始化{ucharx=0;DQ2=1;//DQ復(fù)位,不要也可行。delay_18B20(8);//稍做延時DQ2=0;//單片機拉低總線delay_18B20(80);//精確延時,維持至少480usDQ2=1;//釋放總線,即拉高了總線delay_18B20(4);//此處延時有足夠,確保能讓DS18B20發(fā)出存在脈沖。x=DQ2;delay_18B20(20);}DS18B20_reset3(void)//編號3的ds18b20初始化{ucharx=0;DQ3=1;//DQ復(fù)位,不要也可行。delay_18B20(8);//稍做延時DQ3=0;//單片機拉低總線delay_18B20(80);//精確延時,維持至少480usDQ3=1;//釋放總線,即拉高了總線delay_18B20(4);//此處延時有足夠,確保能讓DS18B20發(fā)出存在脈沖。x=DQ3;delay_18B20(20);}/****************DS18B20寫命令函數(shù)************************///向1-WIRE總線上寫1個字節(jié)voidwrite_byte1(ucharval)//編號1{uchari;for(i=8;i>0;i--){DQ1=0;//5usDQ1=val&0x01;//最低位移出delay_18B20(5);DQ1=1;//66usval>>=1;}}/****************DS18B20讀1字節(jié)函數(shù)************************///從總線上取1個字節(jié)ucharread_byte1()//編號1{uchari=0;uchardat=0;for(i=8;i>0;i--) { DQ1=0; dat>>=1; DQ1=1; if(DQ1) dat|=0x80; delay_18B20(4); } returndat;}voidwrite_byte2(ucharval)//編號2{uchari;for(i=8;i>0;i--){DQ2=0;//5usDQ2=val&0x01;delay_18B20(5);DQ2=1;//66usval>>=1;}}ucharread_byte2()//編號2{uchari=0;uchardat=0;for(i=8;i>0;i--) { DQ2=0; dat>>=1; DQ2=1; if(DQ2) dat|=0x80; delay_18B20(4); } returndat;}voidwrite_byte3(ucharval)//編號3{uchari;for(i=8;i>0;i--){DQ3=0;//5usDQ3=val&0x01;delay_18B20(5);DQ3=1;//66usval>>=1;}}ucharread_byte3()//編號3{uchari=0;uchardat=0;for(i=8;i>0;i--) { DQ3=0; dat>>=1; DQ3=1; if(DQ3) dat|=0x80; delay_18B20(4); } returndat;}/****************讀出溫度函數(shù)************************///uintread_temp1()//編號1{floattt;DS18B20_reset1();//總線復(fù)位write_byte1(0xcc);//發(fā)命令write_byte1(0x44);//發(fā)轉(zhuǎn)換命令delay_18B20(100);DS18B20_reset1();write_byte1(0xcc);//發(fā)命令write_byte1(0xbe);delay_18B20(100);temp_data[0]=read_byte1();//讀溫度值的第字節(jié)temp_data[1]=read_byte1();//讀溫度值的高字節(jié)temp1=temp_data[1];temp1<<=8;temp1=temp1|temp_data[0];//兩字節(jié)合成一個整型變量。tt=temp1*0.1;temp1=tt*10+0.5;returntemp1;//返回溫度值}//uintread_temp2()//編號2{floattt;DS18B20_reset2();//總線復(fù)位write_byte2(0xcc);//發(fā)命令write_byte2(0x44);//發(fā)轉(zhuǎn)換命令delay_18B20(100);DS18B20_reset2();write_byte2(0xcc);//發(fā)命令write_byte2(0xbe);delay_18B20(100);temp_data[0]=read_byte2();//讀溫度值的第字節(jié)temp_data[1]=read_byte2();//讀溫度值的高字節(jié)temp2=temp_data[1];temp2<<=8;temp2=temp2|temp_data[0];//兩字節(jié)合成一個整型變量。tt=temp2*0.1;temp2=tt*10+0.5;returntemp2;//返回溫度值}//uintread_temp3()//編號3{floattt;DS18B20_reset3();//總線復(fù)位write_byte3(0xcc);//發(fā)命令write_byte3(0x44);//發(fā)轉(zhuǎn)換命令delay_18B20(100);DS18B20_reset3();write_byte3(0xcc);//發(fā)命令write_byte3(0xbe);delay_18B20(100);temp_data[0]=read_byte3();//讀溫度值的第字節(jié)temp_data[1]=read_byte3();//讀溫度值的高字節(jié)temp3=temp_data[1];temp3<<=8;temp3=temp3|temp_data[0];//兩字節(jié)合成一個整型變量。tt=temp3*0.1;temp3=tt*10+0.5;returntemp3;//返回溫度值}/***************1602寫指令*******************************/voidwrite_com(ucharcom) { rs=0; P1=com; delay1ms(5); en=1; delay1ms(5); en=0; delay1ms(5);}/**************1602讀命令*********************************/voidwrite_data(uchardate) { rs=1; P1=date; delay1ms(5); en=1; delay1ms(5); en=0; delay1ms(5); } /******************1602初始化*****************************/voidlcd_init(){ en=0; write_com(0x38);//顯示模式設(shè)置 delay1ms(5); write_com(0x38);//顯示模式設(shè)置 delay1ms(5); write_com(0x38);//顯示模式設(shè)置 delay1ms(5); write_com(0x0c);//設(shè)置開關(guān)及光標q write_com(0x06);//同上q write_com(0x01);//清屏 write_com(0x80);//顯示的位數(shù)}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個//字節(jié)的二進制轉(zhuǎn)換為十進制后,就是溫度值的百、十、個位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進制后,就是溫度值的小數(shù)部分/********************************************************/voidwork_temp(uinttem){ ucharA0,A1,A2,A3,A4,A5; if(tem>63488)//溫度值正負判斷{ write_com(0x80+0x40); tem=65536-tem;//負溫度求補碼,標志位置1 display[1]=tem&0x0f;//取小數(shù)部分的值 A5=ditab[display[1]]; A4=tem>>4;//取中間八位,即整數(shù)部分的值 write_data(table[11]); A2=A4%100;//取后兩位數(shù)據(jù)暫存 A1=A2/10;//取十位數(shù)據(jù)暫存 write_data(table[A1]); A0=A2%10; write_data(table[A0]); write_data(table[10]);//小數(shù)點 write_data(table[A5]);//顯示 if(A1>=2) led1=0; else led1=1; } else { write_com(0x80); write_data('d'); write_data('a'); write_data('t'); write_data('a'); write_data(table[12]); write_data(table[6]); write_data(table[10]); write_data(table[1]); write_data(table[3]); write_com(0x80+0x40); display[1]=tem&0x0f;//取小數(shù)部分的值 A5=ditab[display[1]]; A4=tem>>4;//取中間八位,即整數(shù)部分的值 A3=A4/100;//取百位數(shù)據(jù)暫存 write_data(table[A3]); A2=A4%100;//取后兩位數(shù)據(jù)暫存 A1=A2/10;//取十位數(shù)據(jù)暫存 write_data(table[A1]); A0=A2%10; write_data(table[A0]); write_data(table[10]);//小數(shù)點 write_data(table[A5]);//

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論