單片機課程設(shè)計-基于單片機的自動滴灌控制系統(tǒng)的設(shè)計.doc_第1頁
單片機課程設(shè)計-基于單片機的自動滴灌控制系統(tǒng)的設(shè)計.doc_第2頁
單片機課程設(shè)計-基于單片機的自動滴灌控制系統(tǒng)的設(shè)計.doc_第3頁
單片機課程設(shè)計-基于單片機的自動滴灌控制系統(tǒng)的設(shè)計.doc_第4頁
單片機課程設(shè)計-基于單片機的自動滴灌控制系統(tǒng)的設(shè)計.doc_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程名稱: 單片機課程設(shè)計 設(shè)計項目: 基于單片機自動滴灌控制系統(tǒng)設(shè)計 專業(yè)班級: 姓名(學(xué)號): 實驗時間: 批閱時間: 指導(dǎo)教師: 成 績: 目 錄第一章 緒論31.1 本設(shè)計任務(wù)和主要內(nèi)容3第二章 硬件電路設(shè)計32.1 單片機控制系統(tǒng)原理32.2 單片機主機系統(tǒng)電路42.2.1時鐘電路42.2.2復(fù)位電路52.3 數(shù)據(jù)采集處理電路52.4 LED顯示系統(tǒng)電路62.5 超限報警電路7第三章 系統(tǒng)的軟件設(shè)計8第四章 總結(jié)14基于單片機的自動滴灌控制系統(tǒng)的設(shè)計第一章 緒論1.1 本設(shè)計任務(wù)和主要內(nèi)容本論文主要研究基于單片機的自動滴灌控制系統(tǒng),分別對土壤濕度與灌水量之間的關(guān)系、滴灌控制技術(shù)及系統(tǒng)設(shè)備的軟、硬件各個部分進行了研究。主要內(nèi)容如下:1.根據(jù)滴灌技術(shù)的特點,進行節(jié)水灌溉控制系統(tǒng)的整體研究與設(shè)計。2.土壤濕度變化使用DHT11型溫濕度傳感器采集,再對濕度傳感器的輸出信號進行分析。3 .數(shù)碼管顯示土壤濕度值。4.使用步進電機控制閥門的開啟或關(guān)閉。5.當(dāng)土壤濕度值低于設(shè)定的最低值時,系統(tǒng)可自動報警。第二章 硬件電路設(shè)計2.1單片機控制系統(tǒng)原理本系統(tǒng)的設(shè)計方案是基于微控、無線數(shù)據(jù)接收和傳感器測量技術(shù),采用濕度傳感器采集土壤的濕度信息,根據(jù)采集的相應(yīng)數(shù)據(jù)及農(nóng)作物生長所需水分的需求量的設(shè)置,及時、精確、高效地控制滴灌的水量。系統(tǒng)根據(jù)傳感器反饋的數(shù)據(jù)的大小控制滴灌的水量,使農(nóng)作物及時的獲得所需的水分,控制過程中當(dāng)?shù)喂嗟阶魑锼璧乃繒r,系統(tǒng)會及時的關(guān)閉水源的流入,這樣則避免水資源的浪費,有效的實現(xiàn)節(jié)水灌溉的設(shè)計要求。種植作物的土壤土壤濕度傳感90C51單片機數(shù)碼管顯示濕度LED報警步進電機驅(qū)動閥門開啟或關(guān)閉圖1 單片機控制系統(tǒng)原理框圖2.2 單片機主機系統(tǒng)電路STC90C51單片機是STC推出的新一代超強抗干擾、高速、低功耗的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時鐘/機器周期和6時鐘/機器周期可以任意選擇。片上集成1280字節(jié)或512字節(jié)或256字節(jié)RAM,共3個16位定時器/計數(shù)器,其中定時器0還可以當(dāng)成2個8位定時器使用,外部中斷4路,下降沿中斷或低電平觸發(fā)中斷,通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART,內(nèi)部集成MAX810專用復(fù)位電路,當(dāng)時鐘頻率在6MHz時,該復(fù)位電路是可靠的;當(dāng)時鐘頻率在12MHz時,勉強可用。在要求不高的情況下,可在復(fù)位腳外接電阻電容復(fù)位。圖2 單片機主機系統(tǒng)圖2.2.1時鐘電路單片機的時鐘信號用來提供單片機片內(nèi)各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實際使用中常采用這種方式,如圖2所示在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器并產(chǎn)生振蕩時鐘脈沖。圖3中外接晶體以及電容C2和C1構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值均為30P左右,晶振頻率選6MHz。2.2.2復(fù)位電路 為了初始化單片機內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機的復(fù)位是靠外電路來實現(xiàn)的,在正常運行情況下,只要RST引腳上出現(xiàn)兩個機器周期時間以上的高電平,即可引起系統(tǒng)復(fù)位,但如果RST引腳上持續(xù)為高電平,單片機就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為FFH,堆棧指針SP置為07H, SBUF內(nèi)置為不定值,其余的寄存器全部清0,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時RAM的內(nèi)容是不定的。復(fù)位操作有兩種情況,即上電復(fù)位和手動(開關(guān))復(fù)位。本系統(tǒng)采用上電復(fù)位方式。 圖2中R9和Cl組成上電復(fù)位電路,其值R取為1KQ, C取為1pF.2.3數(shù)據(jù)采集電路(數(shù)字溫濕度傳感器DHT11)DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4 針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。測量分辨率分別為8bit(溫度)、8bit(濕度)。圖32.4 LED顯示系統(tǒng)電路微機化測控系統(tǒng)中常用的測量數(shù)據(jù)的顯示器有發(fā)光二極管顯示器(簡稱LED或數(shù)碼管)和液晶顯示器(簡稱LCD)。這兩種顯示器都具有線路簡單、耗電少、成本低、壽命長等優(yōu)點,本系統(tǒng)輸出結(jié)果選用4個LED顯示。數(shù)碼管有共陰共陽之分,本系統(tǒng)采用8段共陰型LED,其原理圖如圖6所示,每位數(shù)碼管內(nèi)部有8個發(fā)光二極管,公共端由8個發(fā)光二極管的陰極并接而成,正常顯示時公共端接低電平(GND),各發(fā)光二極管是否點亮取決于a-dp各引腳上是否是高電平。 LED數(shù)碼管的外形結(jié)構(gòu)如圖6,外部有10個引腳,其中3, 8腳為公共端也稱位選端,其余8個引腳稱為段選端,當(dāng)要使某一位數(shù)碼管顯示某一數(shù)字(0-9中的一個)必須在這個數(shù)碼管的段選端加上與數(shù)字顯示數(shù)字對應(yīng)的8位段選碼(也稱字形碼),在位選端加上低電平即可。由于系統(tǒng)要顯示的內(nèi)容比較簡單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟。LED有共陰極和共陽極兩種。如圖5所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5V的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段)ag,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護各段LED不被損壞,需外加限流電阻。 符號和引腳 共陰極 共陽極圖5 LED數(shù)碼管結(jié)構(gòu)原理圖:數(shù)碼管顯示器有兩種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需要解決多位LED數(shù)碼管的“段控”和“位控”問題,本電路的通過P1口實現(xiàn):而每一位的公共端,即LED數(shù)碼管的“位控”,則由P3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過PNP三極管的導(dǎo)通與截止來控制,即三極管處于“開頭”狀態(tài)。2.5超限報警電路為了在某些緊急狀態(tài)或反常狀態(tài)下,能使操作人員不致忽視,以便及時處理,往往需要有某種更能引起人們注意提起警覺的報警信號產(chǎn)生,這種報警信號通常有三種類型:閃光報警、鳴音報警、語音報警,本系統(tǒng)采用簡單易行的LED發(fā)光報警電路。 如圖6所示報警電路,報警設(shè)備選用LED發(fā)光二極管,圖中接入的發(fā)光二極管LED為超高限與超低限報警器,在濕度低于最低濕度或高于最高濕度時,二極管發(fā)光報警。報警設(shè)備選用LED發(fā)光二極管,圖中發(fā)光二極管的一端接在高電平+5V,另一端分別接P2.6與P2.7,當(dāng)P2.6、P2.7端輸出為低電平0時,二極管導(dǎo)通,燈亮發(fā)出報警信號。圖6報警電路第三章 系統(tǒng)的軟件設(shè)計#include #include /typedef unsigned char U8; /* 無符號8位整型變量 */typedef signed char S8; /* 有符號8位整型變量 */typedef unsigned int U16; /* 無符號16位整型變量 */typedef signed int S16; /* 有符號16位整型變量 */typedef unsigned long U32; /* 無符號32位整型變量 */typedef signed long S32; /* 有符號32位整型變量 */typedef float F32; /* 單精度浮點數(shù)(32位長度)*/typedef double F64; /* 雙精度浮點數(shù)(64位長度)*/#define uchar unsigned char#define uint unsigned int#define Data_0_time 4sbit P2_0 = P20 ;U8 U8FLAG;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 outdata5; /定義發(fā)送的字節(jié)數(shù) U8 indata5;U8 count, count_r=0;U8 str5=0,0,0,0,0;U16 U16temp1,U16temp2;uchar LedOut4;/此表為 LED 的字模, 共陰數(shù)碼管 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /段碼控制/此表為8個數(shù)碼管位選控制, 共陰數(shù)碼管 1-8個 - unsigned char code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9; /反轉(zhuǎn)unsigned char code FFZ8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1; /正轉(zhuǎn)uint K;sbit LS138A = P22; /定義138譯碼器的輸入A腳由P2.2控制 sbit LS138B = P23; /定義138譯碼器的輸入腳B由P2.3控制sbit LS138C = P24; /定義138譯碼器的輸入腳C由P2.4控制/Motorsbit F1 = P10;sbit F2 = P11;sbit F3 = P12;sbit F4 = P13;sbit led1=P27;sbit led2=P26; void Delay(U16 j) U8 i; for(;j0;j-) for(i=0;i27;i+); void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; /* 步進電機驅(qū)動*/void motor_ffw() unsigned char i; unsigned int j; for (j=0; j12; j+) /轉(zhuǎn)1*n圈 for (i=0; i8; i+) /一個周期轉(zhuǎn)30度 if(K=1) P1 = FFWi&0x0f; /取數(shù)據(jù) if(K=2) P1 = FFZi&0x0f; Delay(10); /調(diào)節(jié)轉(zhuǎn)速,速度太快會使電機只震動不轉(zhuǎn)動 void COM(void) U8 i; for(i=0;i8;i+) U8FLAG=2; while(!P2_0)&U8FLAG+);Delay_10us(); Delay_10us();Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&U8FLAG+); /超時則跳出for循環(huán) if(U8FLAG=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預(yù)定0高電平值則數(shù)據(jù)位為 1 U8comdata=1; U8comdata|=U8temp; /0 /rof /-/-濕度讀取子程序 -/-/-以下變量均為全局變量-/-溫度高8位= U8T_data_H-/-溫度低8位= U8T_data_L-/-濕度高8位= U8RH_data_H-/-濕度低8位= U8RH_data_L-/-校驗 8位 = U8checkdata-/-調(diào)用相關(guān)子程序如下-/- Delay();, Delay_10us();,COM(); /-void RH(void) /主機拉低18ms P2_0=0; Delay(80); P2_0=1; /總線由上拉電阻拉高 主機延時20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主機設(shè)為輸入 判斷從機響應(yīng)信號 P2_0=1; /判斷從機是否有低電平響應(yīng)信號 如不響應(yīng)則跳出,響應(yīng)則向下運行 if(!P2_0) /T ! U8FLAG=2; /判斷從機是否發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束 while(!P2_0)&U8FLAG+); U8FLAG=2; /判斷從機是否發(fā)出 80us 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while(P2_0)&U8FLAG+); /數(shù)據(jù)接收狀態(tài) COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; /數(shù)據(jù)校驗 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; /fi /fivoid xianshi(uchar a) uchar i; /LedOut0=Disp_Taba/1000; /LedOut2=Disp_Taba/100; LedOut1=Disp_Taba%100/10; LedOut0=Disp_Taba%10; for( i=0; i3; i+) /實現(xiàn)4位動態(tài)掃描循環(huán) P0 = LedOuti; /將字模送到P0口顯示 Delay(2); switch(i) /使用switch 語句控制位選 也可以是用查表的方式 學(xué)員可以試著自己修改 case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; /case 2:LS138A=0; LS138B=1; LS138C=0; break; /Delay(10); void time0_init() /計數(shù)器初始化函數(shù)TMOD= 0x01; /計數(shù)器0工作在方式模式1TH0 = (65536-800)/256; /晶振是11.0592,產(chǎn)生PCA時鐘為1.3824MTL0 = (65536-800)%256;/TH0 = (65536-6556)/256; /晶振是11.0592,產(chǎn)生PCA時鐘為1.3824M/TL0 = (65536-6536)%256;/AUXR=0xC0;/計數(shù)器均工作在1T模式。計數(shù)頻率11.05

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論