基于51单片机智能窗帘仿真设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机智能窗帘仿真设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机智能窗帘仿真设计

  • [1. 主要功能:](#1. 主要功能:)
  • [2. 讲解视频:](#2. 讲解视频:)
  • [3. 仿真设计](#3. 仿真设计)
  • [4. 程序代码](#4. 程序代码)
  • [5. 设计报告](#5. 设计报告)
  • [6. 原理图](#6. 原理图)
  • [7. 设计资料内容清单](#7. 设计资料内容清单)

仿真图proteus8.9及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0084

1. 主要功能:

基于51单片机的智能窗帘控制器proteus仿真

1、系统分为自动模式和手动模式,通过按键切换模式;

2、自动模式下检测光照和温度,如果温度高于25则打开窗帘通风;

3、电机顺时针转动是正转开窗帘,逆时针转动是反转关窗帘;

4、温度低于25则根据光线判断,如果光线强度低于30打开窗帘,光线强度高于60关闭窗帘;

5、手动模式下通过2个按键控制窗帘开启和关闭;

6、设置一个停止键,用于停止窗帘动作;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602显示温湿度和光照强度。

开机默认是自动模式,自动模式指示灯点亮。可以通过按键切换自动/手动模式。手动模式下可以通过按键切换开/关窗帘。

如果光照强度大于阈值,说明自然光足够亮,不需要开窗帘。当光线强度超过60lux时,窗帘关闭以保持室内适宜亮度;当光线强度低于30(假设单位为lux)时,窗帘自动开启以便充分利用自然光照明。

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

温湿度模块代码

c 复制代码
#include "DHT11.h" 

unsigned char dht11_dat[5];//湿度高低+温度高低+和校验

void delay1ms(unsigned int i) //延时函数
{ 
unsigned char j; 
 while(i--)
 {
	for(j=0;j<110;j++);
 }
}

void dht11_recive()//接收
{
unsigned char j,k,m;
unsigned int i;
  SDA=0;
  delay1ms(30);//开始信号20ms
  SDA=1;
  for(i=0;i<1000;i++)//等待响应
  {
  if(!SDA)
  	break;
  }
  if(i==1000)
  {	
    SDA=1;
   	return;//如果没有响应,返回
  }
  for(i=0;i<1000;i++)//等待响应结束
  {
  if(SDA)
  	break;
  }
  if(i==1000)
  {
    SDA=1;
   	return;//如果响应超时,返回
  }
  for(i=0;i<1000;i++)//等待开始
  {
  if(!SDA)
  	break;
  }
  if(i==1000)
  {	
    SDA=1;
   	return;//如果没有响应,返回
  }
for(k=0;k<5;k++) //接收5个数据
	{
	for(j=0;j<8;j++)//接收8位
		{ 
			m<<=1;
			//===========================
		  for(i=0;i<1000;i++)//等待0信号结束
  			{
  			if(SDA)
  				break;
  			}
  			if(i==1000)
  			{	
    			SDA=1;
   				return;//如果超时,返回
  			}
			//===========================
		   for(i=0;i<1000;i++)//等待开始信号
  			{
  			if(!SDA)
  				break;
  			}
  			if(i==1000)
  			{
    			SDA=1;
   				return;//如果超时,返回
  			}
			if(i<5)
				m++;
		}
		dht11_dat[k]=~m;
	}
	delay1ms(1);	  	
} 

mian.c代码

C 复制代码
#include<reg51.h>
#include "DHT11.h"
#include "lcd1602.h"
#include "ADC0832.h"
完整代码见文章后面下载链接
sbit AA=P1^0;//电机
sbit BB=P1^1;
sbit CC=P1^2;
sbit DD=P1^3;
sbit test=P3^6;
sbit k1=P3^0;//切换 
sbit k2=P3^1;//正转
sbit k3=P3^2;//反转
sbit k4=P3^3;//停止
sbit led=P3^7; //手动模式指示灯
sbit led1=P3^6; //自动模式指示灯
uchar time=0;
uchar wen=0,shi=0,guang=0;//温度湿度光照
uchar xian1[]="wen=00C  shi=50%"; //温度湿度显示
uchar xian2[]="light=0000Lux";//光照
uchar mode=0,flag=0;	   
uchar start=1;//开始
uchar endflag=0;//停止  
void delay(uint i)
{
	while(i--)
	{
	//	key_scan();
	}
}
//开窗
void open()
{
	uchar i;
	for(i=0;i<10;i++)
	{
		BB=1;delay(1000);//正转
		AA=0;delay(10000);
		CC=1;delay(10000);
		BB=0;delay(10000);
		DD=1;delay(10000);
		CC=0;delay(10000);
		AA=1;delay(10000);
		DD=0;delay(10000);
		if(!k4)
			break;
	}
	flag=1;
}
//关窗
void close()
{
	uchar i;
	for(i=0;i<10;i++)
	{
		DD=1;delay(10000);//反转
		AA=0;delay(10000);
		CC=1;delay(10000);
		DD=0;delay(10000);
		BB=1;delay(10000);
		CC=0;delay(10000);
		AA=1;delay(10000);
		BB=0;delay(10000);
		if(!k4)
			break;
	}
	flag=0;
}
//主函数
void main()
{
	TMOD|=0X01;//定时器设置
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;
	EA=1;
	TR0=1;
	init_1602();
	AA=1;
	BB=0;
	CC=0;
	DD=0;
	if(mode)  //点亮模式指示LED
	{
		led=0;
	}else	{
		led1=0;
	}
	while(1)
	{
		if(!k1)//模式切换
		{
			delay(1000);//防抖
			if(!k1)
			{
			mode=!mode;
			if(mode)  //点亮LED
			{
				led=0;
				led1=1;
			}
			else
			{
				led=1;
				led1=0;
			}
			start=1;
			while(!k1);
			}
		}
		if(start)//启动检测
		{
		if(mode==0)//自动模式
		{
			if(wen<25)//温度小于25
			{
				if((guang<30)&&(flag==0))
				{
			   		open();//开窗
				}
				if((guang>60)&&(flag==1))
				{
				    close();//关窗
				}
			}
			else//温度高于25,正转
			{
				//正转
				if(flag==0)
					open();
			}
		}
		else //手动模式
		{
			if(!k3)
			{
				//反转
				close();
			}
			if(!k2)
			{ 
			   	//正转
				open();
			}		
		}
		}
	}
}
void Timer0() interrupt 1
{	
	if(time<10)
		time++;
	else
	{
		time=0;
		dht11_recive();//读取温湿度.
		wen=dht11_dat[2];
		shi=dht11_dat[0];
		guang=ADC();//读取光照
		xian1[4]=wen/10+0x30;
		xian1[5]=wen%10+0x30;
		xian1[13]=shi/10+0x30;
		xian1[14]=shi%10+0x30;
		xian2[7]=guang/100+0x30;
		xian2[8]=guang%100/10+0x30;
		xian2[9]=guang%10+0x30;
		write_string(1,0,xian1);//显示
		write_string(2,0,xian2);
	}
	TH0=0X3C;
	TL0=0XB0;
}

5. 设计报告

8104字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试等

随着现代科技的飞速进步和物联网技术的广泛应用,智能家居已经成为未来生活的重要趋势之一。在这一背景下,智能窗帘作为智能家居系统中的关键一环,不仅极大地提升了家居生活的便捷性和舒适度,而且对于实现节能环保、优化室内环境品质具有不可忽视的意义。智能窗帘可以根据外界环境的变化自动调节开闭状态,有效控制室内光照强度和温度,从而降低空调和照明设备的能耗,营造出更为宜人的居住环境。

本课程设计项目正是针对这一领域的需求,以51系列单片机为核心控制器,借助功能强大的Proteus仿真平台进行设计与模拟实现。我们计划开发一款具备双模式切换功能的智能窗帘控制系统,该系统能够灵活地在自动模式和手动模式之间切换,以适应用户在不同场景下的使用需求。

6. 原理图

AD格式原理图。

7. 设计资料内容清单

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法--必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、原理图

8、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接:

https://docs.qq.com/doc/DS1VnVFJLRWFReGZ6

相关推荐
redcocal10 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
辰哥单片机设计13 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器
夜间去看海13 小时前
基于51单片机的自动清洗系统(自动洗衣机)
嵌入式硬件·51单片机·proteus·洗衣机
yrx02030714 小时前
stm32 IIC总线busy解决方法
stm32·单片机·嵌入式硬件
Archie_IT16 小时前
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
arm开发·stm32·单片机·嵌入式硬件
辰哥单片机设计16 小时前
1×4矩阵键盘详解(STM32)
stm32·单片机·嵌入式硬件·矩阵·传感器
wmkswd16 小时前
CAN总线-STM32上CAN外设
stm32·单片机·嵌入式硬件
努力看懂帖子16 小时前
关于STM32项目面试题02:ADC与DAC篇(输入部分NTC、AV:0-5V、AI:4-20mA和DAC的两个引脚)
嵌入式硬件
嵌入式大圣17 小时前
STM32 单片机最小系统全解析
stm32·单片机·嵌入式硬件