3.7 系统总体硬件设计
SW1开关控制智能浇花器的两种浇花方式:一是定时定量浇花,二是利用湿度传感器检测花卉(也可以用于蔬菜等)的湿度。DS1302时间模块为单片机提供实时时钟,湿度传感器SHT11将采集的湿度传送到单片机芯片,LCD屏的第一行显示日期和湿度,第二行显示实时时间和定时时间,继电器控制电磁阀,按键模块设定定时时间。系统硬件电路图如图3.13所示。
图3.13 系统整体硬件电路图
4 软件设计
4.1 软件介绍
在完成硬件电路的设计和组装后,就需要进行软件的设计来完成设计所要求的各项功能。设计中的软件的主要是对AT89S52单片机进行编程。对于AT89S52单片机程序的设计使用Keil 4开发软件,运用C语言进行编写。在整个设计中,有两个系统需要进行软件的设计,分别为定时定量浇花和按湿度浇花控制系统。
4.2 系统总体软件设计方案
图4.1系统软件设计流程图
主程序先对系统进行初始化,初始化LCD,SHT11,DS1302等。然后进入主循环,先读取湿度和时间并显示在液晶屏上,然后判断浇花方式,根据系统发出的信号进入相应的浇花系统,浇花完成后再回到主循环进行再次的判断。
4.3 按湿度浇花控制系统
按湿度浇花需要测量湿度,再和设定好的湿度对比判断是否需要浇花。系统的流程框图如图4.2所示。
图4.2按湿度浇花控制系统
4.3.1 SHT11的湿度数据的采集
1)命令代码
微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表
4.1所示。
表4.1 SHT11控制命令代码
命令代码 含 义
00011 测量温度
00101 测量湿度
00111 读内部状态寄存器
00110 写内部状态寄存器
11110 复位命令,使内部状态寄存器恢复默认值。下一次命令前至少等11ms
其他 保留
2)启动传输
单片机通过二线串行数字接口与SHT11进行通信的。通信协议与通用的I2C总线协议是不兼容的,因此在程序开始,微处理器需要用一组“启动传输”时序表示数据传输的启动,如图4.3所示。
图4.3 数据传输启动时序
当SCK时钟为高电平时,DATA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;在SCK时钟为高电平时,DATA再次翻转为高电平。
3)相对湿度值读取
SHT11可以通过DATA数据总线直接输出数字量湿度值给单片机,该湿度值称为“相对湿度”,读湿度程序如下:
convert_SHT(SHT_dat *s,uchar mode)
{uchar i,ack=0; uchar valueM,valueL,checksum; float com;
Do {reset_SHT();
switch(mode){ case TEMP: ack=write_byte(0x03);break;
case HUMI: ack=write_byte(0x05);break;
default: break;}
}while(ack==1);
for(i=0;i<65535;i++)//等待测量结束
{ if(DQ==0)break;} //若长时间数据线 DQ 没拉低,则说明测量有错误
valueM=read_byte(0); //数据的高字节
valueL=read_byte(0); //数据的低字节
checksum=read_byte(1); //CRC 校验码
com=(float)valueM*256+(float)valueL;
if(mode==TEMP)
{s->temperature=com;
s->crc_temp=(float)checksum;}
if(mode==HUMI)
{s->humidity=com;
s->crc_humi=(float)checksum;}
}
4)湿度线性补偿和温度补偿
单片机从湿度传感器读出的相对湿度值有一定误差,需要进行线性补偿和温度补偿后才能得到较为准确的湿度值。由于相对湿度数字输出特性呈一定的非线性,因此为了补偿湿度传感器的非线性,可按下式修正湿度值[8]: AT89S52单片机的家庭智能浇花器设计+源程序(7):http://www.751com.cn/zidonghua/lunwen_2625.html