單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版_第1頁
單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版_第2頁
單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版_第3頁
單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版_第4頁
單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

年4月19日單片機原理及系統(tǒng)課程設計報告溫度濕度控制系統(tǒng)提交版文檔僅供參考單片機原理及系統(tǒng)課程設計專業(yè):自動化班級:動091姓名:程維洲學號: 08409指導教師:路小娟評語:平時(40)修改(30)報告(30)總成績蘭州交通大學自動化與電氣工程學院年7月1日

目錄TOC\o"1-2"\h\z\u1引言 12方案設計 12.1總體方案設計 12.2系統(tǒng)組成及框圖 13硬件電路設計 23.1溫度測量電路設計 23.2濕度測量電路設計 23.3按鍵電路設計 34軟件設計 34.1主程序流程圖 34.2溫度模塊程序設計 44.3濕度模塊程序設計 54.4顯示子程序設計 55總結 56參考文獻 57附錄 67.1附錄A 67.2附錄B 6

1引言本次課程設計主要基于AT89C51單片機,開發(fā)環(huán)境溫度及濕度檢測及控制系統(tǒng)。該系統(tǒng)采用AT89C51單片機作為控制器,DS18B20作為溫度傳感器,HS1101作為濕度傳感器。系統(tǒng)主要功能如下:(1)對溫度、濕度進行測量;(3)溫度及濕度的顯示;(4)設定預期溫度與濕度值并顯示。關鍵詞:AT89C51,溫度及濕度檢測,LCD顯示。2方案設計本章從控制系統(tǒng)的總體構成及原理框圖對系統(tǒng)進行了總體分析說明,控制系統(tǒng)組成以后,主要經(jīng)過控制器、傳感器及執(zhí)行器對控制變量進行分析和處理。2.1總體方案設計本系統(tǒng)采用AT89C51單片機作為微處理器,DS18B20作為溫度傳感器對溫度進行檢測,HS1101作為濕度傳感器與NE555組成濕度測量模塊,使用LM016L對測得的溫度及濕度值進行顯示,使用按鍵對溫度及濕度的設定值進行修改。2.2系統(tǒng)組成及框圖系統(tǒng)主要有溫度測量模塊、濕度測量模塊、顯示模塊、及按鍵模塊。其原理框圖如圖2-1所示。AT89C51溫度測量LCD液晶顯示AT89C51溫度測量LCD液晶顯示 按鍵濕度按鍵濕度圖2.1系統(tǒng)組成框圖3硬件電路設計本溫度及濕度控制系統(tǒng)使用AT89C51作為控制器,用DS18B20實現(xiàn)對溫度測測量,用HS1101及NE555實現(xiàn)的濕度的測量,并采用LM016L將采集的的數(shù)據(jù)顯示。現(xiàn)將系統(tǒng)硬件設計表述如下。3.1溫度測量電路設計采用DS18B20數(shù)字溫度傳感器測量溫度,DS18B20與單片機是單線雙向通信。其連接電路如圖3.1所示。圖3.1DS18B20的測溫電路(DQ端接51的P2.7)3.2濕度測量電路設計圖3.2NE555測濕電路HS1101實際上相當于一個可變電容,它會因外部環(huán)境濕度的變化而致使電容值變化,濕度測量模塊采用HS1101及NE555一起組成,將該HS1101置于NE555震蕩電路中,將電容值的變化轉化為與之呈反比的電壓頻率信號,可直接被計算機采集。表3.1等效電容值與相對濕度之間的數(shù)值關系相對濕度RH(%)電容值C(PF)相對濕度RH(%)電容值C(PF)01636018310166701862017080191301739019540176100202501793.3按鍵電路設計系統(tǒng)能夠調節(jié)設定的溫度及濕度值,我們能夠經(jīng)過四個按鍵來進行實現(xiàn),前兩個按鍵選擇是溫度設定還是濕度設定,后兩個按鍵實現(xiàn)加一和減一操作,設計電路圖如圖3.3所示。圖3.3按鍵電路其工作原理如下:當閉合溫度控制開關,能夠經(jīng)過“加”、“減”按鈕來實現(xiàn)目標溫度值的加一或者減一;同理閉合濕度開關,經(jīng)過“加”、“減”按鈕來實現(xiàn)目標濕度值的加一或者減一。而且,當兩個開關同時閉合時,能夠實現(xiàn)溫度和濕度的同加一或同減一。4軟件設計本章主要對各個功能模塊的程序流程進行說明。4.1主程序流程圖主程序的主要功能是負責讀出并處理DS18B20的測量溫度值,讀出測濕電路的結果,并將溫度及濕度進行實時顯示,直到需要退出該系統(tǒng)時結束并退出。程序流程圖如圖4.1所示:開始開始允許外部中斷和定時器允許外部中斷和定時器T0、T1中斷16021602初始化顯示及T0、T1初始化設置讀取溫度值讀取溫度值溫度顯示溫度顯示讀取濕度值讀取濕度值 N濕度顯示 濕度顯示是否結束是否結束是否結束是否結束 Y結束結束圖4.1主程序流程圖4.2溫度模塊程序設計溫度模塊主要包括DS18B20的初始化以及與單片機之間的數(shù)據(jù)處理。DS18B20與微處理器之間的通信比較復雜,每一次通信之前必須進行復位,復位的時間、等待時間、回應時間應嚴格按時序編程。4.3濕度模塊程序設計濕度模塊主要是利用定時器T0和T1對555的輸出頻率進行測量,進而得到相對濕度值。在該塊程序設計中,我們選取T0做定時器,定時時間是50ms,而選擇T1做計數(shù)器,每當T0定時時間到就讀取T1的計數(shù)值,然后將T1的計數(shù)值乘以20就可得到555芯片的輸出頻率,可進行數(shù)據(jù)處理從而得到相對濕度值。4.4顯示子程序設計顯示子程序包括1602的初始化,以及對溫度和濕度值的顯示。初始化時第一行顯示“wend”,第二行顯示“shid”,然后根據(jù)溫度的測得值及其正負將測得溫度值和設定溫度值在第一行,并將測得的頻率值裝換為相對濕度值,并將其和濕度設定值顯示在第二行。5總結在設計中,經(jīng)過對硬件電路不斷的處理,使得硬件部分比較完善。另外,在電路中加入了限流電阻,保證了各個器件的使用壽命。總之,硬件電路的設計達到了抗干擾,較高精度的目的。軟件部分中,對程序也做了數(shù)次修改,最終在KeiluVision3中實現(xiàn)了成功的模擬,進一步驗證了設計思路。本系統(tǒng)實現(xiàn)的功能如下。1.對溫室大棚溫度和濕度進行實時測量;2.經(jīng)過LCD顯示屏分別進行溫度和濕度顯示;3.對溫度和濕度的設定值經(jīng)過按鍵能夠進行調節(jié)。本系統(tǒng)的優(yōu)點有以下幾點。1.結構簡單,容易實現(xiàn);2.造價低廉,性價比高;3.達到了一定的精度要求。6參考文獻[1]金偉正.單線數(shù)字溫度傳感器的原理與應用[J].電子技術與應用,(6).[2]單曉鋒,楊建紅.電容型溫濕度傳感器模擬計算與分析[J].半導體技術,(11).[3]胡漢才.單片機原理及接口技術[M].北京:清華大學出版社,.7附錄7.1附錄A 系統(tǒng)仿真電路圖如圖5.1所示。在調試過程中,經(jīng)過改變溫度傳感器的數(shù)值,來檢驗系統(tǒng)中溫度模塊是否運行正常。經(jīng)過測試溫度模塊能夠正常的顯示,而且具有一定的快速性。經(jīng)過改變NE555振蕩電路中C3的容值(即HS1101的等效容值),來檢驗濕度摸快是否能夠正常工作,經(jīng)過測試濕度模塊能夠正常工作。而且對四個按鍵(即溫度、濕度、+、-)的功能進行了測試,都實現(xiàn)了應有的功能。圖5.1系統(tǒng)仿真調試圖7.2附錄B#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^7;//DS18B20與單片機連接口sbitRS=P3^0;//LCD1602控制端與單片機的連接sbitRW=P3^1;sbitEN=P3^7;sbitST=P0^0;//按鍵接口sbitSH=P0^1;sbitSjia=P3^2;sbitSjian=P3^3;ucharcodestr1[]={"Wend:"};ucharcodestr2[]={"Shid:"};uchardatadisdata1[6];uchardatadisdata2[4];uinttvalue;//溫度值uchartflag;//溫度正負標志uinttem0,tem1;uinttemp0,temp1;uintf=0;inthhhh=0;inttsheding=20;//設置溫度值inthsheding=40;//設置濕度值voidzhongd0()interrupt0 //外部中斷0 :加設置{if(ST==1){ tsheding++;//溫度值加1}if(SH==1){ hsheding++;//濕度值加1}}voidzhongd1()interrupt2 //外部中斷1 :減設置{if(ST==1){ tsheding--;//溫度值減1}if(SH==1){ hsheding--;//濕度值減1} }voidtimer0()interrupt1//T0定時中斷{ TR0=0;TR1=0;TL0=0xB0;//重裝值,定時50000usTH0=0x3C;tem0=TL1;//讀數(shù)tem1=TH1;TL1=0x00;//計數(shù)器1清零TH1=0x00; TR0=1;TR1=1;}voidtimer1()interrupt3//T1計數(shù)中斷{ TR0=0;TR1=0;TL0=0xB0;//重裝值,定時50000usTH0=0x3C;TL1=0x00;//計數(shù)器1清零TH1=0x00; TR0=1;TR1=1; }voidinit_timer(){TMOD=0x51;TL0=0xB0;//定時器0初值定時50000usTH0=0x3C;TL1=0x00;//定時器1清零TH1=0x00;TR0=1;//T0開始計時TR1=1;//T1開始計數(shù)}voiddelay1ms(uintms)//延時1毫秒{uinti,j;for(i=0;i<ms;i++)for(j=0;j<110;j++);}voidwr_com(ucharcom)//1602寫指令{delay1ms(1);RS=0;RW=0;EN=0;P1=com;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidwr_dat(uchardat)//1602寫數(shù)據(jù){delay1ms(1);RS=1;RW=0;EN=0;P1=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//1602初始化設置{wr_com(0x38);delay1ms(1);//設置16*2顯示,5*7點陣,8位數(shù)據(jù)接口;并延時wr_com(0x08);delay1ms(1);//設置關顯示,光標不顯示,光標不閃爍;并延時wr_com(0x01);delay1ms(1);//設置顯示清屏;并延時wr_com(0x06);delay1ms(1);//設置顯示光標移動位置;并延時wr_com(0x0c);delay1ms(1);//設置顯示開及光標設置;并延時}voiddisplay(uchar*p)//顯示子程序{while(*p!='\0'){wr_dat(*p);p++;delay1ms(1);}}init_play()//1602初始化顯示{lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2); }/**************************ds1820程序*************************/voiddelay_18B20(uinti)//延時1微秒{while(i--);}voidds1820rst()//DS18B20復位{ucharx=0;DQ=1;//DQ置位delay_18B20(4);//延時DQ=0;//DQ拉低delay_18B20(100);//精確延時大于480usDQ=1;//拉高delay_18B20(40);}uchards1820rd()//DS18B20讀數(shù)據(jù){uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;delay_18B20(10);}return(dat);}voidds1820wr(ucharwdata)//DS18B20寫數(shù)據(jù){uchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}voidread_temp()//讀取溫度值并轉換{uchara,b;ds1820rst();ds1820wr(0xcc);//跳過讀序列號ds1820wr(0x44);//啟動溫度轉換ds1820rst();ds1820wr(0xcc);//跳過讀序列號ds1820wr(0xbe);//讀取溫度a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff){tflag=0;}else{tvalue=~tvalue+1;tflag=1;}tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數(shù)}/*******************************************************************/voidds1820disp1()//溫度值顯示{ucharflagdat;ucharflagtsheding;disdata1[0]=tvalue/1000+0x30;//百位數(shù)disdata1[1]=tvalue%1000/100+0x30;//十位數(shù)disdata1[2]=tvalue%100/10+0x30;//個位數(shù)disdata1[3]=tvalue%10+0x30;//小數(shù)位if(tsheding<hhhh)//判斷溫度設定值是正是負 {flagtsheding='-';disdata1[4]=(~tsheding+1)/10+0x30;disdata1[5]=(~tsheding+1)%10+0x30;}else{ flagtsheding='';disdata1[4]=tsheding/10+0x30;disdata1[5]=tsheding%10+0x30;}if(tflag==0)flagdat=0x20;//正溫度不顯示符號elseflagdat=0x2d;//負溫度顯示負號:-if(disdata1[0]==0x30){disdata1[0]=0x20;//如果百位為0,不顯示if(disdata1[1]==0x30){ disdata1[1]=0x20;//如果百位為0,十位為0也不顯示}}wr_com(0x85);wr_dat(flagdat);//顯示符號位wr_com(0x86);wr_dat(disdata1[0]);//顯示百位wr_com(0x87);wr_dat(disdata1[1]);//顯示十位wr_com(0x88);wr_dat(disdata1[2]);//顯示個位wr_com(0x89);wr_dat(0x2e);//顯示小數(shù)點wr_com(0x8a);wr_dat(disdata1[3]);//顯示小數(shù)位wr_com(0x8b);//顯示設定溫度值wr_dat('(');wr_com(0x8c);wr_dat(flagtsheding);wr_com(0x8d);wr_dat(disdata1[4]);wr_com(0x8e);wr_dat(disdata1[5]);wr_com(0x8f);wr_dat(')');}/*******************************************************************/voidds1820disp2()//濕度值顯示{f=tem1*256+tem0;f=f*20;if((6033<=f)&&(f<=7351)){if((7224<f)&&(f<=7351)){temp0=0;temp1=(7351-f)*10/127;}if((7100<f)&&(f<=7224)){temp0=1;temp1=(7224-f)*10/124;}if((6976<f)&&(f<=7100)){temp0=2;temp1=(7100-f)*10/124;}if((6853<f)&&(f<=6976)){temp0=3;temp1=(6976-f)*10/123;}if((6728<f)&&(f<=6853)){temp0=4;temp1=(6853-f)*10/125;}if((6600<f)&&(f<=6728)){temp0=5;temp1=(6728-f)*10/128;}if((6486<f)&&(f<=6600)){temp0=6;temp1=(6600-f)*10/132;}if((6330<f)&&(f<=6486)){temp0=7;temp1=(6468-f)*10/138;}if((6186<f)&&(f<=6300)){temp0=8;temp1=

溫馨提示

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

評論

0/150

提交評論