项目是在相应环境中检测土壤湿度,以及检测空气温度。 软件环境:Keil C51软件 硬件环境:KST 51开发( 自带 温度、显示器模块) 使用模块: 土壤湿度传感器 PCF8591 AD转换模块 DS1302时钟模块
土壤湿度传感器1.传感器适用于土壤的湿度检测 2.比较器采用LM393芯片,工作性能稳定 3.工作电压3.3V-5V 4.模块中蓝色的电位器是用于土壤湿度的阀值调节,顺时针调节,控制的湿度会越大,逆时针越小; 5.数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度; 6.小板模拟量输出AO可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值; PCF8591 AD转样模块PCF8591 是具有I2C 总线接口的8 位A/D 及D/A 转换器。有4 路A/D 转换输入,1 路D/A 模拟输出。这就是说,它既可以作A/D 转换也可以作D/A 转换。A/D 转换为逐次比较型。电源电压典型值为5V。
AIN0~AIN3:模拟信号输入端。
A0~A3:引脚地址端。
VSS:电源负极。
SDA、SCL:I2C 总线的数据线、时钟线。
OSC:外部时钟输入端,内部时钟输出端。
EXT:内部、外部时钟选择线,使用内部时钟时EXT 接地。
AGND:模拟信号地。
VREF:基准电源端。
AOUT:D/A 转换输出端。
VDD:电源端。(2.5~6V)
本模块左边和右边分别外扩2路排针接口,分别说明如下: 左边 AOUT 芯片DA输出接口 AINO芯片模拟输入接口0 我在使用的时候接的时A0,接的是光敏传感器的AO口; AIN1芯片模拟输入接口1 AIN2芯片模拟输入接口2 AIN3芯片模拟输入接口3 右边 SCL IIC时钟接口 接KST 51开发板的SCL 口 SDA IIC数字接口 接KST 51开发板的SDA口 GND 模块地 外接地 VCC 电源接口 外接3.3v-5v 我用的是3.3
我用的是pcf8591模块。包含了热敏和光敏电阻。 模块共有3个红色短路帽,分别作用如下: P4 接上P4短路帽,选择热敏电阻接入电路
P5 接上P5短路帽,选择光敏电阻接入电路
P6 接上P6短路帽,选择0-5V可调电压接入电路
土壤湿度传感器主程序:
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转样模块主程序:
/*读取当前的ADC转换值,、chn-ADC通道号0-3*/ unsigned char GetADCValue(unsigned charchn) { unsignedchar val; Start_I2c(); if(!writeI2C(0x91<<1))//寻址PCF8591,如未答应,则停止操作并返回0 { Stop_I2c(); return0; } writeI2C(0x40|chn);//写入控制字节,选择转换通道 Start_I2c(); writeI2C((0x48<<1)|0x01);//寻址PCF8591,指定后续为读操作 NoAckI2c();//先空读一个字节,提供采样转换时间 *str= ReadADC();//读取刚刚转换完的值 Stop_I2c(); returnval;
|