基于單片機(jī)節(jié)水澆灌系統(tǒng)_第1頁(yè)
基于單片機(jī)節(jié)水澆灌系統(tǒng)_第2頁(yè)
基于單片機(jī)節(jié)水澆灌系統(tǒng)_第3頁(yè)
基于單片機(jī)節(jié)水澆灌系統(tǒng)_第4頁(yè)
基于單片機(jī)節(jié)水澆灌系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

④轉(zhuǎn)換速率指能夠重復(fù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的速疫,即每秒轉(zhuǎn)換的次數(shù)。3.4顯示器件選取顯示部分選用1602液晶顯示共十六引腳,1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如表1所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。藍(lán)底白字標(biāo)準(zhǔn)型16X2液晶顯示字符模塊(背光/藍(lán)屏)1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為地電源第2腳:VDD接5V正電源第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光電源正極第16腳:背光電源負(fù)極3.5開關(guān)與報(bào)警選取開關(guān)部分選用四相步進(jìn)電機(jī)采用電機(jī)正反轉(zhuǎn)來(lái)控制閥門。報(bào)警器選用蜂鳴器。4.軟件語(yǔ)言的選取本系統(tǒng)下位機(jī)以單片機(jī)為核心,采用C語(yǔ)言編程。C語(yǔ)言是書寫程序的一種軟件語(yǔ)言,它是計(jì)算機(jī)軟件設(shè)計(jì)的重要工具。在系統(tǒng)軟件開發(fā)、實(shí)時(shí)控制的和實(shí)時(shí)處理領(lǐng)域中有著不可替代的地位。用C語(yǔ)言編程使編程簡(jiǎn)潔易懂,進(jìn)而進(jìn)行高質(zhì)量的設(shè)計(jì),而且它不獨(dú)立于具體機(jī)器,是一種非常通用的高級(jí)程序設(shè)計(jì)語(yǔ)言,采用C語(yǔ)言編程,因此,在已經(jīng)有眾多高級(jí)語(yǔ)言和可視化集成開發(fā)環(huán)境工具的今天,C語(yǔ)言有著重要的有效的程序設(shè)計(jì)語(yǔ)言地位。5.模糊控制過程開始采樣計(jì)算分析取合適值判斷是否需要澆水不需要澆水澆水步進(jìn)電機(jī)開關(guān)打開結(jié)束 模糊控制流程圖6.單片機(jī)的主要系統(tǒng)電路6.1時(shí)鐘電路單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)片內(nèi)各種微操作的時(shí)間基準(zhǔn),時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時(shí),電路簡(jiǎn)單,所得的時(shí)鐘信號(hào)比較穩(wěn)定,實(shí)際使用中常采用這種方式,如圖所示在其外接晶體振蕩器(簡(jiǎn)稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個(gè)自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。圖中外接晶體以及電容C2和C3構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值均為30PF左右,晶振頻率選12MHz。 30PF STC89C52RC STC89C52RC XTAL2 VCCGND 12M 10UF RESET GND 30PF XTAL1 1KΩ 時(shí)鐘電路復(fù)位電路6.2復(fù)位電路為了初始化單片機(jī)內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機(jī)的復(fù)位是靠外電路來(lái)實(shí)現(xiàn)的,在正常運(yùn)行情況下,只要RST引腳上出現(xiàn)兩個(gè)機(jī)器周期時(shí)間以上的高電平,即可引起系統(tǒng)復(fù)位。但如果RST引腳上持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后系統(tǒng)將輸入/輸出(I/O)端口寄存器置為FFH,堆棧指針SP置為07H,SBUF內(nèi)置為不定值,其余的寄存器全部清0,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時(shí)RAM的內(nèi)容是不定的。復(fù)位操作有兩種情況,即上電復(fù)位和手動(dòng)(開關(guān))復(fù)位。本系統(tǒng)采用上電復(fù)位方式。6.3數(shù)據(jù)采集處理電路ADC0809是一種8位逐次逼近AD轉(zhuǎn)換器,內(nèi)部具有鎖存控制的8路模擬開關(guān),外接8路模擬輸入端,可同時(shí)對(duì)8路O一5V的輸入模擬電壓信號(hào)分時(shí)進(jìn)行采集轉(zhuǎn)換,本系統(tǒng)只用到IN0輸入通道。ADC0809轉(zhuǎn)換器的分辨率為8位,最大不可調(diào)誤差小于±1LSB,采用單一+5V供電,功耗為15mW,不必進(jìn)行零點(diǎn)和滿度調(diào)整。由于ADC0809轉(zhuǎn)換器的輸出數(shù)據(jù)寄存器具有可控的三態(tài)輸出功能,輸出具有三態(tài)鎖存緩沖器,故其8位數(shù)據(jù)輸出引腳可直接與數(shù)據(jù)總線相連。AD轉(zhuǎn)換器需外部控制啟動(dòng)轉(zhuǎn)換信號(hào)方能進(jìn)行轉(zhuǎn)換,這一啟動(dòng)轉(zhuǎn)換信號(hào)可由CPU提供,不同型號(hào)的A/D轉(zhuǎn)換器,對(duì)啟動(dòng)轉(zhuǎn)換信號(hào)的要求也不同,分脈沖啟動(dòng)和電平啟動(dòng)兩種,ADC0809采用脈沖啟動(dòng)轉(zhuǎn)換,只需給A/D轉(zhuǎn)換器的啟動(dòng)控制轉(zhuǎn)換的輸入引腳(START)上,加入正脈沖信號(hào),即啟動(dòng)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換開始后,轉(zhuǎn)換結(jié)束信號(hào)輸出端(EOC)信號(hào)變低,轉(zhuǎn)換結(jié)束時(shí),EOC返回高電平,以通知主機(jī)讀取轉(zhuǎn)換結(jié)果的數(shù)字量,這個(gè)信號(hào)可以作為A/D轉(zhuǎn)換器的狀態(tài)信號(hào)供查詢,也可以用作中斷請(qǐng)求信號(hào)。本系統(tǒng)中ADC0809與AT89C51單片機(jī)的接口如圖4.5所示,采用等待延時(shí)方ADC0809的時(shí)鐘頻率范圍要求在10一1280kHz,采用定時(shí)器給其脈沖頻率。如圖連接方式,ADC0809的8位數(shù)據(jù)輸出引腳可直接與數(shù)據(jù)總線相連,地址譯碼引腳A、B、C分別接地,以選通IN0通道。AT89C51的P:。作為片選信號(hào),在啟動(dòng)AID轉(zhuǎn)換時(shí),由單片機(jī)的寫信號(hào)WR和P:??刂艫DC的地址鎖存和轉(zhuǎn)換啟動(dòng)。由于ALE與START連在一起,因此ADC0809在鎖存通道地址的同時(shí)也啟動(dòng)轉(zhuǎn)換,在讀取轉(zhuǎn)換結(jié)果時(shí),用單片機(jī)的讀信號(hào)RD和P,。引腳一級(jí)或菲門產(chǎn)生的正脈沖作為OE信號(hào),用以打開三態(tài)輸出鎖存器。6.4LCD液晶顯示該系統(tǒng)采用1602液晶顯示,數(shù)據(jù)口接單片機(jī)P0口,和AD0809公用數(shù)據(jù)口,LCD顯示簡(jiǎn)單,電路接線也簡(jiǎn)單,價(jià)格也便宜。6.4報(bào)警系統(tǒng)為了在某些緊急狀態(tài)或反常狀態(tài)下,能使操作人員不致忽視,以便及時(shí)處理,往往需要有某種更能引起人們注意提起警覺的報(bào)警信號(hào)產(chǎn)生,這種報(bào)警信號(hào)通常有三種類型:閃光報(bào)警、鳴音報(bào)警、語(yǔ)音報(bào)警,本系統(tǒng)采用簡(jiǎn)單易行的光報(bào)警電路。報(bào)警設(shè)備選用壓電式蜂鳴器,它約需要10mA的驅(qū)動(dòng)電流,只需在其兩條引線上加3一15v的直流電壓,即可產(chǎn)生3KHz左右的蜂鳴聲音,圖中蜂鳴器的一端接在高電平+5V,另一端接P1.7,在初態(tài)P1.7始終輸出高電平1,當(dāng)需要報(bào)警時(shí),程序?qū)ζ涠丝谇辶慵纯?,聲音的長(zhǎng)短可用延時(shí)程序控制實(shí)現(xiàn)。6.5電機(jī)控制電機(jī)使用四相八拍步進(jìn)電機(jī),電機(jī)驅(qū)動(dòng)使用UL2003A芯片,使用步進(jìn)電機(jī)做開關(guān)。6.6電路原理圖如下7.電路板的印刷與制作電路板制作是先使用protel99做好印刷電路,在打印,印刷,腐蝕,最后焊接。電路PCB圖如下:8.軟件設(shè)計(jì)部分系統(tǒng)軟件程序設(shè)計(jì)主要包括:主程序設(shè)計(jì).采樣子程序設(shè)計(jì)。數(shù)據(jù)處理程序LCD顯示子程序,電機(jī)控制,蜂鳴器報(bào)警。8.1頭文件#ifndef__yyyy_H__#define__yyyy_H__#include<reg52.h>#include<intrins.h>sbitSTART=P1^0;sbitEOC=P1^1;sbitOE=P1^2;sbitCLOCK=P1^3;sbitRS=P1^4;sbitRW=P1^5;sbitLCD_1602=P1^6;sbitBUZZ=P1^7;sbitDATA7=P0^7;sbitMA=P2^0;sbitMB=P2^1;sbitMC=P2^2;sbitMD=P2^3;typedefunsignedcharuint8;typedefunsignedintuint16;typedefunsignedlongintuint32;voiddelay_1(uint16j);voidbuzz_1(uint8dat,uint16j);voidmotor_1(void);voidread_status_1(void);voidcommand_1(uint8data_1);voiddata_1(uint8data_1);voidLCD_Initialize_1(void);voidwrite_space_1(uint8i);voiddisplay_1(floatdat);voidInitialize_2(void);floatADC0809_1(void);voiddisplay_2(void);floatdata_Correction(void);voidmotor_2(uint8dat);#endif8.2主程序與子程序部分#include"節(jié)水澆灌系統(tǒng).h"/*==================== 延時(shí)部分====================*/voiddelay_1(uint16j)//延時(shí)函數(shù){ while(j--);}/*====================== 數(shù)據(jù)采集轉(zhuǎn)處理部分======================*/voidInitialize_2(void)//定時(shí)器初始化函數(shù){ TMOD=0X01; TH0=0xff; TL0=0XFE; EA=1; ET0=1; TR0=1;}floatADC0809_1(void)//AD0809轉(zhuǎn)換函數(shù){ floatdat; START=0; _nop_(); START=1; _nop_(); _nop_(); START=0; P0=0XFF; while(!EOC);//檢測(cè)數(shù)據(jù)是否轉(zhuǎn)換結(jié)束 _nop_(); OE=1; dat=P0; _nop_(); OE=0; dat*=5.0/255; returndat;}voidinterrupt_1(void)interrupt1//AD0809提供工作頻率{ TH0=0xff; TL0=0XFE; CLOCK=~CLOCK;} floatdata_Correction(void)//計(jì)算比較精確的值 { uint8i=10,j=10; floatdat=0,dat_1[]={0,0,0,0,0,0,0,0,0,0}; while(i--)dat_1[i]=ADC0809_1(); while(j--)for(i=j;i<9&&i>=0;i--)//數(shù)值排序 { if(dat_1[j]<dat_1[i]) { dat=dat_1[j]; dat_1[j]=dat_1[i]; dat_1[i]=dat; } } dat=0; for(i=1;i<9;i++) dat+=dat_1[i]; dat/=8; dat/=135; dat*=1000; dat-=6; if(dat<0)dat=0; dat*=24/16; dat-=4; display_1(dat); returndat;}/*================== 液晶顯示部分====================*/voidread_status_1(void)//檢測(cè)忙信號(hào)函數(shù){ P0=0XFF; RS=0; RW=1; do { LCD_1602=0; LCD_1602=1; } while(DATA7); LCD_1602=0;}voidcommand_1(uint8data_1)//寫命令函數(shù){ read_status_1();//檢測(cè)忙信號(hào) RS=0; RW=0; P0=data_1; LCD_1602=1; LCD_1602=0;}voiddata_1(uint8data_1)//寫數(shù)據(jù)函數(shù){ read_status_1();//檢測(cè)忙信號(hào) RS=1; RW=0; P0=data_1; LCD_1602=1; LCD_1602=0;}voidLCD_Initialize_1(void)//液晶初始化函數(shù){ command_1(0x38); command_1(0x01); command_1(0x0c);}voidwrite_space_1(uint8i)//顯示位清除函數(shù){ while(i--)data_1('\');}voiddisplay_1(floatdat)//數(shù)據(jù)顯示函數(shù){ uint16h,i,j,k,l,m,fu=0,t=8; if(dat<0){dat=-dat;fu=1;} h=(uint16)dat; m=(uint16)(dat*100-h*100); i=h/100;//取百位 j=h/10%10;//取十位 h%=10;//取個(gè)位 k=m/10; l=m%10; command_1(0xcf); command_1(0x04); if(l>0) {data_1('\%');data_1(l+'0');data_1(k+'0');data_1('.');data_1(h+'0');t-=5;} elseif(k>0){data_1('\%');data_1(k+'0');data_1('.');data_1(h+'0');t-=4;} else{data_1('%');data_1(h+'0');t-=2;} if(i||j){data_1(j+'0');t--;if(i){data_1(i+'0');t--;}} if(fu){data_1('-');t--;} write_space_1(t);}voiddisplay_2(void)//顯示irrigation函數(shù){ uint8a[]={"irrigation"},*p; command_1(0x06); command_1(0x80); p=a; while(*p!='\0') { data_1(*p); p++; delay_1(30000);//流水顯示 }}/*======================== 蜂鳴器報(bào)警部分========================*/voidbuzz_1(uint8dat,uint16j)//報(bào)警函數(shù){ uint8i=100; BUZZ=1; if(dat<8&&dat>=0)//判斷是否報(bào)警 {while(j--) { while(i--)BUZZ=0;i=50; while(i--)BUZZ=1;i=1000; } BUZZ=1; }}/*============================= 電機(jī)部分=============================*/voidmotor_1()//步進(jìn)電機(jī)函數(shù){ chari,dat; uint8a[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uint16j=300; while(j--)for(i=7;i>=0;i--)//電機(jī)正轉(zhuǎn) { P2=a[i]; delay_1(100);//延時(shí) } j=50; P2=0; do { delay_1(2000);//延時(shí) dat=data_Correction();//數(shù)據(jù)顯示; }while(!(dat-15>=0)); j=300; while(j--)for(i=0;i<8;i++)//電機(jī)反轉(zhuǎn) { P2=a[i]; delay_1(100);//延時(shí) } P2=0;}voidmotor_2(uint8dat)//判斷是否澆灌{ uint8i=600; if((dat<8)&&(dat>=0))//判斷是否需要澆水 { motor_1();//電機(jī)工作}}/*==================== 主函數(shù)====================*/voidmain(void){ floatdat; BUZZ=1; OE=0; P2=0; LCD_Initialize_1();//液晶初始化 display_2();//液晶顯示界面 Initialize_2();//定時(shí)器初始化 while(1) { delay_1(2000);//延時(shí) dat=data_Correction();//數(shù)據(jù)顯示; buzz_1(dat,80);//判斷是否報(bào)警 motor_2(dat);//判斷是否澆灌 }}結(jié)論本系統(tǒng)根據(jù)目前節(jié)水灌溉技術(shù)的發(fā)展趨勢(shì)和國(guó)內(nèi)實(shí)際的應(yīng)用特點(diǎn)和要求,采用了自動(dòng)化的結(jié)構(gòu)形式,實(shí)現(xiàn)對(duì)土壤濕度的自動(dòng)檢測(cè)和控制。系統(tǒng)以單片機(jī)STC89C52為核心部件,機(jī)單片機(jī)系統(tǒng)完成對(duì)土壤濕度信號(hào)的采集、處理、顯示以及對(duì)執(zhí)行機(jī)構(gòu)的控制等功能;用Protel軟件繪制電路原理圖和PCB電路印刷板圖,并在電路板廠制作控制主板;利用C語(yǔ)言編制運(yùn)行程序,該系統(tǒng)的主要特點(diǎn)是:適用

溫馨提示

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

評(píng)論

0/150

提交評(píng)論