找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4012|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机实钟、土壤湿度检测、空气温度检测程序

[复制链接]
跳转到指定楼层
楼主
ID:457999 发表于 2019-12-26 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目是在相应环境中检测土壤湿度,以及检测空气温度。
软件环境: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
  AIN0AIN3:模拟信号输入端。
  A0A3:引脚地址端。
  VSS:电源负极。
  SDASCLI2C 总线的数据线、时钟线。
  OSC:外部时钟输入端,内部时钟输出端。
  EXT:内部、外部时钟选择线,使用内部时钟时EXT 接地。
  AGND:模拟信号地。
  VREF:基准电源端。
  AOUTD/A 转换输出端。
  VDD:电源端。(2.56V

本模块左边和右边分别外扩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;        


项目源码.rar

62.19 KB, 下载次数: 51, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:690490 发表于 2020-2-9 14:41 | 只看该作者
MAIN.C(102): warning C206: 'GetADCValue': missing function-prototype
MAIN.C(102): error C267: 'GetADCValue': requires ANSI-style prototype
Target not created
编译不了啊,兄弟你解决了吗
回复

使用道具 举报

板凳
ID:619412 发表于 2020-7-24 22:12 | 只看该作者
我需要一个能用的程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表