毕业设计 真实案例分享 基于51单片机的自动浇花器设计

本文介绍了一个创新性的毕业设计项目,通过8051单片机控制自动浇花器,包括土壤湿度检测、配置湿度阈值、定时浇水等功能。详细描述了方案设计、器件选型、硬件与软件设计,以及使用AltiumDesigner和Keil-C51的开发过程。
摘要由CSDN通过智能技术生成

系列文章目录

第一题 基于单片机的超声波测距器设计
第二题 基于51单片机的自动浇花器设计
第三题 基于51单片机的红外遥控自动风扇设计
第四题 基于STM32的条形码识别器



0 前言

🔥 近几年随着人工智能等新技术的不断火热,带动了嵌入式等的传统行业的进一步发展。最近带过的几届同学反馈:以往的毕设题目缺乏创新性和亮点,不能满足学校的答辩要求。为了方便毕业生们顺利、省心、高效的通过毕设,这里分享一些真实优质的毕业设计。

今天给大家分享一个比较经典且有一定创新力的题目

🚩基于单片机的自动浇花器设计

🥇首先对这道题目给出一个量化的评价(每项满分5⭐):

  • 难度:⭐⭐⭐⭐
  • 工作量:⭐⭐⭐⭐
  • 创新性:⭐⭐⭐⭐

1 题目

在这里插入图片描述

我们分析一下题目要求,提取如下功能点:
1、实现土壤湿度检测;
2、湿度上下限的配置;
3、湿度低于下限浇水,高于上限停止浇水;
4、定时浇水。

2 方案设计

2.1 方案框图

分析题目功能点,结合以往的开发经验,初步构思整体方案,形成整体方案框图
在这里插入图片描述

2.2 器件选型

根据市售器件,进一步确定所用器件的具体型号:
主控:8051内核的STC89C52单片机,外部晶振暂定11.0592Mhz;
土壤湿度传感器:YL-69土壤湿度传感器模块,不同湿度下导通电阻不同,通过测量模块输出端口的对地电压即可得到土壤的湿度;
模数转换模块:PCF8591 模块,四路 8 bit 模数转换通道,通过 I2C 协议与主控通信;
实时时钟模块:采用厂商自定协议的时钟芯片,维持一套独立运行的时钟源,主控读取时钟数据,用于定时功能,型号DS1302;
LCD 显示模块:型号 LCD1602,用于显示时间、当前湿度、湿度阈值等一些必要信息,用于人机交互;
控制按键:系统调试、湿度阈值调节、定时功能的控制;
电机驱动模块:采用电磁继电器,区别于其他采用大功率驱动芯片的方案,电磁继电器可承载的电压范围更高,为多种电机提供了适配可能。其接受主控信号,并控制水泵电机的转动;
EEPROM模块:用于保存湿度阈值数据,以免系统掉电后丢失,使用单片机内部自带的EEPROM;
系统电源采用 5V 电源适配器。

2.3 小结-设计要点、难点解析

1、模数转换模块的驱动,模数数据与湿度的关系;
2、湿度度传感器在土壤中的位置与土壤整体湿度的关系,如何避免传感器位置无法采集到真是环境湿度的情况;
3、时钟芯片的驱动与数据读取,定时功能的逻辑设计;
4、EEPROM的使用,数据的保存;
5、操作逻辑设定,具备良好的人机交互体验;
6、系统软件的控制流程设计,具备高效、高鲁棒性的架构。

3 硬件设计

使用 Altium Designer 软件(版本不限)进行硬件原理图和PCB绘制
原理图工程
PCB工程

4 软件设计

使用 Keil-C51建立工程

工程文件树一览
在这里插入图片描述

主程序源码局部展示:

/* 主函数 */
void main()
{
	/* 变量声明 */


	/* 初始化 */
    Sys_State_Flag = SYS_STATE_RUNNING;
	LCDInit();
	init_ds1302();
    Set_RTC();
	Water_Support(DISABLE);

    /* 仅需烧录一次 */
    #if 0
    SectorErase(EEP_ADDR);    //擦除第一扇区
    write_internal_eeprom(EEP_DATA1, ad_thres_low);
    delayms(1000);
    write_internal_eeprom(EEP_DATA2, ad_thres_high);
    delayms(1000);
    #endif 
    
    ad_thres_low = read_internal_eeprom(EEP_DATA1);
    ad_thres_high= read_internal_eeprom(EEP_DATA2);

	/* 循环 */
	while (1)
	{

        /* update time and soil moisture */
        Time_Convert();
        LCD_Time_Fresh();
        Soil_Moisture_Update();
        LCD_Soil_Mois_Fresh();

        key_process();

        /* state machine */
        while (SYS_STATE_RUNNING == Sys_State_Flag)
        {
            /* update time and soil moisture */
            Time_Convert();
            LCD_Time_Fresh();
            Soil_Moisture_Update();
            LCD_Soil_Mois_Fresh();

            key_process();
            LED_Watering = 1;
            if (0 == Frame_Judge())
            {
                Water_Support(DISABLE);
            }
            else if (0 != Frame_Judge())
            {
                if (1 != Soil_Moisture_Judge())
                    Water_Support(ENABLE);
                else
                    Water_Support(DISABLE);
            }

        }

        

        
        
        
	}
}


5 实现效果

请添加图片描述

6 PCB工程及源代码

想获取工程文件及源码、相关问题、其他毕设题目解答,欢迎私信。
或关注微信公众号“电子设计万事屋”

总结

提示:这里对文章进行总结:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值