功能:
1、通過顯示屏顯示花盆中土壤的溫度、濕度,花盆外光照強(qiáng)度;
2、通過按鍵切換顯示屏的界面,設(shè)置土壤最小溫度值、最小濕度值,花盆外光照強(qiáng)度值,輸液倒計(jì)時(shí),松土倒計(jì)時(shí);
3、通過土壤濕度傳感器檢測(cè)土壤濕度,通過DS18B20檢測(cè)土壤溫度;
4、通過繼電器控制加熱片,水泵,輸液,補(bǔ)光燈;
5、通過步進(jìn)電機(jī)來實(shí)現(xiàn)松土;
/**********************************
包含頭文件
**********************************/
#include "adc.h"
/**********************************
函數(shù)定義
**********************************/
/****
*******獲取adc值函數(shù)
*******參量定義:CH:通道數(shù) 0:通道0 1:通道1
*******返回值:adc值
*****/
uint Adc0832_Get_Value(uchar CH)
{
uint dat = 0x00;
uchar i,test,adval;
adval = 0x00;
test = 0x00;
//初始化
ADC_CLK = 0;
ADC_DATI = 1;
_nop_(); _nop_();
ADC_CS = 0;
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
//通道選擇
if(CH == 0x00)
{
ADC_CLK = 0;
ADC_DATI = 1; //通道0的第一位
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
ADC_DATI = 0; //通道0的第二位
_nop_(); _nop_();
ADC_CLK = 1;
_nop_();
}
else
{
ADC_CLK = 0;
ADC_DATI = 1; //通道1的第一位
_nop_(); _nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
ADC_DATI = 1; //通道1的第二位
_nop_();
ADC_CLK = 1;
_nop_();
}
ADC_CLK = 0; _nop_();
ADC_DATI = 1;
for( i = 0;i < 8;i++ ) //讀取前8位的值
{
_nop_();
adval <<= 1;
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
_nop_();
if (ADC_DATO)
adval |= 0x01;
else
adval |= 0x00;
}
for (i = 0; i < 8; i++) //讀取后8位的值
{
test >>= 1;
if (ADC_DATO)
test |= 0x80;
else
test |= 0x00;
_nop_();
ADC_CLK = 1;
_nop_(); _nop_();
ADC_CLK = 0;
_nop_();
}
//比較前8位與后8位的值,如果不相同舍去。若一直出現(xiàn)顯示為零,請(qǐng)將該行去掉
if (adval == test)
dat = test;
_nop_(); _nop_();
ADC_CS = 1; //釋放ADC0832
ADC_DATO = 1;
ADC_CLK = 1;
return dat;
}
閱讀全文