社会在不断进步,上班、出差、旅游也成了人们生活的一部分,这就会导致人们没有时间去看护这些花草。对此问题,我们不禁会想到:如果有人能帮我们浇灌那该有多好!对于这样的想法,我们能联想的就是“自动浇花系统”。
功能描述
1、采用51单片机作为控制单元;
2、采用LCD1602液晶进行数据显示;
3、采用土壤湿度传感器+ADC0832检测湿度,当湿度低于设置湿度下限值时,自动控制继电器开启水泵进行灌溉,同时蜂鸣器声光报警;当湿度高于设置湿度上限值时,自动关闭水泵停止灌溉。
4、采用按键设置湿度的上下限报警范围,并具有掉电保存功能,保存在STC单片机内部EEPROM,上电无需重新设置。
按键说明
1、K1(设置键):进入“湿度上下限阈值”设置菜单;切换设置参数位;
2、K2(加键):在设置菜单下,对参数设置值进行“+1”操作;
3、K3(减键):在设置菜单下,对参数设置值进行“-1”操作。
整体方案
本次设计采用的是STC89C52单片机,利用单片机编程灵活的特性实现了设计要达到的喷灌功能。电源、时钟搭建单片机最小系统,按键用于设定喷灌的湿度值,外接LCD1602显示器用于显示设置湿度及实时湿度。
电路设计
采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
仿真设计
采用Proteus7.5作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
主程序设计
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);
}
}
源文件获取
微信扫码关注公众号【电子开发圈】,首页发送 “浇花” 获取;