基于51单片机的教室智能照明控制系统

news2025/1/22 19:09:20

硬件方案

        本系统以51单片机作为控制模块的核心部件,采用热释红外人体传感器检测人体的存在,采用光敏三极管构成的电路检测环境光的强度;根据教室合理开灯的条件,通过对人体存在信号和环境光信号的识别与判断,完成对教室灯光的智能控制,避免了教室用电的大量浪费。系统还具有报警功能;同时还采用了软/硬件的“看门狗”等抗干扰措施。
         整体电路主要由51单片机STC89C52、时钟芯片DS1302、液晶屏LCD1602、比较器芯片LM339、光敏电阻、红外对管、按键、LED等构成;原理图如图:


 

PCB及仿真图:

设计功能

  • 使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四个灯。
  • 教室使用两个红外对管来检测是否有人进入并进行人数统计,人数可以统计到二位数99人,并实时将人数显示到液晶屏LCD上,液晶屏同时显示实时日期/时间/星期。利用光敏电阻检测教室的光线强弱;
  • 系统分自动/手动模式,可以通过按键切换模式,并有LED指示当前所在模式,在自动模式下,可以设定定时时间段,在定时时间段内,当教室有人(人数大于0)的情况下,如果光线暗弱则自动打开照明灯,照明灯点亮个数根据人数而定,不在定时时间段或者教室无人的情况下,关闭所有照明灯,另外在手动模式下,可以通过手动开关控制照明灯的亮灭,人数统计部分仍然生效。

软件设计

主程序源码

void main()
{
    AUTO_LED=0;                     //默认自动模式
    temperature=readtemperature();
    init();                         //液晶初始化
    T0_init();                     //定时器初始化
    delay1(8000);
    while(1)
    {
        if(Adjust==0)             //非调节模式下显示时间人数和温度
        {    
            temperature=readtemperature();            //读取温度
            temperature_dispaly(3,temperature);        //显示温度
            Time_Display();         //显示时间
            Open();                  //动作判断,根据光线和声响开关
            Count_Value();         //计算人数
        }
        Keyscan();                 //扫描键盘
    }
}
void temperature_dispaly(char add,char dat)             //温度显示函数:第一个:参数的地址,第二个:参数的内容
{
    uchar shi,ge;
    shi=dat/10;                                         //把温度的十位提取出来
    ge=dat%10;                                         //把温度的个位提取出来
    write_com(0x80+0x40+add);                            //要写的地址
    write_date(0x30+shi);                                //十位的内容   1602字符库
    write_date(0x30+ge);                             //个位的内容    1602字符库
}
/*****************************************定时器初始化和主函数***********************************************************/
void T0_init(void)
{
    TMOD=0x11;                          //设置定时器0为工作方式1
    TH0=(65536-50000)/256;          //50MS定时
    TL0=(65536-50000)%256;
    EA=1;                              //开定时器T0的中断    总中断
    ET0=1;                           //允许T0中断
//    TR0=1;                           //开启定时器
}

void Timer0() interrupt 1                    //定时器T0中断函数
{
    TH0=(65536-50000)/256;                    //赋初值=50ms
    TL0=(65536-50000)%256;                    //TH0=3C,TL0=B0
    Count++;                                //每中断一次,Count加一,计数20次,表示1s的时间到
    if(Count>=20)                            //1s到
    {
        Count=0;
        Miao++;
        if(Miao>=3)                            //3秒内无触发另一个,全部清零
        {
            Miao=0;
            OUT1_flag=0;                     //清零
            IN1_flag=0;
            TR0=0;                             //关闭定时器
        }
    }

}

资料链接:https://pan.baidu.com/s/1dN9Pt-k9bpk-M4jwNUOOPQ?pwd=zkcw 
提取码:zkcw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于浙江22年下半年教师资格证面试报名注册时间

1 哪些考生可以报名 笔试各科成绩合格且在有效期内的并符合各省面试报考条件人员,可参加报名面试: 2 报名分三阶段 12月9日~12日:网上报名 12月5日起开始注册,根据各省报考公告,考生登陆“NTCE-中国教育考试网”(ht…

Delphi记录

文章目录软件安装基础参考书名词释义基本语法常用函数数学运算函数字符处理函数日期时间函数顺序类型函数操作IDE设置去掉Delphi程序启动时的welcome page(欢迎页)设置环境变量的PATH及library的path安装控件如何在Delphi中安装库?安装Add-in-Exprexx安装TMS FlexCel 7.1 D10.…

Java#数据结构----1

目录 一.栈和队列 栈 队列 二.数组和链表 数组 链表 一.栈和队列 栈 栈的特点:后进先出,先进后出 数据进入栈模型的过程称为:压/进栈 数据离开栈模型的过程称为:弹/出栈 队列 队列的特点:先进先出,后进后出 数据从后端进入队列的过程称为: 入队列 数据从前端离开队列的过…

iptables学习

iptables不算是一个真正的防火墙,它是一个配置Linux内核防火墙的命令行工具。将用户的安全设置同步到对应的安全框架–Netfilter。netfilter位于内核空间,iptables位于用户空间。 iptables用于ipv4,ip6tables用于IPv6。 netfilter/ptables 一…

python tkinter 的使用 — 桌面应用程序开发

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口. Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里. Tk8.0的后续版本可以通过ttk实现本地窗口风格…

新电脑Mac安装前端环境,未完待续~

电脑:MacBook Pro (15-inch, 2017) 版本接近可以用迁移助理 太久远就只能新电脑环境重装了, 微信小程序,支付宝小程序,安卓,IOS 无非这几种 以下就是一名前端小程序开发人员环境配置步骤 仅供参考 新电脑安装 1.下载常…

【iOS】UICollectionView的基本使用

UICollectionView是与UITableView相似的控件,不过它的布局更加自由。 与UITableView的不同 tableViewcollectionView初始化需要指定布局style。需要指定一个布局类。子视图布局一行代表一个cell,布局只需要考虑行高。无视行列限制,一个item…

如何在 WSL 下实现 NGINX 反向代理

WSL 是 Windows 自带的 Linux 子系统。它比传统的虚机启动更快,占用系统资源更少,非常利于我们开发基于 Linux 系统的各种应用。本文基于 Ubuntu 20 介绍如何使用 NGINX 实现反向代理功能。 什么是反向代理? 反向代理是一个可以把系统请求分…

[网络] TCP协议是什么?套接字Socket是什么?它们是什么关系?

文章目录前言TCP协议是什么?IP协议网络设备才有“门牌号”(IP地址)网卡、网卡驱动与操作系统的关系操作系统进程与TCP协议操作系统进程和Socket套接字用户进程和Socket套接字用户进程如何消费Socket套接字文件里的数据?TCP协议与S…

呼吸系统药物--平喘药

急性哮喘和慢性哮喘 支气管哮喘属于慢性病。 急性哮喘指支气管哮喘的急性发作,一般在凌晨4点~7点间发作,伴有咳嗽、咳痰、胸闷、气喘和哮鸣音。(用短效、能快速起效的药物治疗,沙丁胺醇喷雾剂(β2受体激动药&#xf…

学习JavaScript进阶

JavaScript进阶 循环语句 for循环 // 类似python中的for i in range(20)for(let i0; i<20; i){console.log(i) }while循环 const MAX_TIMES 20; let cur 0 while (cur < MAX_TIMES){cur;console.log(cur) }do while do {cur ;console.log(cur); }while (cur < MAX_…

【前端开发】CSS BEM命名规范

目录1、BEM2、实战BlockElementModifier3、总结1、BEM BEM其实是块&#xff08;block&#xff09;、元素&#xff08;element&#xff09;、修饰符&#xff08;modifier&#xff09;的缩写&#xff0c;利用不同的区块&#xff0c;功能以及样式来给元素命名。 通过bem规范来命名…

2. Composition API

Composition API 1.Composition API 接下来我们来介绍一下Vue3中新增的Composition API如何使用。注意Composition API仅仅是Vue3中新增的API&#xff0c;我们依然可以使用Options API。先来实现一下之前演示的获取鼠标位置的案例。做这个案例之前&#xff0c;需要先介绍一下…

Java项目:洗浴中心管理系统(java+SSM+JSP+jQuery+javascript+Mysql)

源码获取&#xff1a;俺的博客首页 "资源" 里下载&#xff01; 项目介绍 本项目分为前后台&#xff0c;包含普通用户与管理员两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,管理员信息管理,查看用户信息,新闻公告管理,产品类型管理,级别信息…

物联网开发笔记(53)- 使用Micropython开发ESP32开发板之蓝牙BLE通信

一、目的 这一节我们学习如何使用我们的ESP32开发板通过蓝牙和手机进行通信。 二、环境 ESP32 手机&#xff08;笔者用的小米10&#xff09; Thonny IDE 三、蓝牙介绍 这个知识大家自行百度吧&#xff0c;这里不再赘述什么是蓝牙和蓝牙的历史&#xff0c;以及相关的专业知识…

JS(第二十六)ES6语法中function

JS(第九课)深刻的去理解函数._星辰镜的博客-CSDN博客 1 Function函数的定义 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn function(){} 方式3 new Function() var f new Function(a, b, console.log(a b)); f(1, …

Tomcat服务器和Web开发介绍

Tomcat服务器和Web开发介绍 一、开启Web开发 什么是web开发 WEB&#xff0c;即网页的意思&#xff0c;它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为&#xff1a; 静态web资源&#xff08;如html 页面&#xff09;&#xff1a;指web页面中供…

数据挖掘期末复习

考点目录 文章目录考点目录复习准备1. 数据挖掘的标准流程2. 数据挖掘的主要功能3. 数据探索的主要内容及其意义数据质量分析1.异常值分析2.缺失值分析数据特征分析1.分布分析6.相关性分析4. 数据预处理的作用及其主要任务5. 常见的噪声处理方法6.常用的缺失值处理方法7. 常用的…

Map和Set的详解

Map和Set是一种专门用来搜素的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关&#xff0c;是一种适合动态查找的集合容器 一、模型 一般把搜索的数据称为关键字&#xff08;Key&#xff09;&#xff0c;和关键字对应的称为值&#xff08;Value&#xff09;…

Teams Tab App 的 manifest 分析

上一篇文章我们深入来分析了 tab app 的代码&#xff0c;这篇文章我们研究一下 manifest。 Teams 的 manifest 实际上是一个很复杂的 json&#xff0c;里面的配置非常多&#xff0c;之前的文章陆陆续续的讲过一些配置&#xff0c;我们在这篇文章里来看看关于 tabs 的一些配置&…