基于51单片机的盆栽自动浇花系统

发布者:温柔心绪最新更新时间:2021-10-11 来源: eefocus关键字:51单片机  ADC0832 手机看文章 扫描二维码
随时随地手机看文章

一.硬件方案

工作原理是由STC89C52单片机和ADC0832组成系统的核心部分,湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换,电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时,发出指令启动A/D转换器工作,ADC0832根据送来的地址信号选通IN1通道,然后对输入的模拟信号进行转换,转换结束时,EOC输出高电平,通知单片机可以读取转换结果,单片机通过调用中断程序,读取转换后的数据。最后,单片机把采集到的湿度数据经过软件程序处理后送到LCD1602进行显示。


主要由STC89C52单片机+ADC0832+LCD1602液晶+土壤湿度传感器+防水温度传感器+抽水电机+ 按键+蜂鸣器设计;如图:

二.设计功能

(1)液晶第一行显示 实际的湿度,液晶第二行显示 湿度上限值 湿度下限值。

(2)按键说明:从左边第一个起,减键、加键、设置键。。

(3)可以设置湿度和温度的上下限报警范围,并具有掉电保存功能,保存在STC单片机内部,上电无需重新设置。

(4)当湿度低于下限值时,打开水泵进行抽水自动灌溉同时声光报警,当湿度高于上限值时,自动关闭水泵停止灌溉。

(5)当温度高于上限值时,打开水泵进行抽水自动灌溉同时声光报警,当温度低于下限值时,自动关闭水泵停止灌溉。

(6)具有手动模式,按减键手动打开抽水电机,可以按加键手动关闭抽水电机。


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计

(1)程序流程图

(2)主程序源码


/***************主函数*****************/

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;

}

}

关键字:51单片机  ADC0832 引用地址:基于51单片机的盆栽自动浇花系统

上一篇:基于51单片机射频RFID卡考勤人数计数系统设计
下一篇:基于51单片机的智能垃圾桶设计

推荐阅读最新更新时间:2024-11-16 20:18

使用51单片机点亮我们的点阵灯
通过前面我们都知道点亮我们的不管是点阵,数码管,还是LED灯,不仅要熟悉我们的代码还要会看我们的原理图和真值表,所以我们如果真的要写代码倒是其次的,首先我们得学会看我们的原理图和真值表,但是认识那个我们可以在网上找教程的,所以啊我这里就不去重诉别人的话了。那么我们今天要讨论什么问题勒!?我们今天讲一下点阵吧,点阵说实话对于单片机来说虽然并不是最重要的,但是点阵却是我们单片机中花样最多的之一。可能说到这么有人会说了,学了单片机我们有什么用呢,那么我们可以留意一下我们身边的一些物品,比如我们常在街上可以看见一些商店利用那些LED灯做出的花样,什么闪烁啊,各种图形变化啊,其实和我们的点阵原理都很像,不过他们那些控制的位更多,而我们51
[单片机]
高效型振荡器为8051单片机实现高速串行通信的时钟配置
引言 当今许多实时监测系统与通信设备领域中,经常需要进行远距离的数据传送。为此,如何实现高速、可靠及低成本的数据传输是作为前级机或发送级的8051单片机迫切需要解决的新技术。据此,我们采用由Dallas Semiconductor公司产的芯片DSl075--Econ oscillator(高效型振荡器)为8051系列的DS87C520高速型单片机提供时钟的配置设计方案,实现单片机串行通信的高速波特率。 Econ oscillator(高效型振荡器)含有一个内部振荡器,用以产生一个基本频率;还内置了一个分频链,可以将基本频率降低到需要的速度。Econ oscillator 的每种型号提供四种基本频率(60MHz、66.67M
[单片机]
基于51单片机的RFID门禁系统-LCD12864显示
一.硬件方案 本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心,结合主控模块STC89C52设计系统的外围硬件电路,实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发,完成与IC卡之间的通信,实现数据交换功能。 主要由51单片机+最小系统+LCD12864液晶显示模块+RFID无线模块+5V转3.3V稳压电路+蜂鸣器模块+AT24C02存储电路+继电器控制电路+按键模块;如图: 二.设计功能 (1)通过按键输入密码,根据密码的正确与否来进行相应的操作; (2)可使用管理员密码可以自行设定和修改密码;修改的密码自动保存至存储芯片,支持掉电保存; (3)IC
[单片机]
基于<font color='red'>51单片机</font>的RFID门禁<font color='red'>系统</font>-LCD12864显示
8051单片机的机器周期解析
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。参见后面的时序图。
[单片机]
80<font color='red'>51单片机</font>的机器周期解析
51单片机(AT89C52)控制双路继电器
#include reg52.h #define uchar unsigned char #define uint unsigned int #define DELAY 500 sbit relay=P2^0; void delay(uint z) //1ms { uint x,y; for(x=z;x 0;x--) for(y=111;y 0;y--); } void main() { while(1) { relay=1; delay(DELAY); relay=0; delay(DELAY); } }
[单片机]
<font color='red'>51单片机</font>(AT89C52)控制双路继电器
基于51单片机定时器0计时计数器1计数的霍尔传感器精确测速
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit RW=P2^6;//定义LCD1602液晶显示器读写端 sbit RS=P2^5;//定义LCD1602液晶显示器数据命令端 sbit EN=P2^7;//定义LCD1602液晶显示器使能端 sbit qiting=P3^0;//定义启停按键 uchar qitingnum;//定义启停次数变量 uint count;//定时器0定时中断次数变量 unsigned long speed=0;//定义速度变量 uchar co
[单片机]
基于<font color='red'>51单片机</font>定时器0计时计数器1计数的霍尔传感器精确测速
如何驱动51单片机串口(uart通信)
使用51单片机上uart通信的驱动程序,软件特性可以在proteus上仿真,使用51单片机定时器T1溢出率做uart波特率时基,采用12MHz晶振,uart波特率采用4800。下面直接上代码: uart驱动接口 uart模块向外提供的接口,主要是用于初始化uart和发送数据的接口。 void uart_init(void); // 初始化串口 void uart_deinit(void); // 串口去初始化 void uart_send_data(u8 dat); // 串口发送 void uart_send_num(s32 num); // 串口发送数字 void uart_send_str(string str);
[单片机]
基于51单片机的ds18B20温度程序
在学习板上正常运行,目前只能简单的检测温度。 温度变化速度有点慢,需要再调试。数码管显示还有点鬼影,暂时没想出来怎么去消鬼影。 没有添加温度上下限报警程序,没有添加按键可调温度程序,暂时不能显示小数部分。 以后还得继续努力把功能添加进去。 测得室温为31度 #include reg51.h /************共阳LED段码表*****************/ unsigned char code tab ={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6}; /************端口定义*************/ sbit
[单片机]
基于<font color='red'>51单片机</font>的ds18B20温度程序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved