【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();

}

}

五、实验现象

演示视频:

相关推荐
硅基手札4 小时前
【串口技术系列文档 10】低功耗与唤醒机制
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
逐光者9335 小时前
STM32——SPI 屏 · Flash · 高速
java·前端·stm32
wuminyu5 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
Logic1015 小时前
C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
c语言·数据结构·算法·贪心算法·时间复杂度·空间复杂度·欧几里得算法
yuehuaxin015 小时前
上海贝岭 BL6523GX(D78) 单相计量芯片开发笔记:引脚定义、寄存器配置与校表流程
嵌入式硬件·智能家居·适配器模式·智能硬件
Kuakewei8885 小时前
可调OVP/OCP USB限流保护芯片IC的50μs过流响应测试
嵌入式硬件
HRTOS6 小时前
HRTOS 官网内容调整记录:首页、系统架构与文档页面优化
单片机·系统架构·51单片机
雨田言炎6 小时前
STM32之SysTick--系统定时器(内容简单但重要,附件有程序源码)
stm32·单片机·嵌入式硬件
ccbw167 小时前
CH32M007K8U7:集成48V三相预驱的RISC-V电机MCU
单片机·嵌入式硬件
老王爱玩车7 小时前
文件操作从打开到缓冲区
c语言·开发语言·学习