当前位置: 首页 > news >正文

基于51单片机红外遥控定时开关智能家电插座设计

1. 功能介绍

本设计是一款基于 STC8C52 单片机 的智能家电插座系统,集 红外遥控控制、定时开关控制、自动与手动模式切换、掉电数据保存、液晶显示、蜂鸣器提示 于一体,能够方便用户对家用电器进行精准的定时控制与远程操作。系统广泛适用于家用电器、办公设备、农业自动化控制等场景。

主要功能包括:

  1. 精准时钟功能
    采用 DS1302 实时时钟芯片,可精确显示当前年、月、日、星期、时、分、秒,并配备 3V 纽扣电池,在系统掉电情况下依然能够持续计时,保证时间数据不丢失。

  2. 液晶显示功能
    使用 LCD1602 液晶模块,可清晰显示时钟信息和系统状态,包括模式(自动/手动)、继电器状态、当前设置的定时时间等。

  3. 多组定时任务
    系统可设置 5 组开机时间5 组关机时间,每一组定时时间可单独设置为有效(Y)或无效(N),并支持掉电保存,数据存储在 STC8C52 单片机内部 EEPROM 中。

  4. 自动与手动模式

    • 自动模式:系统根据当前时间与预设定时时间自动控制继电器开关。
    • 手动模式:用户可通过面板按键或红外遥控器直接控制继电器的开关。
  5. 继电器控制与指示
    继电器控制外接插座,吸合时指示灯亮(电器通电),断开时指示灯灭(电器断电)。

  6. 蜂鸣器提示
    不同的开关状态配有不同提示音:

    • 开机:短促“滴滴”声。
    • 关机:长鸣一声。
  7. 红外遥控功能
    红外遥控器可实现全部操作,包括模式切换、参数设置、手动开关控制等。常用按键定义:

    • “|<<” 模式切换(自动/手动)。
    • “>>|” 进入设置或切换页面。
    • “―” 减值或手动关机。
    • “+” 加值或手动开机。
  8. 掉电数据保存
    所有定时数据、模式设置、开关状态均可掉电保存,保证系统在断电后恢复时仍能正常执行之前的任务。


2. 系统电路设计

系统电路由 STC8C52 单片机核心电路DS1302 时钟模块LCD1602 液晶模块按键电路继电器驱动电路蜂鸣器电路红外接收电路电源电路 八个部分组成。

2.1 STC8C52 单片机核心电路

STC8C52 作为系统的主控芯片,具备丰富的 I/O 资源与 EEPROM 数据存储功能,能够完成时钟数据读取、定时逻辑运算、红外信号解码、按键扫描、继电器控制等任务。

  • 时钟频率:12MHz 外部晶振。

  • 存储功能:内部 EEPROM 用于存储定时数据。

  • I/O 分配

    • P0 口连接 LCD1602 数据线。
    • P1 口部分用于按键输入与红外接收。
    • P2 口输出控制继电器与蜂鸣器。

2.2 DS1302 实时时钟模块

  • 通信接口:三线串行通信(SCLK、I/O、CE)。

  • 供电方式:VCC 接 5V 主电源,Vbat 接 3V 纽扣电池。

  • 功能特点

    • 年、月、日、星期、时、分、秒全时显示。
    • 内部温补晶振,走时稳定。
    • 掉电后由纽扣电池维持工作。

2.3 LCD1602 液晶显示模块

LCD1602 用于显示时钟与系统状态,采用 8 位并行接口与 STC8C52 连接。

  • 显示内容

    • 第一行:当前时间(时:分:秒)与日期(年-月-日)。
    • 第二行:当前模式(Auto/Manual)、继电器状态(ON/OFF)、定时任务提示。

2.4 按键电路

面板上设置 4 个按键:

  • 加键(+):手动开机或设置值增加。
  • 减键(-):手动关机或设置值减少。
  • 模式键:切换自动/手动模式。
  • 设置键:进入设置界面或切换设置项。

按键采用下拉输入方式,通过单片机扫描。

2.5 继电器驱动电路

  • 使用 5V 继电器 控制插座通断。
  • 驱动采用三极管放大电路(如 9013),并在继电器线圈两端并联反向二极管抑制反电动势。
  • 继电器吸合时插座接通电源,可外接任意家电设备。

2.6 蜂鸣器电路

采用有源蜂鸣器,单片机控制其通断以发出提示音,通过定时器实现不同音长的提示声。

2.7 红外接收电路

采用 HS0038 红外接收头,接收 NEC 协议信号,通过单片机外部中断捕获脉冲宽度完成解码。

2.8 电源电路

  • 系统采用 5V 稳压供电,单片机、LCD、DS1302、红外接收器等均由 5V 电源供电。
  • 外接继电器电源与系统电源共用,必要时可使用独立供电防止干扰。

3. 程序设计

程序由 主程序时钟读取与显示模块定时控制模块按键扫描模块红外遥控解码模块继电器与蜂鸣器控制模块EEPROM 数据存储模块 组成。

3.1 时钟读取与显示模块

#include "ds1302.h"
#include "lcd1602.h"DS1302_Time timeData;void readAndDisplayTime() {DS1302_ReadTime(&timeData);LCD_SetCursor(0, 0);LCD_Printf("%02d:%02d:%02d", timeData.hour, timeData.min, timeData.sec);LCD_SetCursor(0, 1);LCD_Printf("%04d-%02d-%02d", timeData.year, timeData.month, timeData.day);
}

3.2 定时控制模块

typedef struct {uint8_t hour;uint8_t min;uint8_t sec;uint8_t enable; // 1=有效,0=无效
} TimerTask;TimerTask onTasks[5];
TimerTask offTasks[5];void checkTimers() {for (int i = 0; i < 5; i++) {if (onTasks[i].enable &&timeData.hour == onTasks[i].hour &&timeData.min == onTasks[i].min &&timeData.sec == onTasks[i].sec) {relayOn();}if (offTasks[i].enable &&timeData.hour == offTasks[i].hour &&timeData.min == offTasks[i].min &&timeData.sec == offTasks[i].sec) {relayOff();}}
}

3.3 按键扫描模块

uint8_t readKey() {if (!KEY_PLUS) return 1;if (!KEY_MINUS) return 2;if (!KEY_MODE) return 3;if (!KEY_SET) return 4;return 0;
}

3.4 红外遥控解码模块

#include "ir_nec.h"void handleIRCommand(uint32_t cmd) {switch(cmd) {case IR_KEY_MODE: toggleMode(); break;case IR_KEY_PLUS: relayOn(); break;case IR_KEY_MINUS: relayOff(); break;case IR_KEY_SET: enterSetting(); break;}
}

3.5 继电器与蜂鸣器控制模块

void relayOn() {RELAY = 1;beepShort();
}void relayOff() {RELAY = 0;beepLong();
}void beepShort() {BEEP = 1; delay_ms(100); BEEP = 0;
}void beepLong() {BEEP = 1; delay_ms(500); BEEP = 0;
}

3.6 EEPROM 数据存储模块

#include "stc_eeprom.h"void saveTimers() {EEPROM_Write(0x00, (uint8_t*)onTasks, sizeof(onTasks));EEPROM_Write(0x50, (uint8_t*)offTasks, sizeof(offTasks));
}void loadTimers() {EEPROM_Read(0x00, (uint8_t*)onTasks, sizeof(onTasks));EEPROM_Read(0x50, (uint8_t*)offTasks, sizeof(offTasks));
}

3.7 主程序

void main() {systemInit();loadTimers();while (1) {readAndDisplayTime();checkTimers();handleKeys();handleIR();}
}

4. 总结

本设计通过 STC8C52 单片机结合 DS1302 时钟芯片、LCD1602 显示、按键与红外遥控,实现了 精准定时、自动/手动模式切换、掉电数据保存 的智能家电插座系统。
系统不仅能够满足家庭日常定时控制需求,还可扩展用于办公室设备管理、农业灌溉等场景,具有功能丰富、稳定性高、操作方便的特点。
通过 EEPROM 存储与纽扣电池供电,确保掉电后仍能保持设定与计时,进一步提升了系统的可靠性与实用性。

http://www.dtcms.com/a/326832.html

相关文章:

  • golang 基础案例_02
  • 算法知识笔记
  • 学习日志31 python
  • 【C++】STL——priority_queue的使用与底层模拟实现
  • 查看 php 可用版本
  • Nestjs框架: RBAC基于角色的权限控制模型初探
  • STM32TIM定时器
  • 请求报文和响应报文(详细讲解)
  • Wed前端第二次作业
  • C语言增删查改实战:高效管理顺序表
  • docker安装searxng
  • monorepo架构设计方案
  • CICD部署流程详解文档笔记
  • 在 Ubuntu 中docker容器化操作来使用新建的 glibc-2.32
  • [激光原理与应用-244]:设计 - 光学 - CLBO晶体使用一段时间后,输出功率就会下降,原因有哪些?
  • OpenBMC中的snk-psu-manager:架构、原理与应用深度解析
  • 高防IP能为网站防御哪些网络攻击?
  • 从零开始学JAVAWeb-5
  • 腾讯云Edgeone限时免费
  • for循环详解与实战技巧
  • Edit Distance
  • 传统制造业减人不减效:一线用工优化的3个投入方向,用对工具比盲目裁员更关键
  • 对抗样本攻击检测与防御
  • 车载软件架构 --- 车辆量产后怎么刷写Flash Bootloader
  • BLE ADV
  • special topic 9 (2) and 1011(1)division one
  • 深入解析Windows系统下UDP绑定失败的原理与系统级解决方案
  • 数据库三范式入门教程
  • Windows11 PowerShell CMD
  • Ascend DrivingSDK 中的 modulated_deform_conv2d(一)