項(xiàng)目是在相應(yīng)環(huán)境中檢測土壤濕度,以及檢測空氣溫度。 軟件環(huán)境:Keil C51軟件 硬件環(huán)境:KST 51開發(fā)( 自帶 溫度、顯示器模塊) 使用模塊: 土壤濕度傳感器 PCF8591 AD轉(zhuǎn)換模塊 DS1302時(shí)鐘模塊
土壤濕度傳感器1.傳感器適用于土壤的濕度檢測 2.比較器采用LM393芯片,工作性能穩(wěn)定 3.工作電壓3.3V-5V 4.模塊中藍(lán)色的電位器是用于土壤濕度的閥值調(diào)節(jié),順時(shí)針調(diào)節(jié),控制的濕度會(huì)越大,逆時(shí)針越小; 5.數(shù)字量輸出D0可以與單片機(jī)直接相連,通過單片機(jī)來檢測高低電平,由此來檢測土壤濕度; 6.小板模擬量輸出AO可以和AD模塊相連,通過AD轉(zhuǎn)換,可以獲得土壤濕度更精確的數(shù)值; PCF8591 AD轉(zhuǎn)樣模塊PCF8591 是具有I2C 總線接口的8 位A/D 及D/A 轉(zhuǎn)換器。有4 路A/D 轉(zhuǎn)換輸入,1 路D/A 模擬輸出。這就是說,它既可以作A/D 轉(zhuǎn)換也可以作D/A 轉(zhuǎn)換。A/D 轉(zhuǎn)換為逐次比較型。電源電壓典型值為5V。
AIN0~AIN3:模擬信號輸入端。
A0~A3:引腳地址端。
VSS:電源負(fù)極。
SDA、SCL:I2C 總線的數(shù)據(jù)線、時(shí)鐘線。
OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端。
EXT:內(nèi)部、外部時(shí)鐘選擇線,使用內(nèi)部時(shí)鐘時(shí)EXT 接地。
AGND:模擬信號地。
VREF:基準(zhǔn)電源端。
AOUT:D/A 轉(zhuǎn)換輸出端。
VDD:電源端。(2.5~6V)
本模塊左邊和右邊分別外擴(kuò)2路排針接口,分別說明如下: 左邊 AOUT 芯片DA輸出接口 AINO芯片模擬輸入接口0 我在使用的時(shí)候接的時(shí)A0,接的是光敏傳感器的AO口; AIN1芯片模擬輸入接口1 AIN2芯片模擬輸入接口2 AIN3芯片模擬輸入接口3 右邊 SCL IIC時(shí)鐘接口 接KST 51開發(fā)板的SCL 口 SDA IIC數(shù)字接口 接KST 51開發(fā)板的SDA口 GND 模塊地 外接地 VCC 電源接口 外接3.3v-5v 我用的是3.3
我用的是pcf8591模塊。包含了熱敏和光敏電阻。 模塊共有3個(gè)紅色短路帽,分別作用如下: P4 接上P4短路帽,選擇熱敏電阻接入電路
P5 接上P5短路帽,選擇光敏電阻接入電路
P6 接上P6短路帽,選擇0-5V可調(diào)電壓接入電路
土壤濕度傳感器主程序:
unsigned int val; unsignedchar str[10]; EA= 1; ConfigTimer0(10); lcd1602Init(); while(1) { if(flag300ms) { flag300ms= 0; GetADCValue(3);//獲取土壤濕度 // str = *INT8UtostrHEX(val); lcd1602Display(0,1,INT8UtostrHEX(val));//顯示到液晶上 } } PCF8591 AD轉(zhuǎn)樣模塊主程序:
/*讀取當(dāng)前的ADC轉(zhuǎn)換值,、chn-ADC通道號0-3*/ unsigned char GetADCValue(unsigned charchn) { unsignedchar val; Start_I2c(); if(!writeI2C(0x91<<1))//尋址PCF8591,如未答應(yīng),則停止操作并返回0 { Stop_I2c(); return0; } writeI2C(0x40|chn);//寫入控制字節(jié),選擇轉(zhuǎn)換通道 Start_I2c(); writeI2C((0x48<<1)|0x01);//尋址PCF8591,指定后續(xù)為讀操作 NoAckI2c();//先空讀一個(gè)字節(jié),提供采樣轉(zhuǎn)換時(shí)間 *str= ReadADC();//讀取剛剛轉(zhuǎn)換完的值 Stop_I2c(); returnval;
|