news 2026/4/23 13:45:36

基于单片机的教室智能照明和人数统计系统探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于单片机的教室智能照明和人数统计系统探索

基于单片机的教室智能照明和人数统计系统功能概述: 1.用51单片机AT89C52、时钟芯片DS1302、液晶屏LCD1602、光敏电阻、红外对管、设计一个教室智能照明控制系统; 2.使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四个灯; 3.教室使用两个红外对管来检测是否有人进入并进行人数统计,人数可以统计到二位数99人,并实时将人数显示到液晶屏LCD上,液晶屏同时显示实时日期/时间/星期; 4.利用光敏电阻检测教室的光线强弱; 5.系统分自动/手动模式,可以通过按键切换模式,并有LED指示当前所在模式,在自动模式下,可以设定定时时间段,在定时时间段内,当教室有人(人数大于0)的情况下,如果光线暗弱则自动打开照明灯,照明灯点亮个数根据人数而定,不在定时时间段或者教室无人的情况下,关闭所有照明灯,另外在手动模式下,可以通过手动开关控制照明灯的亮灭,人数统计部分仍然生效。 代码有注释!!! 包含: 仿真、程序、原理图、PCB、报告【仅供参考】

在现代智能化的浪潮下,教室的智能管理系统也备受关注。今天咱们就来聊聊基于 51 单片机 AT89C52 的教室智能照明和人数统计系统,这个系统融合了时钟芯片 DS1302、液晶屏 LCD1602、光敏电阻以及红外对管等有趣的硬件,实现了一系列超实用的功能。

一、系统功能总览

  1. 硬件搭建:选用 51 单片机 AT89C52 作为核心,搭配时钟芯片 DS1302 来获取精准时间,用液晶屏 LCD1602 显示关键信息,光敏电阻感知光线,红外对管负责检测人员进出。
  2. 照明智能控制:用 4 个 LED 灯模拟教室照明。当满足开启条件时,人数不同,亮灯数量不同。小于 10 人亮 1 个灯,10 - 20 人亮 2 个灯,20 - 30 人亮 3 个灯,大于 30 人 4 个灯全亮。
  3. 人数统计与显示:利用两个红外对管检测人员进出,能统计到 99 人,并且实时在液晶屏上显示人数,同时还显示实时日期、时间和星期。
  4. 光线检测:通过光敏电阻检测教室光线强弱,为智能照明提供依据。
  5. 双模式切换:系统分为自动和手动模式,可通过按键切换,还有 LED 指示当前模式。自动模式下能设定定时时间段,在此期间若教室有人且光线暗就自动开灯,灯亮数量依人数而定;不在定时段或无人则关灯。手动模式下,可手动控制灯的亮灭,人数统计功能依旧生效。

二、代码部分解析

下面咱们看部分关键代码,以 C 语言为例:

#include <reg51.h> #include <intrins.h> #include <ds1302.h> #include <lcd1602.h> sbit mode_key = P3^0; // 模式切换按键 sbit auto_led = P1^0; // 自动模式指示灯 sbit manual_led = P1^1; // 手动模式指示灯 sbit light1 = P2^0; // 第一个灯 sbit light2 = P2^1; // 第二个灯 sbit light3 = P2^2; // 第三个灯 sbit light4 = P2^3; // 第四个灯 sbit ir_in = P3^1; // 红外对管输入 sbit ir_out = P3^2; // 红外对管输出 unsigned char count = 0; // 人数统计变量 bit auto_mode = 1; // 初始为自动模式 unsigned char time[7]; // 存储时间信息 unsigned char date[3]; // 存储日期信息 unsigned char week[1]; // 存储星期信息 unsigned char light_count = 0; // 亮灯数量 // 红外对管中断服务函数,用于人数统计 void ir_interrupt() interrupt 0 { if (ir_in == 0) { _nop_(); _nop_(); // 消抖 if (ir_in == 0) { while (!ir_out); // 等待红外对管输出恢复 count++; // 人数加一 if (count > 99) { count = 99; // 限制人数最大值为 99 } } } } // 根据人数控制亮灯数量 void control_light() { if (count < 10) { light_count = 1; } else if (count < 20) { light_count = 2; } else if (count < 30) { light_count = 3; } else { light_count = 4; } switch (light_count) { case 1: light1 = 1; light2 = 0; light3 = 0; light4 = 0; break; case 2: light1 = 1; light2 = 1; light3 = 0; light4 = 0; break; case 3: light1 = 1; light2 = 1; light3 = 1; light4 = 0; break; case 4: light1 = 1; light2 = 1; light3 = 1; light4 = 1; break; } } void main() { lcd_init(); // 初始化液晶屏 ds1302_init(); // 初始化 DS1302 时钟芯片 EA = 1; // 开总中断 EX0 = 1; // 开外部中断 0,用于红外对管检测 IT0 = 1; // 外部中断 0 下降沿触发 while (1) { if (mode_key == 0) { // 检测模式切换按键 _nop_(); _nop_(); // 消抖 if (mode_key == 0) { auto_mode = ~auto_mode; // 切换模式 while (!mode_key); // 等待按键释放 if (auto_mode) { auto_led = 1; manual_led = 0; // 自动模式指示灯亮 } else { auto_led = 0; manual_led = 1; // 手动模式指示灯亮 } } } if (auto_mode) { ds1302_read_time(time); // 读取时间 ds1302_read_date(date); // 读取日期 ds1302_read_week(week); // 读取星期 // 这里假设还有读取光敏电阻值的函数 get_light_value() if (get_light_value() < threshold && count > 0) { control_light(); // 自动模式下,光线暗且有人时控制灯 } else { light1 = 0; light2 = 0; light3 = 0; light4 = 0; // 关闭所有灯 } } else { // 手动模式下,通过按键或其他方式控制灯,这里简单示意 if (manual_control_signal) { light1 = 1; light2 = 1; light3 = 1; light4 = 1; // 手动开灯示例 } else { light1 = 0; light2 = 0; light3 = 0; light4 = 0; // 手动关灯示例 } } // 显示人数、日期、时间和星期到液晶屏 lcd_string(0, 0, "Count: "); lcd_number(6, 0, count); lcd_string(11, 0, date); lcd_string(14, 0, time); lcd_string(0, 1, "Week: "); lcd_number(6, 1, week[0]); } }

这段代码实现了系统的基本逻辑。在中断服务函数irinterrupt中,通过红外对管检测人员进出并统计人数。controllight函数根据人数控制亮灯数量。main函数里,初始化各个模块后,不断检测模式切换按键,在不同模式下执行相应的操作,并且实时更新并显示信息到液晶屏。

三、仿真、原理图、PCB 及报告

  1. 仿真:可以使用 Proteus 软件进行仿真,搭建电路连接,模拟实际运行情况,在软件里调整参数和测试功能,提前发现问题并解决。比如,验证红外对管检测人数是否准确,液晶屏显示是否正常,模式切换是否有效等。
  2. 原理图:绘制原理图是设计的重要一步,清晰展示各个硬件模块之间的连接关系,像单片机与时钟芯片、液晶屏、光敏电阻、红外对管以及按键、LED 灯等的连接,确保电路设计合理,为后续 PCB 设计打下基础。
  3. PCB:基于原理图设计 PCB,考虑布线规则、电气性能、散热等因素,将各个元件合理布局,制作出实际可用的印刷电路板,让系统有了硬件载体。
  4. 报告:撰写报告详细记录系统设计的整个过程,从需求分析、方案论证,到硬件设计、软件设计,再到测试结果与总结,方便他人理解和借鉴,也是对自己设计过程的一个梳理。

通过这个基于单片机的教室智能照明和人数统计系统,不仅能提升教室管理的智能化水平,还能在实际应用中实现节能与便捷的双重目标。感兴趣的小伙伴不妨自己动手尝试一下,探索其中的乐趣与奥秘!

基于单片机的教室智能照明和人数统计系统功能概述: 1.用51单片机AT89C52、时钟芯片DS1302、液晶屏LCD1602、光敏电阻、红外对管、设计一个教室智能照明控制系统; 2.使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四个灯; 3.教室使用两个红外对管来检测是否有人进入并进行人数统计,人数可以统计到二位数99人,并实时将人数显示到液晶屏LCD上,液晶屏同时显示实时日期/时间/星期; 4.利用光敏电阻检测教室的光线强弱; 5.系统分自动/手动模式,可以通过按键切换模式,并有LED指示当前所在模式,在自动模式下,可以设定定时时间段,在定时时间段内,当教室有人(人数大于0)的情况下,如果光线暗弱则自动打开照明灯,照明灯点亮个数根据人数而定,不在定时时间段或者教室无人的情况下,关闭所有照明灯,另外在手动模式下,可以通过手动开关控制照明灯的亮灭,人数统计部分仍然生效。 代码有注释!!! 包含: 仿真、程序、原理图、PCB、报告【仅供参考】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:17:43

大数据领域数据共享的数据治理框架

大数据时代的数据共享难题&#xff1a;一套可落地的数据治理框架 标题选项 《从混乱到有序&#xff1a;大数据共享的数据治理框架设计与实践》《破解数据共享痛点&#xff1a;企业级大数据治理框架搭建指南》《大数据共享怎么管&#xff1f;这篇框架文讲透了》《释放数据价值&a…

作者头像 李华
网站建设 2026/4/22 22:46:57

基于MVC框架的在线药店管理系统的设计与实现-任务书

目录项目背景系统目标核心功能设计技术选型预期成果备注项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作项目背景 在线药店管理系统基于MVC&#xff08;Model-View-Controller&#xff09;架构设计&#x…

作者头像 李华
网站建设 2026/4/20 11:02:18

玩转三相离网逆变器:从双环控制到重复控制的实战手记

三相离网逆变器&#xff0c;逆变器双环控制&#xff0c;参数设计&#xff0c;双闭环PI控制&#xff0c;PR(比例谐振)控制&#xff0c;QPR(准比例谐振)控制&#xff0c;重复控制&#xff0c;快速重复控制算法仿真模型及算法的离散化实现。 可提供参考资料 最近在实验室折腾三相…

作者头像 李华
网站建设 2026/4/23 13:19:17

Java高频面试题:MyBatis如何处理懒加载和预加载?

大家好&#xff0c;我是锋哥。今天分享关于【Java高频面试题&#xff1a;MyBatis如何处理懒加载和预加载&#xff1f;】面试题。希望对大家有帮助&#xff1b;Java高频面试题&#xff1a;MyBatis如何处理懒加载和预加载&#xff1f;在Java开发中&#xff0c;MyBatis是一个广泛使…

作者头像 李华
网站建设 2026/4/23 13:20:01

玉米目标检测实战:基于YOLO13-C3k2-RFAConv的优化方案_1

1. 玉米目标检测实战&#xff1a;基于YOLO13-C3k2-RFAConv的优化方案 这张图片展示了玉米目标检测任务的场景。画面中&#xff0c;多根带外皮和部分叶片的玉米棒被放置在灰色地面上&#xff0c;周围用红色矩形框标注了多个"corn"标签&#xff0c;每个框精准包围单根…

作者头像 李华
网站建设 2026/4/23 9:59:23

基于APQP方法的供应商研发协同管理软件系统:赋能主机厂供应链质量与效率的数字化引擎——全星APQP软件系列

全星供应商研发协同管理软件系统&#xff1a;赋能主机厂供应链质量与效率的数字化引擎 在汽车产业竞争日趋白热化的今天&#xff0c;主机厂的核心竞争力不仅体现在卓越的产品设计与制造能力&#xff0c;更依赖于其背后高效、协同、高质量的供应链体系。传统的供应商管理模式&a…

作者头像 李华