基于单片机的宠物喂食(ESP8266、红外、电机)

news/2024/9/29 0:32:45/

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于STC89C52单片机,采用L298N驱动连接P2.3和P2.4口进行电机驱动,
然后串口连接P3.0和P3.1模拟ESP8266,
红外传感器连接ADC0832数模转换器连接单片机的P1.0~P1.2口,
MPX4117重量传感器连接ADC0832数模转换器连接单片机的P1.3~P1.5口,
然后LCD1602连接单片机的P0.0~P0.7口和P2.0~P2.2口;

红外检测到动物靠近,则单片机控制电机转动,重量检测低于5G,则控制电机转动,
串口可以远程发送信息控制电机转动,
各项参数通过LCD1602显示屏显示

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include <REGX52.H>
#include<intrins.h>
#include<stdio.h>
#include "Delay.h"
#include "LCD1602.h"
#define uchar unsigned char
#define uint unsigned  intsbit CS=P1^0;                 //adc0832引脚
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit CS1=P1^3;                 //adc0832引脚
sbit CLK1=P1^4;
sbit DIO1=P1^5;
sbit out1 = P2^3;
sbit out2 = P2^4;static uchar u,U;
static char Dat_rxd;
static int num;
uchar a[3];
static int flag,flag1,flag2,flag3=0;uchar get_AD_Res()            //ADC0832启动读取函数 红外
{uchar i, data1=0, data2=0;CS=0;CLK=0;DIO=1;_nop_();CLK=1;_nop_();CLK=0;DIO=1;_nop_(); CLK=1;_nop_();CLK=0;DIO=0;_nop_();CLK=1;_nop_();CLK=0;DIO=1;_nop_(); for(i=0; i<8; i++){CLK=1;_nop_();CLK=0;_nop_();data1=(data1<<1)|(uchar)DIO; }for(i=0; i<8; i++){data2=data2|(uchar)DIO<<i;CLK=1;_nop_();CLK=0;_nop_();}CS=1;return(data1 == data2)?data1:0;
}uchar get_AD_Res1()            //ADC0832启动读取函数 重量
{uchar i, data1=0, data2=0;CS1=0;CLK1=0;DIO1=1;_nop_();CLK1=1;_nop_();CLK1=0;DIO1=1;_nop_(); CLK1=1;_nop_();CLK1=0;DIO1=0;_nop_();CLK1=1;_nop_();CLK1=0;DIO1=1;_nop_(); for(i=0; i<8; i++){CLK1=1;_nop_();CLK1=0;_nop_();data1=(data1<<1)|(uchar)DIO1; }for(i=0; i<8; i++){data2=data2|(uchar)DIO1<<i;CLK1=1;_nop_();CLK1=0;_nop_();}CS1=1;return(data1 == data2)?data1:0;
}void Com0_Init(void)
{EA=1;        //开总中断ES=1;        //允许串口中断TMOD=0x20;   //定时器T1,在方式3中断产生波特率SCON=0x50;TH1=0xfd;    //波特率设置为9600(晶振12M)TL1=0xfd;TR1=1;       //开定时器T1运行控制位}void Com0(void) interrupt 4 using 1
{if(RI){Dat_rxd=SBUF;                 //串口接收Dat_rxd=Dat_rxd-0x30;RI=0;}}void main()					  //主函数
{	LCD_Init();         //显示屏初始化Com0_Init();//串口初始化 LCD_ShowString(1,1,"-----kaiji-----");Delay(1000);LCD_Init();         //显示屏初始化LCD_ShowString(1,9,"zidong  ");while(1){u=get_AD_Res(); //红外U=get_AD_Res1();//重量if(Dat_rxd==0x01) //启动{ flag3 = 1;}else if(Dat_rxd==0x02) // 停止{flag3 = 2;}else if(Dat_rxd==0x03) // 切换{flag3 = 0;}if(u<100){LCD_ShowString(1,1,"youren");flag = 1;}else{LCD_ShowString(1,1,"wuren ");flag = 2;}a[0]=U/100;a[1]=(U/10)%10;a[2]=U%100;LCD_ShowNum(2,1,a[0],1);LCD_ShowNum(2,2,a[1],1);LCD_ShowString(2,3,".");LCD_ShowNum(2,4,a[2],1);LCD_ShowString(2,5,"g");if(a[1]<5){flag1=1;}else{flag1=2;}flag2 = flag*flag1;if(flag3 == 0){LCD_ShowString(1,9,"zidong  ");if(flag2 == 1 || flag2 == 2 ){out1 = 1;out2 = 0;}else if(flag2 == 4){out1 = 0;out2 = 0;}}if(flag3 == 1){out1 = 1;out2 = 0;LCD_ShowString(1,9,"shoudong");}else if(flag3 == 2){out1 = 0;out2 = 0;}}
}

四、实现现象

具体动态效果看B站演示视频:

基于单片机宠物喂食

全部资料(源程序、仿真文件、安装包、演示视频):

百度网盘资料下载icon-default.png?t=O83Ahttps://pan.baidu.com/s/1y_5fXiGptsymw0wqOdKHXw?pwd=kev8


http://www.ppmy.cn/news/1531140.html

相关文章

【Elasticsearch系列廿二】特殊参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

力扣(leetcode)每日一题 2306 公司命名

2306. 公司命名 给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下&#xff1a; 从 ideas 中选择 2 个 不同 名字&#xff0c;称为 ideaA 和 ideaB 。交换 ideaA 和 ideaB 的首字母。如果得到的两个新名字 都 不在 ideas 中&#xff0c;那么 i…

TypeScript 设计模式之【备忘录模式】

文章目录 备忘录模式&#xff1a;时光机器的魔法备忘录模式的奥秘备忘录模式有什么利与弊?如何使用备忘录模式来优化你的系统代码实现案例备忘录模式的主要优点备忘录模式的主要缺点备忘录模式的适用场景总结 备忘录模式&#xff1a;时光机器的魔法 想象一下&#xff0c;如果…

初识ZYNQ——FPGA学习笔记15

一、ZYNQ简介 ZYNQ&#xff1a;Zynq-7000 All Programmable SoC&#xff08;APSoC&#xff09;&#xff0c;赛灵思公司&#xff08;AMD Xilinx&#xff09;推出的新一代全可编程片上系统 PS&#xff1a;Processing System&#xff0c;处理系统 PL&#xff1a;Program Logic&…

25 基于51单片机的温度电流电压检测系统(压力、电压、温度、电流、LCD1602)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过DS18B20检测温度&#xff0c;滑动变阻器连接数模转换器模拟电流、电压&#xff0c;通过LCD1602显示&#xff0c;程序里设置温度阈值为40&#xff0c;电流阈值为60&am…

对比学习与图像去雾在24TIP和CVPR经典图像去雾论文中的良好结合,展示出模型良好的泛化能力(本期内容较详细 多)

今天主要内容是图像去雾&#xff0c;对比学习&#xff0c;无监督学习&#xff0c;要分享的三篇论文分别是&#xff1a; 21CVPR Contrastive Learning for Compact Single Image Dehazing 24 TIP UCL-Dehaze: Toward Real-World Image Dehazing via Unsupervised Contrastive Le…

MySQL基础知识(三)

1. 存储过程 存储过程是基于SQL语言的过程化编程扩展&#xff0c;允许将一系列SQL语句封装为一个可执行的程序。通过这种方式&#xff0c;可以提高执行效率&#xff0c;因为存储过程在编译后只需通过调用和参数传递来使用&#xff0c;而无需每次执行时都进行解析和编译。这种特…

物理学基础精解【7】

文章目录 平面方程直角坐标及基本运算线段的定比分点一、定义二、坐标公式三、特殊情况四、应用举例五、推导过程&#xff08;简要&#xff09;两直线的交点和两曲线的交点两直线的交点两曲线的交点例题&#xff1a;求两直线的交点例题&#xff1a;求两曲线的交点 参考文献 平面…