【51单片机】【protues仿真】基于51单片机智能晾衣架系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示当前湿度值

2、按键切换手动和自动模式

3、手动模式下按键控制晾衣架伸缩

4、自动模式下按检测光线强度低于阈值,晚上或湿度高,

此时晾衣架缩回,如果检测光线强度高于阈值,白天或湿

度低,伸出晾衣架

5、指示灯显示

二、使用步骤

基于51单片机的智能晾衣架系统是一种结合环境感知与自动控制的家居设备,核心功能包括手动/自动模式切换、温湿度及光照检测、电机驱动晾衣架升降等

三、硬件资源

1、51单片机核心模块

2、按键模块

3、DHT11温湿度传感器、光敏传感器传感器模块

4、限位器开关

5、继电器模块

6、数码管显示模块

四、软件设计

#include<reg52.h>

#include<intrins.h>

#include<absacc.h> //头文件

#define uc unsigned char

#define ui unsigned int

sbit in_go = P1^3;

sbit in_back = P1^2;//手动前进后退按键

sbit out_go = P3^0;

sbit out_back = P3^5;//电机控制输出

sbit limit_go = P3^4;

sbit limit_back = P3^6;//前进后退限位开关

sbit led_go = P1^4;

sbit led_back = P1^5;//前进后退限位指示灯

sbit light = P1^0;//光线传感器

sbit change = P1^1;//手动自动切换按键(默认自动)

sbit led_zhishi = P1^7;

sbit buzz = P1^6;

sbit W1=P2^2;

sbit W2=P2^1;

//定义DHT11数据口

sbit DATA = P2^0;

uc U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;

uc U8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;

uc Mode,humidity;

bit bdata FlagStartRH,hot,cold,humid,dry;

bit bdata flag1,flag2,change_flag,flag_shan,flag_shan1,flag_shan2,flag_HH;

uc m,n,shan;

uc code table11={ //共阴极字型码

0x3f, //--0

0x06, //--1

0x5b, //--2

0x4f, //--3

0x66, //--4

0x6d, //--5

0x7d, //--6

0x07, //--7

0x7f, //--8

0x6f, //--9

0x00 //--NULL

};

//定时器0初始化

void Timer0_Init()

{

ET0 = 1; //允许定时器0中断

TMOD = 1; //定时器工作方式选择

TL0 = 0xb0;

TH0 = 0x3c; //定时器赋予初值

TR0 = 1; //启动定时器

EA=1;

}

void Delay1(ui j)

{

uc i;

for(;j>0;j--)

{

for(i=0;i<27;i++);

}

}

void Delay_10us(void)

{

uc i;

i--;

i--;

i--;

i--;

i--;

i--;

}

void delay(ui x)//延时函数

{

ui i,j;

for(i=0;i<x;i++)

for(j=0;j<110;j++);

}

void display()

{

P0=tablehumidity/10;

W1=0;

delay(1); //延时

W1=1; //关显示

P0=tablehumidity%10;

W2=0;

delay(1); //延时

W2=1; //关显示

}

void main()//主函数

{

uc testnum;

light=0;

buzz=1;

led_zhishi=0;

Timer0_Init();

while(1)//进入死循环

{

work();//调用工作函数

display();

if (FlagStartRH == 1) //温湿度转换标志检查

{

testnum = RH();

FlagStartRH = 0;

humidity = U8RH_data_H; //读出湿度,只取整数部分

if(humidity>=80)

flag_HH=1;

else

flag_HH=0;

TR0 = 1;

}

display();

}

}

五、实验现象

演示视频:

相关推荐
·present·8 小时前
CSAPP(Bomb lab)
c语言·c++
szxinmai主板定制专家8 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
HQB202611 小时前
屹晶微电子 EG1130|2‑24V 输入 / 最高 28V 输出 内置 MOS 异步升压 DC‑DC|SOT23‑6|摄像头 / 车充 / 电池充电电源
嵌入式硬件·硬件工程
wuminyu12 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
泛凡(Linyongui)12 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
十年磨一剑~13 小时前
Linux 内核中断处理机制与软硬件协同流程
linux·嵌入式硬件
糖糖单片机设计14 小时前
基于单片机的热水器节能控制系统
单片机·嵌入式硬件
数字新视界15 小时前
数字孪生技术赋能智能化转型与创新实践
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
HQB202615 小时前
屹晶微电子 EG1195|10‑120V/10A+ 外置 MOS 异步降压控制器|ESOP‑8|电动车转换器 / 快充 / 工业电源
嵌入式硬件·硬件工程
图灵-M16 小时前
【数据结构】静态 & 动态顺序表
c语言·数据结构·笔记