系列文章目录
第一题 基于单片机的超声波测距器设计
第二题 基于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绘制
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工程及源代码
想获取工程文件及源码、相关问题、其他毕设题目解答,欢迎私信。
或关注微信公众号“电子设计万事屋”
总结
提示:这里对文章进行总结: