首页 > 分享 > 1912基于单片机宠物智能定时喂食投食系统设计(仿真 、程序、原理图)【毕设课设】

1912基于单片机宠物智能定时喂食投食系统设计(仿真 、程序、原理图)【毕设课设】

摘要

本文设计了一种基于STC89C52单片机的宠物智能定时喂食投食系统。该系统通过MQ-2烟雾检测模块检测喂食器内的食物余量,结合DS1302时钟芯片实现定时喂食功能。同时,系统通过WT588D语音模块提供语音提示,并通过按键进行时间设置和校准。通过Protues仿真验证了系统的可行性和稳定性。

关键词:STC89C52单片机;宠物喂食;定时投食;MQ-2烟雾检测;DS1302;WT588D;Protues仿真

一、引言

随着人们生活水平的提高,宠物已经成为许多家庭的重要成员。然而,由于工作繁忙或其他原因,许多宠物主人在喂食方面存在困难。为了解决这一问题,本文设计了一种基于STC89C52单片机的宠物智能定时喂食投食系统。该系统能够根据预设的时间段自动打开继电器,实现定时喂食功能,并通过MQ-2烟雾检测模块检测食物余量,确保宠物的健康饮食。

二、系统设计方案

本系统主要由STC89C52单片机、MQ-2烟雾检测模块、DS1302时钟芯片、WT588D语音模块、继电器和按键组成。其中,STC89C52单片机作为系统的核心控制器,负责接收各模块的信号并控制继电器的开关;MQ-2烟雾检测模块用于检测喂食器内的食物余量;DS1302时钟芯片提供时间信息;WT588D语音模块用于提供语音提示;继电器用于控制喂食器的开关;按键用于设置和校准时间。

三、硬件设计

STC89C52单片机

STC89C52是一款常用的8位单片机,具有高性能、低功耗的特点。在本系统中,它负责接收各模块的信号,并根据预设的时间段控制继电器的开关。

MQ-2烟雾检测模块

MQ-2是一款常用的烟雾检测传感器,对烟雾有良好的灵敏度。在本系统中,它用于检测喂食器内的食物余量,当食物不足时发出信号,提醒主人添加食物。

DS1302时钟芯片

DS1302是一款高性能、低功耗的实时时钟芯片,具有掉电时钟仍在走的特点。在本系统中,它提供时间信息,确保喂食时间的准确性。

WT588D语音模块

WT588D是一款高性能的语音模块,支持多种语音格式。在本系统中,它用于提供语音提示,例如提醒主人添加食物或喂食时间已到等。

继电器与按键

继电器用于控制喂食器的开关;按键用于设置和校准时间。

四、软件设计

软件设计主要包括单片机初始化、时间设置与校准、食物余量检测、定时喂食控制等部分。单片机首先进行初始化设置,然后通过按键设置和校准时间。在预设的时间段内,单片机根据DS1302提供的时间信息控制继电器的开关,实现定时喂食功能。同时,MQ-2烟雾检测模块不断检测食物余量,当食物不足时发出信号,单片机接收到信号后通过WT588D语音模块发出提示。

五、Protues仿真

利用Protues软件对系统进行仿真测试。在仿真环境中搭建系统的电路模型,设置各模块的工作参数和初始状态。通过模拟按键操作设置时间,观察继电器的开关状态以及WT588D语音模块的提示情况。通过调整MQ-2烟雾检测模块的输入信号,验证食物余量检测功能的准确性。通过多次仿真测试,验证系统的稳定性和可靠性。

六、结论

本文设计了一种基于STC89C52单片机的宠物智能定时喂食投食系统。通过硬件和软件的设计实现了定时喂食、食物余量检测、语音提示等功能。通过Protues仿真验证了系统的可行性和稳定性。该系统具有结构简单、成本低廉、操作方便等优点,可广泛应用于宠物喂食领域。

#include <reg52.h>

#include"LCD1602.h"//液晶

#include" 1302.h"//DS1302时钟芯片

#include "EepRom.h"

#include"wt588.c" //语音播报

#define uchar unsigned char

#define uint unsigned int

//-------------------------------------------硬件定义

sbit key1=P3^3;//按键

sbit key2=P3^4;

sbit key3=P3^5;

sbit key4=P3^6;

sbit key5=P3^7;

//---------------------------------------> Dis variable

bit ShanShuo=0; //闪烁

//------------------------------》时间

uchar state=0 ;

///----步进电机--------------------------------------------

unsigned char code gaofz[]= //正转数据高四位

{0x10,0x30,0x20,0x60,0x40,0xC0,0x80,0x90};

unsigned char code gaozz[]= //反转数据 高四位

{0x90,0x80,0xC0,0x40,0x60,0x20,0x30,0x10};

#define QuanShu 2050

#define DelayS 1

uchar FangXiang = 0; //电机转动方向 = 0表示关但是已经关上了所以不动

unsigned char loop = 0;

//---定时------------------------------------------

uchar ding_shi[4] = {0};//定时小时存储

uchar ding_fen[4] ={0};//定时分钟存储

bit kai_guan1= 0; //开关定时标志位

bit kai_guan2= 0;

bit kai_guan3= 0;

bit kai_guan4= 0;

bit shou_dongF = 0;

uchar i = 0;

bit only_flag=0; //只允许播报一次

//---函数初始化------------------------------------------------

void Timer0Init(void);//50毫秒@11.0592MHz

void Read_Memory();//读存储

void Key_Dispose(); //按键处理函数

void Display();//显示函数

void BuJinDianJi() ; //步进电机驱动函数

/****语音播报 显示有冲突**/

//********************************************************************************************

void main() //主函数

{

Timer0Init();

LCD1602_cls(); //定时器初始化以及液晶初始化

Read_Memory();//读存储

while(1)

{

Key_Dispose();

Display();//显示函数

if(!state)read_time1(); //读取时间函数

if(FangXiang==0) only_flag=1;

else if(FangXiang==1)

{

if(only_flag==1)

{

only_flag=0;//清零 只允许播报一次

Send_threelines(0); //语音播报 吃饭了

}

}

BuJinDianJi();

}

}

//==========================================延时函数

void Delay(uint delayi)//短延时函数

{

while (delayi)

{

delayi--;

time_data[0]=ds1302read(0x81);

time_data_1[0]=time_data[0]/16*10+time_data[0]%16;

time_data[1]=ds1302read(0x83);

time_data_1[1]=time_data[1]/16*10+time_data[1]%16;

LCD1602_write(0,0xC0+3);

LCD1602_write(1,0x30+time_data_1[1]/10);

LCD1602_write(1,0x30+time_data_1[1]%10);

LCD1602_write(1,':');

LCD1602_write(1,0x30+time_data_1[0]/10);

LCD1602_write(1,0x30+time_data_1[0]%10);

}

}

//===============================================步进电机

bit jishi_J = 0;

void BuJinDianJi() //步进电机驱动函数

{

static uint bujin1i = 0 ;

if(FangXiang==0)

{

P1&=0x0F;

}

else if(FangXiang==1)

{

for(; bujin1i<QuanShu; bujin1i++)

{

P1&=0x0F; //步进电机用到的四个口清零

P1|=gaozz[loop]; //给电机的四个口中有1为1,其他口数值不变

loop=(loop+1)%8; //循环加,Loop变化范围是 0 - 7,这样结合上一句话就可循环将转动数据送给P2

Delay(DelayS);//; //短延时一下,调节这个短延时,可以控制步进电机的转动速度,越小就越快

}

jishi_J = 1;

}

部分代码....

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

相关知识

1912基于单片机宠物智能定时喂食投食系统设计(仿真 、程序、原理图)【毕设课设】
基于单片机的智能宠物喂食器设计
单片机毕设分享 基于STM32的智能宠物投喂系统
基于STM32的智能宠物看护喂养系统(程序源码+原理图+PCB+Boom表+实物操作说明)
通信工程毕设 单片机(stm32)远程智能宠物喂养系统
最新毕设 基于STM32的智能宠物投喂系统(全套资料)
电子信息毕设 基于STM32的智能宠物投喂系统(全套资料)
stm32毕设 基于STM32的智能宠物投喂系统(全套资料)
基于单片机的宠物喂食系统设计(32+蓝牙+WIFI版)
毕设项目:宠物之家管理系统(JSP+java+springmvc+mysql+MyBatis)

网址: 1912基于单片机宠物智能定时喂食投食系统设计(仿真 、程序、原理图)【毕设课设】 https://m.mcbbbk.com/newsview269093.html

所属分类:萌宠日常
上一篇: [1173]基于JAVA的宠物仪
下一篇: 主人给宠物测试智力,土拨鼠,松鼠