单片机毕设 单片机自动晾衣架设计与实现(源码+硬件+论文)


0 前言

🔥
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 毕业设计 基于单片机的自动晾衣架设计与实现(源码+硬件+论文)

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 项目分享:见文末!

在这里插入图片描述

在这里插入图片描述

1 主要功能

整个系统的工作过程为,单片机通过检测水滴检测传感器和光敏电阻经过LM393所反馈的高低电平来判断当前环境的亮度情况以及是否有下雨的情况来控制微动电机正反装来控制其上的衣物左右移动,将其移动到事先准备好的不在室外的环境,实现收衣物。

在这里插入图片描述

2 硬件设计(原理图)

在这里插入图片描述
PCB图

在这里插入图片描述

3 核心软件设计

本次设计主要的程序流程无非是:先判断当前处于哪种模式,如果是手动模式就通过按键控制电机实现晾衣服收衣服,如果是自动模式则仅在白天不下雨的情况下晒衣服,其他情况下都是收衣服。同时为了实现远程操控还加有红外遥控部分

在这里插入图片描述

在这里插入图片描述

关键代码

#include <REGX52.H>
#include "hong_wai.h"



#define uchar unsigned char 
#define uint unsigned int
						 

//定义微动电机管脚
sbit EN=P2^1;	      	 //使能    
sbit A1=P2^0;
sbit B1=P2^2;

//定义限位开关管脚
sbit switch1=P3^3;		  //控制电机往左边的开关
sbit switch2=P3^4;		  //控制电机往右边的开关

//定义LM393两个输出管脚
sbit LM393_A=P1^0;		  //连接的是水滴传感器,水多,输出为0
sbit LM393_B=P1^1;		  //连接的是光敏电阻,光强为 1 

//定义按键
sbit key1=P3^5;
sbit key2=P3^6;
sbit key3=P3^7;

bit key1_flag=0;
bit key2_flag=0;
bit key3_flag=0;


//定义指示灯
sbit led0=P0^0;
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;

bit A_M=1;
bit R_L=1;

bit Open_Close=1;
 
  
void delay(uint time)   //误差 0us
{
    while(time--);
}


void RRM(void)	  //往右边走
{	
	EN=1;  
	A1=1;
	delay(400);
	B1=1;
	delay(400);
	A1=0;
	delay(400);
	B1=0;
	delay(400);
	EN=0;
}

void LLM(void)	 //往左边走
{	
	EN=1;
	B1=0;
	delay(400);
	A1=0;
	delay(400);
	B1=1;
	delay(400);
	A1=1;
	delay(400);
	EN=0;
}


void key_dispose()
 {
   if(!key1||ircode[2]==0x0C)
    { 
	  if(key1_flag) 
	   { ircode[2]=0;
	     key1_flag=0;
		 A_M=~A_M;
	   }
	}
	else key1_flag=1;

   if(!key2||ircode[2]==0x18)
    {  
	  if(key2_flag) 
	   { ircode[2]=0;
	     key2_flag=0;
		 
		if(A_M) Open_Close=0;
	   }
	}
	else key2_flag=1;

   if(!key3||ircode[2]==0x5E)
    {  
	  if(key3_flag) 
	   { ircode[2]=0;
	     key3_flag=0;
		if(A_M) Open_Close=1;
	   }
	}
	else key3_flag=1;

 }


void AM_dispose()
 {
   if(A_M==0) 
    {
		 led0=0;
		 led1=1;
		 if(LM393_B) 
		  {	
			 if(LM393_A) 
			  {
			     Open_Close=0;
			  } 
			  else
			   { 
			     Open_Close=1;
			   }
		  }
		  else 
		   {
		     Open_Close=1;
		   }
	}
	else 
	 {
		 led0=1;
		 led1=0;
	 }



	 if(Open_Close==0)
	  {
		 led2=0;
		 led3=1;
	     if(switch2!=0)  
		  {
		    RRM();
		  }
	  }
	  else 
	   {
		 led2=1;
		 led3=0;
	     if(switch1!=0)  
		  {
		    LLM();
		  }
	   }


 }


void main()
 {

     while(switch1!=0)   //初始化电机位置,默认为关闭
	  {
	    LLM();
	  }
  Init_0_1();
  while(1) 
   {
	 ir_ok();
	 
	 AM_dispose();
   }
 
 
 
 }

void time1() interrupt 3 
 {
  TH1=0x3C;
  TL1=0xb0;
  key_dispose();
 }
void INT_0() interrupt 0
{
  if(starflag)
    {
     	if(irtime>32)  //引导码时间除以0.256,是31.多毫秒
		  {
			 bitnum=0; //此时确定接收到引导码,清零变量,接收数据
		  }
		 irdata[bitnum]=irtime;	//将数据接收送入irdata
		 irtime=0;		//每接收一位数据,清零一次,使下次接受的数据准确
		 bitnum++;		//数组变量增加
		 if(bitnum==33)	//当变量增加到33时,说明一帧数据接收完毕
		  {
		    bitnum=0;	//清零数组变量
			irreceok=1;	//接收完一帧数据标志位
			
		  }
    }
  else
    {
	  starflag=1;	//为接收一帧数据的第一位做准备
	  irtime=0;		//清零定时变量
	}
 
 
 
  
}
void INT_1() interrupt 1
{
 irtime++;  //因为是模式2,那么变量每加一一次,就是定时了256um,也就是0.256毫秒
}

4 实现效果

在这里插入图片描述

在这里插入图片描述

5 最后

包含内容

在这里插入图片描述

🧿 项目分享:见文末!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32程序IAP(In-Application Programming)是一种在单片机运行时通过串口进行自动升级的技术。IAP的实现需要涉及到单片机端的源码和上位机端的源码。 在单片机端,需要编写实现IAP功能的源码。这段代码通常会包括接收上位机发送的升级文件,并将其存储到单片机的内存中。之后,单片机会进行校验和解析升级文件,将其写入到flash或者其他存储器中,完成程序的升级。同时,也需要实现一些监测和保护机制,用于保证升级的安全性和可靠性。 在上位机端,需要编写用于发送升级文件给单片机源码。这段代码通常会包括打开串口、读取升级文件、分片发送给单片机等操作。同时,还需要实现一些协议和通信机制,用于与单片机进行数据交互,并实时监测升级状态,确保升级过程的正确执行。 整套资料包括单片机端和上位机端的源码、协议文档、使用说明等。这些资料可以作为开发人员参考和学习,用于了解和实现STM32程序IAP自动升级功能。通过这些资料,开发人员可以快速上手,熟悉并掌握IAP的实现方法,提高开发效率。 总之,STM32程序IAP自动升级涉及到单片机端和上位机端的源码,分别负责实现单片机的升级功能和与单片机进行通信。整套资料的提供为开发人员提供了学习和实践的基础,帮助他们快速掌握和应用这一技术。 ### 回答2: STM32程序IAP是指通过串口升级的方式对单片机程序进行自动升级。IAP(In Application Programming)是一种在应用程序运行期间对单片机进行编程的技术。 在STM32单片机中,使用IAP技术可以通过串口接口进行固件升级。整个升级过程可以分为两部分:单片机源码和上位机源码单片机源码负责接收上位机发送的固件数据,并进行解析和存储。它包括串口接收中断的设置和数据解析、Flash存储管理以及固件升级的触发条件等功能。单片机源码需要根据具体的需求进行开发,并且需要考虑到升级过程中的容错处理和异常情况的处理。 上位机源码负责将需要升级的固件数据发送给单片机。它包括串口通信的设置、文件读取和发送的功能。上位机源码可以使用各种编程语言进行开发,如Python、C#等,并根据具体的需求进行定制和优化。 整套资料包括单片机源码、上位机源码、使用说明以及示例固件等内容。这些资料提供了完整的升级解决方案,使用户可以根据自己的需求进行开发和定制。 通过使用STM32程序IAP自动升级,可以方便地实现单片机固件的升级,提高了开发效率和产品的可维护性。同时,这种方式还可以避免由于硬件设计不当或者其他原因导致的固件更新困难的问题。 ### 回答3: STM32是一种广泛应用于嵌入式系统中的微控制器,它具有出色的性能和强大的功能。在STM32中,可以使用IAP(In-Application Programming)技术来实现自动升级。自动升级通过串口来进行,这意味着可以通过与计算机连接的串口进行单片机程序的升级。 在实现自动升级的过程中,需要编写 STM32 单片机的程序代码以及上位机的源码。 首先,需要编写单片机程序的源码。这个程序需要能够通过串口接收到来自上位机的升级指令,并且能够将升级文件下载到单片机中进行更新。在编写单片机程序时,需要使用 STM32 的串口通信库函数,以实现与上位机的数据交互。同时,还需要编写代码来处理接收到的升级文件,并将其写入到单片机的 Flash 存储器中,实现程序的升级。 其次,还需要编写上位机的源码。这个上位机程序需要能够与单片机进行串口通信,并且能够将升级文件发送给单片机。在编写上位机程序时,需要使用计算机的串口通信库函数,以实现单片机的数据交互。同时,还需要编写代码来读取本地的升级文件,并将其发送给单片机实现程序的升级。 整套资料包括单片机程序源码和上位机程序源码。这些源码需要详细注释,以便其他开发人员能够理解和使用。此外,还需要提供详细的操作说明,包括如何编译、下载和运行单片机程序,以及如何编译和运行上位机程序。此外,还可以提供相关的参考资料和示例代码,以帮助开发人员更好地理解和使用该自动升级系统。 综上所述,实现STM32程序IAP自动升级串口升级需要编写单片机程序和上位机程序的源码,并提供整套资料,包括源码、操作说明和参考资料等,以便其他开发人员能够使用和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值