一.硬件方案
工作原理是湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换,电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时,发出指令启动A/D转换器工作,ADC0832根据送来的地址信号选通IN1通道,然后对输入的模拟信号进行转换,转换结束时,EOC输出高电平,通知单片机可以读取转换结果,单片机通过调用中断程序,读取转换后的数据。最后,单片机把采集到的湿度数据经过软件程序处理后送到LCD1602进行显示。电路主要由STC89C52单片机,ADC0832,LCD1602液晶,土壤湿度传感器,温度传感器,抽水电机,按键,蜂鸣器设计;
二.设计功能
(1)液晶第一行显示 实际的湿度,液晶第二行显示 湿度上限值 湿度下限值。
(2)按键说明:从左边第一个起,减键、加键、设置键。。
(3)可以设置湿度和温度的上下限报警范围,并具有掉电保存功能,保存在STC单片机内部,上电无需重新设置。
(4)当湿度低于下限值时,打开水泵进行抽水自动灌溉同时声光报警,当湿度高于上限值时,自动关闭水泵停止灌溉。
(5)当温度高于上限值时,打开水泵进行抽水自动灌溉同时声光报警,当温度低于下限值时,自动关闭水泵停止灌溉。
(6)具有手动模式,按减键手动打开抽水电机,可以按加键手动关闭抽水电机。
三.设计原理图
Protues仿真图如下:
四.软件设计
主程序源码
/***************主函数*****************/
void main()
{
init_1602(); //1602液晶初始化
time_init(); //初始化定时器
while(1)
{
key(); //独立按键程序
if(key_can < 10)
{
key_with(); //按键按下要执行的程序
}
if(flag_300ms == 1)
{
flag_300ms = 0;
clock_h_l(); //报警函数
if(beep == 1)
{
shidu = Adc0832(0); //读出湿度
shidu = 99 - shidu * 99 / 255;
}
if(menu_1 == 0)
{
write_sfm2(1,9,shidu); //显示湿度等级
}
}
delay_1ms(1);
}
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{
static uchar value;
TH0 = 0x3c;
TL0 = 0xb0; // 50ms
value ++;
if(value % 6 == 0)
{
flag_300ms = 1; //300ms
value = 0;
}
}
资料链接:https://pan.baidu.com/s/1ORRvAoIsLH30jrH4GSM8Pg?pwd=coxh