一.硬件方案
工作原理是濕度傳感器將采集到的數據直接傳送到ADC0832的IN端作為輸入的模擬信號。選用濕度傳感器和AD轉換,電路內部包含有濕度采集、AD轉換、單片機譯碼顯示等功能。單片機需要采集數據時,發出指令啟動A/D轉換器工作,ADC0832根據送來的地址信號選通IN1通道,然后對輸入的模擬信號進行轉換,轉換結束時,EOC輸出高電平,通知單片機可以讀取轉換結果,單片機通過調用中斷程序,讀取轉換后的數據。最后,單片機把采集到的濕度數據經過軟件程序處理后送到LCD1602進行顯示。電路主要由STC89C52單片機,ADC0832,LCD1602液晶,土壤濕度傳感器,溫度傳感器,抽水電機,按鍵,蜂鳴器設計;
二.設計功能
(1)液晶第一行顯示 實際的濕度,液晶第二行顯示 濕度上限值 濕度下限值。
(2)按鍵說明:從左邊第一個起,減鍵、加鍵、設置鍵。。
(3)可以設置濕度和溫度的上下限報警范圍,并具有掉電保存功能,保存在STC單片機內部,上電無需重新設置。
(4)當濕度低于下限值時,打開水泵進行抽水自動灌溉同時聲光報警,當濕度高于上限值時,自動關閉水泵停止灌溉。
(5)當溫度高于上限值時,打開水泵進行抽水自動灌溉同時聲光報警,當溫度低于下限值時,自動關閉水泵停止灌溉。
(6)具有手動模式,按減鍵手動打開抽水電機,可以按加鍵手動關閉抽水電機。
三.設計原理圖
Protues仿真圖如下:
四.軟件設計
主程序源碼
/***************主函數*****************/
void main()
{init_1602(); //1602液晶初始化time_init(); //初始化定時器 while(1){key(); //獨立按鍵程序if(key_can < 10){key_with(); //按鍵按下要執行的程序}if(flag_300ms == 1){ flag_300ms = 0; clock_h_l(); //報警函數 if(beep == 1){shidu = Adc0832(0); //讀出濕度shidu = 99 - shidu * 99 / 255;}if(menu_1 == 0){write_sfm2(1,9,shidu); //顯示濕度等級}} delay_1ms(1);}
}
/*************定時器0中斷服務程序***************/
void time0_int() interrupt 1
{ static uchar value;TH0 = 0x3c;TL0 = 0xb0; // 50msvalue ++; if(value % 6 == 0){flag_300ms = 1; //300msvalue = 0;}
}
資料鏈接:https://pan.baidu.com/s/1ORRvAoIsLH30jrH4GSM8Pg?pwd=coxh