資料包內容:
制作出來的實物圖:
Altium Designer畫的原理圖如下:(51hei附件中可下載工程文件)
系統框圖:
自動澆花系統元件清單
1) 9*15萬用板
2) STC89C52單片機
3) AD0809
4) 40腳IC座
5) 28腳IC座
6) 土壤傳感器
7) 3腳排陣
8) 繼電器
9) 103排阻
10) 0.56四位一體共陽數碼管
11) 8550三極管*5
12) 2.2k電阻*4
13) 4.7k電阻*4
14) 10k電阻
15) 10uf電容
16) 30pf電容*2
17) 12M晶振
18) 5mmLED(紅)
19) 輕觸按鍵*4
20) 自鎖開關
21) DC電源插口
22) USB電源線或電池盒
設計論文內容預覽:
定時器部分以單片機AT89C51為控制核心,通過軟件設置達到具體動作實現。通過按鍵開關對當前時間以及定時澆水時間進行設置,共陰數碼管顯示,當時間處在所設置的澆水時間內時,單片機發出控制信號,開始澆水。否則,停止澆水。
本次畢業設計是設計一種51單片機控制的自動澆水系統,實現室內盆花澆水的自動化系統。該系統可對土壤的濕度進行監控,并對作物進行適時適量的澆水。其核心是51單片機和土壤濕度檢測器YL-69和顯示電路以及澆水繼電器驅動電路構成的檢測控制部分。主要研究土壤濕度與澆水時間之間的關系、澆灌控制技術及設備系統的硬件、軟件編程各個部分。檢測部分,單片機選用AT89C51單片機,軟件選用C51語言編程。土壤濕度采集與顯示電路可將檢測到的土壤濕度模擬量放大轉換成數字量通過單片機內程序控制精確的將溫度與濕度分別顯示在LED數碼管顯示屏上,通過單片機內的中斷服務程序判斷是否要給盆花澆水,若需澆水,則單片機系統發出澆水信號,開始澆水,若不需要澆水,則進行下一次循環檢測。在澆水系統中也同時設計一個定時澆水部分,通過按鍵開關設置不同的澆水時間段,在時間段以內時,單片機驅動澆水系統,開始澆水,如不在時間段內,則不澆水。
本款為土壤干濕度檢測自動澆花系統,啟動系統時設定土壤水分為0,即土壤最干時候為250個單位。當將土壤傳感器插入泥土(可以拿個紙杯裝點),數值下降,例如顯示0125,即目前土壤干燥度為125個單位,總共250,也可以算出土壤濕度在50%左右。如果往里面澆水,數值會下降,因為干燥度降低 ,相反的濕度增大。數碼管顯示為干燥度。
如果目前數碼管顯示0125,你可以手動設置自動澆花啟動的數值為0130,當土壤越來越干,數值到達0130單位時,繼電器啟動(可外接水泵),紅燈亮。
單片機源程序如下:
- //程序頭函數
- #include <reg52.h>
- //宏定義
- #define uint unsigned int
- #define uchar unsigned char
- #define Data_ADC0809 P1
-
- //管腳聲明
- sbit Feng = P3^0;
- //ADC0809
- sbit ST=P3^3;
- sbit EOC=P3^4;
- sbit OE=P3^2;
- //按鍵
- sbit Key1=P3^5;
- sbit Key2=P3^6;
- sbit Key3=P3^7;
- //顯示數組 0-9+F
- uchar Data_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
- sbit Wei1 = P2^7;
- sbit Wei2 = P2^6;
- sbit Wei3 = P2^5;
- sbit Wei4 = P2^4;
- //函數聲明
- extern uchar ADC0809();
- void Display(uchar X,uchar Data);
- void delay(uint t);
- //酒精含量變量
- uchar temp=0;
- //蜂鳴器變量
- uchar FF=125;
- //顯示模式
- uchar Mode=0;
- uchar p;
- void main()
- {
- while(1)
- {
- //正常模式
- if(Mode==0)
- {
- //讀取AD值
- temp=ADC0809();
- for(p=0;p<30;p++)
- Display(0,temp);
- //判斷是否報警
- if(temp>FF)
- {
- Feng=0;
- }
- else
- {
- Feng=1;
- }
- }
- //調整模式
- else
- {
- Display(1,FF);
- }
- //功能鍵
- if(Key3==0)
- {
- Feng=0;
- delay(100);
- while(Key3==0)
- {
- if(Mode==0)
- Display(0,temp);
- else
- Display(1,FF);
- }
- if(Mode==0)
- Mode=1;
- else
- Mode=0;
- Feng=1;
- }
- //增加
- if(Key2==0&&Mode==1)
- {
- Feng=0;
- delay(100);
- while(Key2==0)
- {
- Display(1,FF);
- }
- FF++;
- if(FF==251)
- FF=250;
- Feng=1;
- }
- //減少
- if(Key1==0&&Mode==1)
- {
- Feng=0;
- delay(100);
- while(Key1==0)
- {
- Display(1,FF);
- }
- FF--;
- if(FF==0xff)
- FF=0;
- Feng=1;
- }
- }
- }
- //ADC0809讀取信息
- uchar ADC0809()
- {
- uchar temp_=0x00;
- //初始化高阻太
- OE=0;
- //轉化初始化
- ST=0;
- //開始轉換
- ST=1;
- ST=0;
- //外部中斷等待AD轉換結束
- while(EOC==0)
- //讀取轉換的AD值
- OE=1;
- temp_=Data_ADC0809;
- OE=0;
- return temp_;
- }
- //延時
- void delay(uint t)
- {
- uint i,j;
- for(i=0;i<t;i++)
- for(j=0;j<10;j++);
- }
- //顯示 X表示狀態 Data表示數據
- void Display(uchar X,uchar Data)
- {
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- P0=0xff;
- //正常模式
- if(X==0)
- {
- P0=~Data_[11];
- }
- //非正常
- else
- {
- P0=~Data_[10];
- }
- Wei1=0;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- delay(10);
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- P0=~Data_[Data/100];
- Wei1=1;
- Wei2=0;
- Wei3=1;
- Wei4=1;
- delay(10);
- Wei1=1;
- Wei2=1;
- Wei3=1;
- Wei4=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于單片機自動澆花系統.rar
(7.77 MB, 下載次數: 530)
2017-11-15 04:13 上傳
點擊文件名下載附件
|