历史上的今天
今天是:2025年02月09日(星期日)
2020年02月09日 | 基于51单片机实钟、土壤湿度检测、空气温度检测程序
2020-02-09 来源:51hei
项目是在相应环境中检测土壤湿度,以及检测空气温度。
软件环境: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;
下一篇:51单片机PWM温控风扇源代码
史海拾趣
|
软误差是半导体器件中无法有意再生的“干扰”(即数据丢失)。它是由那些不受设计师控制的外部因素所引起的,包括α粒子、宇宙射线和热中子。许多系统能够容忍一定程度的软误差。例如,如果为音频、视频或静止成像系统设计一个预压缩捕获缓冲 ...… 查看全部问答> |
|
关于写wince6的spi应用,如何配置deviceiocontrol来初始呢?急求!!! 小弟最近在写wince6一些设备的测试应用, createfile打开spi设备后,该如何初始化spi的基本配置呢? 用deviceiocontrol吗?但是不知道设置哪些参数来初始化 请各位帮帮忙!… 查看全部问答> |
|
各位嵌入式爱好者网友: 我先说一下,我今年27了,一直在做vb的开发,老感觉待不下去了,想去做一些事情,例如创业。我一直是搞技术的,希望通过技术开发一款产品,这点我可以找合作伙伴一起做。 后来就找到了嵌入式开发这里。我要 ...… 查看全部问答> |
|
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace soundpdatest { public partial class Form ...… 查看全部问答> |
|
9月初的(成都)电子展的规模据说近五百家,我们的两个主要的竞争对手都第一次参加了,我们老大想参加,但实际上我们目前在西南的客户很少。不太了解那边的状况(我们公司提供电子生产制造中用的一种高精度测试设备,目前的主要客户在沿海地区)。 ...… 查看全部问答> |
|
1 最高波特率是多少?手册上说:1.5.2 Maximum baud rateBHigh is the highest baud rate for which the deviation still does not exceed the&n ...… 查看全部问答> |
|
2440启动代码中有段代码设置大小端如下: ASSERT :DEF:ENDIAN_CHANGE [ ENDIAN_CHANGE ASSERT :DEF:ENTRY_BUS_WIDTH [ ENTRY_BUS_WIDTH=32 b ChangeBigEndian ;DCD 0xea000007 ] [ ENTRY_BUS_WIDTH=16 andeq r14,r7,r0,lsl #20 ;DCD 0x0007 ...… 查看全部问答> |
|
最开始的时候是手册看的没感觉,就去看代码(发现更没感觉),主要是寄存器定义不清楚,后来对着User Guide看代码就轻松很多。 后来是要用到某个模块,就图简单,从范例里面把设置代码抄过来。… 查看全部问答> |




