模擬灌溉系統(tǒng)_第1頁
模擬灌溉系統(tǒng)_第2頁
模擬灌溉系統(tǒng)_第3頁
模擬灌溉系統(tǒng)_第4頁
模擬灌溉系統(tǒng)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

模擬灌溉系統(tǒng)本頁僅作為文檔頁封面,使用時可以刪除Thisdocumentisforreferenceonly-rar21year.March微機與單片機原理及應用

課程設計報告題目:模擬智能灌溉系統(tǒng)學號:110603136姓名:黃鑫年級:11級自動化指導教師:叢玉華開課學期教室上交時間成績大三上實B3032013-12-21-、硬件部分1、涉及芯片:(1)、STC90C519RD+基本功能8位CPU-4kbytes程序存儲器(ROM)(52為8K)128bytes的數(shù)據(jù)存儲器(RAM)(52有256bytes的RAM)32條I/O口線-111條指令,大部分為單字節(jié)指令21個專用寄存器2個可編程定時/計數(shù)器?5個中斷源,2個優(yōu)先級(52有6個)一個全雙工串行通信口外部數(shù)據(jù)存儲器尋址空間為64kB外部程序存儲器尋址空間為64kB邏輯操作位尋址功能?雙列直插40PinDIP封裝單一+5V電源供電CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器;RAM:用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);ROM:用以存放程序、一些原始數(shù)據(jù)和表格;I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出T/C:兩個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)模式;五個中斷源的中斷控制系統(tǒng);一個全雙HUART(通用異步接收發(fā)送器)的串行I/O口,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信;片內(nèi)振蕩器和時鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最佳振蕩頻率為6M—12M。引腳圖P1.0匚1V如□VccP1.1C239□P0.0PL2c338□P0,1F1.3c4町nTO,2F1.4匚538ziFO一3匚fi臨ZIKO.1P1.6匚7—34□P0.5PL7e8g33□P0,6RSifvpl)匚96界qPD.7洋.O/RXJ)匚10迂31=iI■:A/VppP3.1/TX1)匚11—30nM.E/P[fOCrs.a/nTO匚12o跆□P5EN嘴3/INTI匚13g卵□P2.74/TOt[427□PLs曩n/T]C15□P3.6/■亟匚1625□P2.4P3.7/RD匚1724nP2.3XTAI-2仁M對□5匚22□E2.1&c2021=iP2.0引腳功能P0口有三個功能:1、外部擴展存儲器時,當做數(shù)據(jù)總線2、外部擴展存儲器時,當作地址總線3、不擴展時,可做一般的I/O使用,但內(nèi)部無上拉電阻,作為輸入或輸出時應在外部接上拉電阻。、P1口只做I/O口使用:其內(nèi)部有上拉電阻。P2口有兩個功能:1、擴展外部存儲器時,當作地址總線使用2、做一般I/O口使用,其內(nèi)部有上拉電阻;P3口有兩個功能:除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設置,PSEN外部程序存儲器讀選通信號ALE地址鎖存控制信號EA訪問和序存儲器控制信號XTAL1和XTAL2外接晶振引腳。當使用芯片內(nèi)部時鐘時,此二引腳用于外接石英晶體和微調(diào)電容;當使用外部時鐘時,用于接外部時鐘脈沖信號。VCC:電源+5V輸入VSS:GND接地RST復位信號、74HC138基本功能HC138按照三位二進制輸入碼和賦能輸入條件,從8個輸出端中譯出一個低電平輸出。真值表引腳圖

EsE2ElA*Ai&YOy1Y2Y3Y4EsE2ElA*Ai&YOy1Y2Y3Y4Y5Y6Y7XElXXXXEEIEHHHHEEHXXHXXXFFHHHHrrBIXXXXXrrHHHHrrBHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLH.HLHHHH.HHLLLHHH.HHLHHH.HIILLHLLE[I[HHLHE[IIHLr.HLHFFHHHHLrrHHLLHHLHHHHHHLHHLLHHHHHHHHHHL74HC138集成譯碼器功能表.A0*ETE7E3(¥7)¥7頃4DtJEEEEEEldcg網(wǎng)網(wǎng)(¥3){Y4(V5(V6

VCY0Y1Y2Y3Y4Y5Ye

SS23232313235]“H一高電平L一低電平X一任意電平E3.E2.E?為輸入使能端Aw,Ai,Aq為二進制數(shù)據(jù)輸入端可"寸為8個輸出信號字母上面的J號說明該輸入或輸出是低電平有效、DS1302基本功能74HC138可以對年、月、日、周、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。引腳圖VcC218X127?X236GND—45—VcciSCLKI/ORST引腳功能DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給VcC218X127?X236GND—45—VcciSCLKI/ORSTX1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。當RST為高電

平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK為時鐘輸入端。數(shù)據(jù)格式的控剖宇節(jié)的控剖宇節(jié)控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。(4)、PCF8591基本功能PCF8591的功能包括多路模擬輸入、內(nèi)置跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)引腳圖引腳功AIN0?地址dElIX匕pcraseiE叵A1NDA1NLA1N2A1N3A1A£Vga畫AOUT模轉(zhuǎn)引腳圖引腳功AIN0?地址dElIX匕pcraseiE叵A1NDA1NLA1N2A1N3A1A£Vga畫AOUT回’『R3F畫EXT回OSC亟5CLTSDA換。VDD、VSS:電源端。(2.5?6V)能AIN3:模擬信號輸入端。A0?A2:引腳端。SDA、SCL:I2C總線的數(shù)據(jù)線、時鐘線。OSC:外部時鐘輸入端,內(nèi)部時鐘輸出端。EXT:內(nèi)部、外部時鐘選擇線,使用內(nèi)部時鐘時EXT接地。AGND:模擬信號地。AOUT:D/A轉(zhuǎn)換輸出端。VREF:基準電源端。數(shù)據(jù)格式在傳輸數(shù)據(jù)的時候,SDA線必須在時鐘的高電平周期保持穩(wěn)定,SDA的高或低電平狀態(tài)只有在SCL線的時鐘信號是低電平時才能改變。SDASCL教據(jù)線穩(wěn)定'允音教數(shù)據(jù)正常|據(jù)改變SCL線是高電平時,SDA線從高電平向低電平切換,這個情況表示起始條件;SCLSDASCL教據(jù)線穩(wěn)定'允音教數(shù)據(jù)正常|據(jù)改變、24C02基本功能串行E2PROM是基于I2C-BUS的存儲器件,遵循二線制協(xié)議,其具有接口方便,體積小,數(shù)據(jù)掉電不丟失等特點。引腳圖引腳功能A0,A1,A2:器件地址選擇SDA:串行數(shù)據(jù)、地址SCL:串行時鐘WP:寫保護Vcc:1.8V-6.0V工作電壓Vss:地數(shù)據(jù)格式同上(PCF8591)2、系統(tǒng)電路圖:二、軟件部分2、程序#include<reg51.h>#include〃i2c.h〃#include"ds1302.h"#include<intrins.h>#defineGPIO_DIGP0//--定義使用的IO--////--定義PCF8591的讀寫地址--//#defineWRITEADDR0x90//寫地址#defineREADADDR0x91//讀地址//74LS138定義sbitLSA=P2"2;sbitLSB=P2”3;sbitLSC=P2"4;〃獨立按鍵sbitS4=P「0;sbitS5=P「1;sbitS6=P「2;sbitS7=P「3;sbitLED_RED=P1"4;//紅燈,手動模式sbitLED_GREEN=P1”5;〃綠燈,自動模式sbitfengmingqi=P1"6;sbitRELAY=P1”7;bitflag_mode=0;bitissetting=0;ucharnum=50;//—定義全局變量--//unsignedcharcodeDIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼unsignedcharDisplayData[8];//用來存放要顯示的8位數(shù)的值unsignedchartable[8];//用來存放自動模式下設置界面//--聲明全局變量--//voidDigDisplay();voidDelay10ms(ucharc);bitISendByte(unsignedcharsla,unsignedcharc);unsignedcharIRcvByte(unsignedcharsla);voidAt24c02Write(unsignedchar,unsignedchar);unsignedcharAt24c02Read(unsignedchar);voidTimer0Configuration();voidKey_down();/*****PCF8591**********/voidPcf8591SendByte(unsignedcharchannel);unsignedcharPcf8591ReadByte();/********************************************************************************函數(shù)名:main*函數(shù)功能:主函數(shù)*輸入:無*輸出:無*******************************************************************************/voidmain()(unsignedintadNum;floatvalue;LED_RED=0;LED_GREEN=0;num=At24c02Read(2);Ds1302Init();while(1)(Pcf8591SendByte(0);//發(fā)送電位器轉(zhuǎn)換命令adNum=Pcf8591ReadByte();//將轉(zhuǎn)換結(jié)果讀走value=adNum/2.55;if(adNum>99)adNum=99;if(adNum>num)(RELAY=1;fengmingqi=1;}else(RELAY=0;fengmingqi=0;}Ds1302ReadTime();Key_down();DisplayData[0]=DIG_CODE[TIME[2]/16];〃時DisplayData[1]=DIG_CODE[TIME[2]&0x0f];DisplayData[2]=0x40;DisplayData[3]=DIG_CODE[TIME[1]/16];〃分DisplayData[4]=DIG_CODE[TIME[1]&0x0f];DisplayData[5]=0x00;DisplayData[6]=DIG_CODE[adNum/10];DisplayData[7]=DIG_CODE[adNum%10];table[0]=0x40;table[1]=0x40;table[2]=0x40;table[3]=0x40;table[4]=0x40;table[5]=0x40;table[6]=DIG_CODE[num/10];table[7]=DIG_CODE[num%10];DigDisplay();}}/********************************************************************************按鍵*******************************************************************************/voidKey_down()(ucharn=0;if(S7==0)(Delay10ms(1);if(S7==0)(if(flag_mode==0)flag_mode=1;elseflag_mode=0;}while((n<50)&&(S7==0))(Delay10ms(1);n++;}n=0;}if(flag_mode)//手動模式(LED_RED=1;LED_GREEN=0;if(S6==0)(Delay10ms(1);if(S6==0)(fengmingqi—fengmingqi;}while((n<50)&&(S6==0))(Delay10ms(1);n++;}n=0;}if(S5==0)(Delay10ms(1);if(S5==0)(RELAY=0;//打開灌溉系統(tǒng)}while((n<50)&&(S5==0))(Delay10ms(1);n++;}n=0;}if(S4==0)(Delay10ms(1);if(S4==0)(RELAY=1;//關閉灌溉系統(tǒng)}while((n<50)&&(S4==0))(Delay10ms(1);n++;}n=0;}if(adNum>num)(RELAY=1;fengmingqi=1;}}else//自動模式(LED_RED=0;LED_GREEN=1;if(S6==0)Delay10ms(1);if(S6==0)issetting=~issettingwhile((n<50)&&(S6==0))Delay10ms(1);n++;n=0;if(issetting)if(S5==0)Delay10ms(1);if(S5==0)if(num<99)

num++;while((n<50)&&(S5==0))Delay10ms(1);n++;n=0;if(S4==0)Delay10ms(1);if(S4==0)if(num>0)num--;while((n<50)&&(S4==0))Delay10ms(1);n++;}}else(At24c02Write(2,num);}if(adNum>num)(RELAY=1;fengmingqi=1;}else(RELAY=0;fengmingqi=0;}}}/********************************************************************************函數(shù)名:DigDisplay*函數(shù)功能:使用數(shù)碼管顯示*輸入:無*輸出:無*******************************************************************************/voidDigDisplay()(unsignedchari;unsignedintj;for(i=0;i<8;i++)(switch(i)//位選,選擇點亮的數(shù)碼管,(case(0):LSA=0;LSB=0;LSC=0;break;//顯示第0位case(1):LSA=1;LSB=0;LSC=0;break;//顯示第1位case(2):LSA=0;LSB=1;LSC=0;break;//顯示第2位case(3):LSA=1;LSB=1;LSC=0;break;//顯示第3位case(4):LSA=0;LSB=0;LSC=1;break;//顯示第4位case(5):LSA=1;LSB=0;LSC=1;break;//顯示第5位case(6):LSA=0;LSB=1;LSC=1;break;//顯示第6位case(7):LSA=1;LSB=1;LSC=1;break;//顯示第7位}if(issetting)(GPIO_DIG=table[i];〃發(fā)送段碼}else(GPIO_DIG=DisplayData[i];//發(fā)送段碼}j=50;//掃描間隔時間設定while(j--);GPIO_DIG=0x00;//消隱}}/*******************************************************************************函數(shù)名:voidAt24c02Write(unsignedcharaddr,unsignedchardat)*函數(shù)功能:往24c02的一個地址寫入一個數(shù)據(jù)*輸入:無*輸出:無*******************************************************************************/voidAt24c02Write(unsignedcharaddr,unsignedchardat)(I2C_Start();I2C_SendByte(0xa0,1);//發(fā)送寫器件地址I2C_SendByte(addr,1);//發(fā)送要寫入內(nèi)存地址I2C_SendByte(dat,0);〃發(fā)送數(shù)據(jù)I2C_Stop();}/*******************************************************************************函數(shù)名:unsignedcharAt24c02Read(unsignedcharaddr)*函數(shù)功能:讀取24c02的一個地址的一個數(shù)據(jù)*輸入:無*輸出:無*******************************************************************************/unsignedcharAt24c02Read(unsignedcharaddr)(unsignedcharnum;I2C_Start();I2C_SendByte(0xa0,1);//發(fā)送寫器件地址I2C_SendByte(addr,1);//發(fā)送要讀取的地址I2C_Start();I2C_SendByte(0xa1,1);//發(fā)送讀器件地址num=I2C_ReadByte();〃讀取數(shù)據(jù)I2C_Stop();returnnum;}/*******************************************************************************函數(shù)名:Pcf8591SendByte*函數(shù)功能:寫入一個控制命令*輸入:channel(轉(zhuǎn)換通道)*輸出:無*******************************************************************************/voidPcf8591SendByte(unsignedcharchannel)(I2C_Start();I2C_SendByte(WRITEADDR,1);//發(fā)送寫器件地址I2C_SendByte(0x40|channel,0);//發(fā)送控制寄存器I2C_Stop();}/*******************************************************************************函數(shù)名:Pcf8591ReadByte*函數(shù)功能:讀取一個轉(zhuǎn)換值*輸入:無*輸出:dat*******************************************************************************/unsignedcharPcf8591ReadByte()(unsignedchardat;I2C_Start();I2C_SendByte(READADDR,1);//發(fā)送讀器件地址dat=I2C_ReadByte();//讀取數(shù)據(jù)I2C_Stop();//結(jié)束總線returndat;}voidDelay10ms(ucharc)(uchara,b;for(;c>0;c--)(for(b=38;b>0;b--)(for(a=130;a>0;a--);}}}三、系統(tǒng)說明手冊功能簡述:要求“模擬智能灌溉系統(tǒng)”能夠?qū)崿F(xiàn)土壤濕度測量、土壤濕度和時間顯示、濕度閾值設定及存儲等基本功能。通過電位器Rb2輸出電壓信號,模擬濕度傳感器輸出信號,再通過AD采集完成濕度測量功能;通過DS1302芯片提供時間信息;通過按鍵完成灌溉系統(tǒng)控制和濕度閾值調(diào)整功能,通過LED完成系統(tǒng)工作狀態(tài)指示功能。系統(tǒng)硬件電路主要由單片機控制電路、顯示單元、ADC采集單元、RTC單元、EEPROM存儲單元、繼

溫馨提示

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

評論

0/150

提交評論