MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay CLR C MOV A,40H SUBB A,#02H JNC MM MOV A,#0FEH MOV P0,A LCALL DELAY LCALL DELAY MM: MOV A,40H CLR C SUBB A,#03H JC NN MOV A,#0FDH MOV P0,A LCALL DELAY LCALL DELAY NN: MOV A,39H MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay MOV A,#0AH MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay MOV A,38H MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay LCALL Delay MOV A,37H MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H
//字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //进位位清零 //十位数送累加器 //十位的数与 2 比较(判断是否小于 20) //进位位为 0 时跳(大于 20 时跳到 MM,小于 20 时顺序执行) //第一盏灯亮 //第一盏灯已亮(浇水) //调用延时程序 //调用延时程序 //十位的数送累加器 //进位位清零 //十位的数与 3 比较(判断是否大于 30) //进位位为 1 时跳(小于 30 时跳到 NN,大于 30 时顺序执行) //第二盏灯亮 //第二盏灯已亮(湿度已超量程、报警) //调用延时程序 //调用延时程序 //个位的数送累加器 //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //显示小数点 //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //十分位的数送累加器 //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //调用延时程序 //百分位的数送累加器 //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 26
LCALL Delay LCALL Delay MOV A,#0BH MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay LCALL Delay MOV A,#0DH MOVC A,@A+DPTR MOV P7,A MOV P6,#05H MOV P6,#04H LCALL Delay LCALL Delay RET SYSCLK_Init: MOV OSCICN,#05H RET PORT_Init: CLR A MOV XBR0,A MOV P74OUT,#0F0H RET LCD_Init: LCALL Delay MOV P7,#038H MOV P6,#01H MOV P6,#0H LCALL Delay MOV P7 ,#0EH MOV P6,#01H MOV P6,#0H LCALL Delay MOV P7,#06H MOV P6,01H MOV P6,#0H LCALL Delay MOV P7,#01H MOV P6,#01H MOV P6,#0H LCALL Delay RET Delay: MOV R7,#06H Delay1: MOV R6,#08H Delay0: MOV R5,#00H
//调用延时程序 //调用延时程序 //显示空格 //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //调用延时程序 //显示“S” //查表,取 ASCII 码字符 //字符送数据口 P7 //写数据操作 //结束写操作 //调用延时程序 //调用延时程序 //系统时钟初始化为片内的 4MHz 时钟 //清零累加器 //没有选择数字外设 //P4~P7 口设为推拉方式 //调用延时程序 //功能设置:两行显示,5×7 点阵 //写命令 //结束写命令 //调用延时程序 //开显示,开光标,字符不闪烁 //写命令 //结束写命令 //调用延时程序 //I/D=1,AC 自动增 1;S=0,整体显示不移动 //写命令 //结束写命令 //调用延时程序 //清除 DDRAM,置 AC=0 //写命令 //结束写命令 //调用延时程序 27
DJNZ R5,$ DJNZ R6,Delay0 DJNZ R7,Delay1 RET //延时程序 NCDdata: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,2EH,20H,63H,53H END //ASCII 码表
基于单片机的智能浇花系统设计与实现
(1.长春职业技术学院,长春130033;2.中科院长春光学精密机械与物理研究所,长春130033)
摘1土壤湿度传感器要:设计了一种智能湿度感应浇花系统。系统以单片机AT89S52为控制芯片,利用SLHT5-
来检测土壤的相对湿度,再通过单片机进行信息处理,采用模糊控制方法,输出控制信号,控制继电器的动作,从而
控制水泵电源的通断,完成按需按量自动浇花的工作,启动浇花之前先有蜂鸣器报警。 关键词:智能浇花;土壤湿度传感器;单片机;水泵
中图分类号:TP368.2文献标志码:A文章编号:1009-3907(2012)06-0650-02
0引言
随着生活水平的提高,许多城乡居民为了美化环境,净化空气,喜欢在家中阳台上种植一些花草。植物
需经常浇灌。而人们出差或有事不在家时,植物的供水就会中断,植物面临干枯。有些植物是离不开水的,
对湿度的要求很高,人为的过度浇水,植物的根茎容易腐烂,从而影响到植物的正常生长。
国内外均有自动浇花系统的应用,大多数自动浇花系统是利用虹吸原理,即利用渗透的方式浇花,这种方式浇花过程是连续的、不间断的,采用这种方式只能保证花不会干旱而死,不是花需要浇水时才进行浇灌。还有一些自动浇水系统,可以设定何时进行浇灌及浇灌时间,与上一种方式相同,也不是花需要浇水时才进行浇灌。另外还有一些自动浇水系统,是采用单片机控制,利用湿度传感器采集湿度信息,需要浇水时自动浇灌,但是需要用在外
部有水龙头的情况下,而家庭花草种植一般都放在阳台上,阳台上一般均没有水龙头,使用起来非常不方便。基于单片机的智能浇花系统可以在阳台上使用,能够按需自动浇花
。
1基于单片机的智能浇花系统组成
LCD液晶显示电路、该系统主要由土壤湿度检测电路、键盘、报警电 [1]路、水泵控制电路等组成。具体结构如图1所示。通过土壤湿度传感 器测量出土壤湿度信号,单片机采集土壤湿度信号并进行分析和处理,输 出控制信号,控制水泵工作与否,从而达到按需浇花的目的。 2系统工作原理
由于不同的花卉有不同的需水特性,浇花时应适时适量,按需浇花。
为此,系统采用模糊控制的方式达到精确浇花的目的。一方面,单片机采集土壤湿度信号,并通过计算判断
[2]是否应该浇花;另一方面,单片机采用查表的方法来实现浇水量的模糊控制。在软件设计时,根据不同花
卉的需水量,将其土壤湿度值允许区间存入表格中,即模糊控制响应表,这些数据均是人们长期积累的经验值,并将表格事先置入ROM存储区的某一位置中供查表使用。例如:对君子兰进行自动浇水,单片机将采集到的湿度信号与表格中的君子兰最小湿度值进行比较,当采集到的湿度值小于表格中的最小湿度值时,开始浇花;当采集到的湿度值大于表格中君子兰的最大湿度值时,停止浇花,从而控制浇水的时机及浇水量的多少。图1智能浇花系统组成框图
3
3.1系统硬件设计土壤湿度检测电路
本设计采用土壤温湿度传感器[3]SLHT5-1。该传感器采用全量程标定,两线数字输出,可直接与单片机
03-27收稿日期:2012-
),作者简介:赵丽(1979-女,吉林松原人,讲师,硕士,主要从事单片机及其自动控制系统应用、传感器技术应用、机器人技术等
方面的教学及科研工作。

