【单片机毕业设计】【mcuclub |
您所在的位置:网站首页 › 宠物自动喂食器设置 › 【单片机毕业设计】【mcuclub |
最近设计了一个项目基于单片机的智能化的家养宠物喂食器设计,与大家分享一下:
一、基本介绍
项目名:宠物喂食器(实物+仿真)(mcuclub-jj-053) 项目编号:mcuclub-dz-348 单片机类型:STC89C52 具体功能: 1、通过DS1302获取时间 2、通过AT24C02存储设定的投喂时间 3、通过按键可修正实时时间、添加或删除投喂时间、查看投喂时间、手动开启关闭喂食,手动开启关闭喂水 4、当投喂时间到达时,蜂鸣器报警提醒(2s),并开启步进电机投喂,开启10s后,自动关闭 5、通过超声波测量水位,通过按键设置一个容器高度,测量容器顶端到水平面的高度,从而获取容器内的水位剩余量,当水位剩余量小于设置最小值,自动加水,直到大于设置最大值 6、通过LCD1602显示屏显示数据 7、仿真中使用串口模拟4G模块通信,发送水位值,投喂提醒 二、51实物图单片机型号:STC89C52 板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。 供电接口:TYPE-C 软件版本:AD2013 电路连线方式:网络标号连线方式 注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图 由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。 两层板,上下覆铜接地。 本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是时钟检测模块,通过该模块检测当前时间;第二部分是超声波监测模块,通过该模块获取当前获取当前的水位;第三部分是按键模块,通过该模块可修正实时时间、添加或删除投喂时间、查看投喂时间、手动开启关闭喂食,手动开启关闭喂水;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由四部分组成,第一部分是显示模块,通过该模块可以显示监测的数据;第二部分是步进电机模块,通过步进电机控制投喂;第三部分是继电器模块,通过两个继电器控制加水;第四部分是声光报警模块,投喂时间到达时,蜂鸣器报警提醒(2s)。除此之外,存储模块即作为输入也作为输出,将定时的时间等信息存储到存储模块中,当需要使用的时候,从存储模块中提取出来。具体系统框图如图3.1所示。 七、软件设计流程软件版本:keil5 逻辑程序和驱动程序分开,分布于main.c和其他.c文件 *******处理函数 *****/ void Manage_function(void) { uchar i = 0; if(flag_display == 0) //测量界面 { if(flag_manu == 0) { if(flag_time_feed == 0) { for(i = 0; i < set_feed_count; i++) //判断当前时间是否是投喂时间,如果是,开始投喂5S,且开启两秒蜂鸣器 { if(p_feeddata[i].time_shi == ds1302_buf[4] && p_feeddata[i].time_fen == ds1302_buf[5] && ds1302_buf[6] == 0) { BEEP = 0; flag_bujin_foreward = 1; flag_timer_begin = 1; flag_time_feed = 1; break; } } } else { if(flag_1s < 2) { if(time_num % 20 == 0) BEEP = ~BEEP; } else { BEEP = 1; if(flag_1s >= 10) { flag_timer_begin = 0; flag_time_feed = 0; flag_1s = 0; flag_bujin_reversal = 1; } } } if(distance < water_min) //自动控制加水 RELAY_WS = 0; else if(distance > water_max) RELAY_WS = 1; } } else //设置界面 { BEEP = 1; flag_bujin_foreward = 0; flag_bujin_reversal = 0; } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |