毕业论文

打赏
当前位置: 毕业论文 > 自动化 >

AT89S52单片机的家庭智能浇花器设计+源程序(8)

时间:2017-02-07 21:08来源:毕业论文
式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3 为线性补偿系数,取值如表4.1所列。 由于温度对湿度的影响十分明显,而实际


 
式中:RHlinear为经过线性补偿后的湿度值,SORH为相对湿度测量值,C1、C2、C3 为线性补偿系数,取值如表4.1所列。
由于温度对湿度的影响十分明显,而实际温度和测试参考温度25℃有所不同,所以对线性补偿后的湿度值进行温度补偿很有必要。补偿公式如下[8]:
 
式中:RHtrue为经过线性补偿和温度补偿后的湿度值,T为测试湿度值时的温度(℃),t1和t2为温度补偿系数,取值如表4.2所示。
表4.1 湿度的线性补偿系数

12位    -4    0.0405    

8位    -4    0.648    
表4.2 湿度的温度补偿系数

12位    0.01    0.00008
8位    0.01    0.00128
补偿程序如下:
void caculation_SHT(SHT_dat *s)
{ const float c1=-4;
const float c2=+0.0405;
const float c3=-0.0000015955;
const float t1=+0.01;
const float t2=+0.00008;  //以上为 12 位湿度修正公示取值
float t=s->temperature;
float rh=s->humidity;
float rh_lin;
float rh_ture;
float t_c;
t_c=t * 0.01 - 40;    //温度的补偿
rh_lin=c3*rh*rh + c2*rh + c1;//相对湿度非线性补偿
rh_ture=( t_c - 25 ) * ( t1 + t2*rh ) + rh_lin; //相对湿度对于温度依赖性补偿
if( rh_ture > 100 ) rh_ture=100;   //相对湿度最大值修正
if( rh_ture < 0.1 ) rh_ture=0.1;   //相对湿度最小值修正
if(t_c<0)t_c=0;
s->temperature=t_c;         //保存温度补偿后的结果
s->humidity=rh_ture;     //保存相对湿度补偿后的结果
}
注:本设计中主要通过湿度来判断是否浇花,因此只需显示湿度即可,在此就不再赘述温度值的测量与相关处理了。
4.3.2湿度判断程序
本系统中设定的湿度值为30.00%RH,只需在主函数中定义赋值即可,判断是否需要浇花的程序也比较简单,通过一个while循环语句即可,部分程序如下:
          while(humicede.humidity<setshi) //湿度低于设定值时浇花
           { watering();
            convert_SHT(&humicede,HUMI);//从SHT11读取湿度值
            convert_SHT(&humicede,TEMP);  //从SHT11读取温度值
           caculation_SHT(&humicede); }  //温度和湿度补偿处理,并计算温度值和相对湿度值                 
4.4定时定量浇花控制系统
定时定量浇花需要先从DS1302读取实时时间,设定定时时间,然后判断是否到浇花时间,如果到了就置P2.3口为高电平,继电器闭合,打开电磁阀,开始浇花。浇花的量由时间控制,本系统通过单片机的定时器控制浇花10分钟,10分钟后电
磁阀关闭,停止浇花。定时定量浇花控制系统框图如图4.4所示。
图4.4 定时定量浇花控制系统
4.4.1 DS1302的软件设计
1)DS1302有关寄存器:
DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式。如表4.3所示。
表4.3 DS1302有关日历、时间的寄存器
    小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。本设计选用24小时制。在24小时模式时,位5是第二个10小时位。 AT89S52单片机的家庭智能浇花器设计+源程序(8):http://www.youerw.com/zidonghua/lunwen_2625.html
------分隔线----------------------------
推荐内容