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

embedded/2024/11/29 17:33:06/

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于STC89C52单片机,采用L298N驱动连接P2.3和P2.4口进行电机驱动,
然后串口连接P3.0和P3.1模拟ESP8266,
红外传感器连接ADC0832数模转换器连接单片机的P1.0~P1.2口,
MPX4117重量传感器连接ADC0832数模转换器连接单片机的P1.3~P1.5口,
然后LCD1602连接单片机的P0.0P0.7口和P2.0P2.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站演示视频:

B站演示视频

基于单片机宠物喂食

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

百度网盘资料下载https://pan.baidu.com/s/1y_5fXiGptsymw0wqOdKHXw?pwd=kev8


http://www.ppmy.cn/embedded/141532.html

相关文章

基于SpringBoot实现的民宿管理系统(代码+论文)

&#x1f389;博主介绍&#xff1a;Java领域优质创作者&#xff0c;阿里云博客专家&#xff0c;计算机毕设实战导师。专注Java项目实战、毕设定制/协助 &#x1f4e2;主要服务内容&#xff1a;选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 &#x1f496;精彩专栏…

【数据库系列】Flyway详解及详细使用步骤

什么是Flyway&#xff1f; Flyway是一个开源的数据库迁移工具&#xff0c;旨在帮助开发者管理数据库版本和迁移。它支持多种数据库&#xff0c;包括MySQL、PostgreSQL、Oracle和SQL Server等。Flyway通过版本控制的方式&#xff0c;确保数据库的结构和数据与代码库中的版本保持…

AI生成一个Supermap GIS开发大赛的一个作品

2024年Supermap GIS大赛&#xff01;加油&#xff01; 参赛作品设计应充分展示SuperMap系列产品在地理信息系统&#xff08;GIS&#xff09;领域的强大功能和广泛应用。以下是一个基于SuperMap软件系列设计的参赛作品概述&#xff0c;旨在体现其数据处理、分析、制图及发布等核…

VUE 生成 二维码(qrcodejs2-fix),条形码(jsbarcode)

二维码 需要用到依赖&#xff1a;qrcodejs2-fix 安装依赖 npm i qrcodejs2-fix 代码部分 <template><div><div id"codes" ref"codes"></div></div> </template><script setup> import { ref, onMounted } …

django实现paypal订阅记录

开发者链接 登录开发者 沙箱账号链接 沙箱账号链接 1. 创建沙箱应用 2. 记录 Client ID和 Secret 后面有用 然后点击进去创建回调url和回调事件&#xff0c;可以全选事件也可以选择你需要的 3.拿沙箱账号信息去登录 4.登录后创建订阅产品内容。记住产品id 5.配置django后端信…

大模型微调论文阅读 LoRA:LOW-RANK ADAPTION OF LARGE LANGUAGE MODELS 大型语言模型的低秩自适应

论文link&#xff1a;https://arxiv.org/pdf/2106.09685 code&#xff1a;https://github.com/microsoft/LoRA LoRA&#xff1a;Low-Rank Adaptation of Large Language Models Abstract 自然语言处理的一个重要范例是对通用领域数据进行大规模预训练&#xff0c;并适应特定任…

RabbitMQ的预取值详解

RabbitMQ的预取值&#xff08;Prefetch Value&#xff09;是一个关键概念&#xff0c;它决定了消费者在从队列中获取消息时&#xff0c;一次性可以获取的消息数量。这一机制对于优化消息分发和消费者的负载均衡至关重要。 什么是RabbitMQ的预取值&#xff1f; 预取值是指消费者…

【NLP】第三章:长短期记忆网络LSTM

三、长短期记忆网络LSTM 循环神经网络的特点就是拥有"记忆"&#xff0c;就是考虑历史信息&#xff0c;从历史信息中获取辅助当前的决策。 按记忆能力分&#xff1a;simple rnn(就是前面讲的简单rnn结构)、长短期记忆网络(LSTM)、门控循环单元(GRU)、以及双向RNN(Bi-…