基于单片机的教室智能照明台灯控制系统的设计与实现

功能介绍

  • 以51单片机作为主控系统;
  • LCD1602液晶显示当前时间、年月日、时分秒、前教室人数;
  • 2路红外探头用来感应当前教室进出人数;
  • 按键可以设置当前时间、自动手动模式、开启和关闭教室灯光时间;
  • 在手动模式下,可以通过按键直接控制灯光亮度(3档);
  • 自动模式下,LED指示灯亮,光敏传感器检测当前教室光线强度光线较弱,
  • 教室有人并且在开灯的时间范围内根据教室内不同的人数将自动开启台灯进行照明;
  • 整个电路以5v供电;;

电路图

PCB

源代码

cpp 复制代码
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>//printf串口输出头文件

#define uchar unsigned char
#define ushort  unsigned int
#define uint  unsigned long

#include "lcd1602.h"
#include "uart_trx.h"
#include "eeprom52.h"

#define RATIO 800		//系数,建议选择800-1000

sbit key1 = P1^0;//加键
sbit key2 = P1^1;//减键

sbit beep = P2^0;//蜂鸣器
sbit Fan = P1^3;//风扇

unsigned char pmBuf[7] = 0;//数据接收数组
uint PM25_Value = 0;     		//PM = ((pmBuf[1]<<8)+pmBuf[2])/1024*8*ratio
uint PM25_ValueMax = 200; //上限初始值

void EEPROM_WRITE()//EEPROM写入
{
		SectorErase(0x2000);//擦除扇区
	  byte_write(0x2001, (PM25_ValueMax>>8)&0xFF);//存储高8位
	  byte_write(0x2002, (PM25_ValueMax>>0)&0xFF);//存储低8位
	  byte_write(0x2009, 111);//存储校验值
}

void EEPROM_READ()//EEPROM读出
{
		if(byte_read(0x2009)!=111)//开机检测单片机是不是第一次使用,如果不是第一次使用,则先把数据存储一遍,再读取,数据就不会乱码
		{
				EEPROM_WRITE();//存储
			  delay_ms(100);
		}
		PM25_ValueMax = byte_read(0x2001)<<8 | byte_read(0x2002);//读取上限值
}

void Get_PM(void)//读取PM2.5值,具体的数据帧意思,请自行查阅芯片手册
{
    char i = 0;
    char j = 0;
    char k = 0;

	  COM.RX_Cnt = 0;
    if(COM.B_RX_OK == 1)//串口数据接收完成
    {
        for(i = 0; i<8; i++)
        {
            if((RX_Buffer[i] == 0xAA)&&(RX_Buffer[i+6]==0xFF))//判断接收的数据是否正确
            {
                goto find2;
            }
        }
        goto end2;
find2:
        for(j = 0; j<7; j++)
        {
            pmBuf[j] = RX_Buffer[i+j];//数据获取
        }

        PM25_Value = (unsigned int)((pmBuf[1]*256)+pmBuf[2])*5/2048.0*RATIO;//计算PM2.5值
        COM.B_RX_OK = 0;
    }
end2:
    return;
}



void main(void)
{
    unsigned int test;

	  EEPROM_READ();//开机读取存储值
    LCD_init();//1602初始化
    Uart_Init(2400);//串口初始化波特率2400
  
    LCD_write_string(0,0,"Pm2.5:    ug/m3 ");
    LCD_write_string(0,1,"PmMax:    ug/m3 ");
	  //显示上限值
	  LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);
		LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);
		LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);
    while(1)
    {
			if (test ++ > 250)//大约250ms读取一次
			{
					test = 0 ;

					Get_PM();//获取PM2.5
					if(PM25_Value > 999)//限值,最大999
					 PM25_Value = 999;
					//显示PM2.5
					LCD_write_char(7, 0, PM25_Value % 1000 / 100 + 0x30);
					LCD_write_char(8, 0, PM25_Value % 100 / 10 + 0x30);
					LCD_write_char(9, 0, PM25_Value % 10 + 0x30);
					
					if(PM25_Value >= PM25_ValueMax)//超过上限,蜂鸣器报警
					{
							beep = ~beep;
						  Fan = 0;
						  delay_ms(100);
					}
					else
					{
							beep = 1;
						  Fan = 1;
					}
			}
			if(key1 == 0)//加键按下
			{
					delay_ms(10);//消抖
				  if(key1 == 0)
					{
						  beep = 0;
						  delay_ms(100);
						  beep = 1;
							while(key1 == 0);
						  if(PM25_ValueMax<999)PM25_ValueMax+=10;//上限最大到999,每次加10
						  //显示
						  LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);
							LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);
							LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);
						  EEPROM_WRITE();//保存
					}
			}
			if(key2 == 0)//减键按下
			{
					delay_ms(10);
				  if(key2 == 0)
					{
						  beep = 0;
						  delay_ms(100);
						  beep = 1;
							while(key2 == 0);
						  if(PM25_ValueMax>=10)PM25_ValueMax-=10;//上限最小到0,每减10
						  //显示
						  LCD_write_char(7, 1, PM25_ValueMax % 1000 / 100 + 0x30);
							LCD_write_char(8, 1, PM25_ValueMax % 100 / 10 + 0x30);
							LCD_write_char(9, 1, PM25_ValueMax % 10 + 0x30);
						  EEPROM_WRITE();//保存
					}
			}
			delay_ms(1);
    }
}

元器件清单

|--------------------------|----------|----|
| 基于单片机的教室智能照明台灯控制系统的设计与实现 |
| 名称 | 型号 | 数量 |
| 单片机 | STC89C52 | 1 |
| IC座 | DIP40 | 1 |
| 万能板 | 9*15cm | 1 |
| 晶振 | 11.0592M | 1 |
| 电解电容 | 10uF | 1 |
| 电解电容 | 1000uf | 1 |
| 瓷片电容 | 22pF | 2 |
| 电阻 | 10K | 3 |
| 电阻 | 1K | 4 |
| 电阻 | 2K | 1 |
| LED红 | 5MM | 1 |
| LED绿 | 5MM | 1 |
| 蜂鸣器 | 有源 | 1 |
| 三极管 | S9012 | 1 |
| 按键 | | 5 |
| 显示屏 | LCD1602 | 1 |
| 排针 | 16P | 1 |
| 排母 | 16P | 1 |
| 人体红外模块 | HC-SR501 | 1 |
| 排母 | 3P | 1 |
| 温度传感器 | DS18B20 | 1 |
| 烟雾传感器 | MQ-2 | 1 |
| 模数转换器 | ADC0832 | 1 |
| IC座 | 8P | 1 |
| GSM模块 | SIM800c | 1 |
| 电源座 | 5MM | 1 |
| 电源线 | 5V2A | 1 |
| 自锁开关 | | 1 |
| 继电器 | | 1 |
| 小水泵 | | 1 |
| 导线 | | 若干 |
| 焊锡丝 | | 若干 |

参考文献

参考文献

1王德保.GPS在城市控制网中的应用研究D.山东:山东科技大学,2005.

2何立民.从现代计算机视角看嵌入式系统(4)嵌入式系统40年发展史J.单片机与嵌入式系统应用,2016,16(04):77-79.

3康桂霞,刘达.FPGA应用技术教程M.北京:人民邮电出版社:201306.229.

4朴德慧,衣英刚.液晶显示器驱动板MCU电路介绍(上)J.家电检修技术,2012(11):53.

5段廷魁.全球卫星定位系统(GNSS)在工程测量中的实践运用探索0J.科技创新与应用,2021(05):182-184.

6宋戈,黄鹤松.51单片机应用开发范例大全M.北京:人民邮电出版社:国家信息技术紧缺人才培养工程系列丛书,201206.558.

7罗小青.单片机原理及应用教程M.北京:人民邮电出版社,201409.180.

8沈庆阳.单片机实践与应用M.北京:清华大学出版社,2002.

9杜深慧.温湿度检测装置的设计与实现M.北京:机械工业出版社,2004.

10林嘉.基于89S52的LCD1602程序设计J.电脑知识与技术,2012(26):6376-6378.

11刘光伟.基于单片机的温室温湿度监测系统设计与实现D.秦皇岛市:燕山大学,2012.

12褚福强,董学仁.单片机的网络接入技术研究J.仪器仪表用户,2006(05):4-5.

13陈英俊.基于单片机的温湿度监测和报警系统设计J.广东石油化工学院学报,2013(04):42-46.

14廖丽媛.基于应变式扭矩传感器的测量系统的设计D.上海市:东华大学,2013.

15刘九庆.温室环境工程技术M.吉林:东北林业大学出版社,2002.

16王明喜,崔世茂.大棚型日光温室光照、温度及湿度等性能的初步研究J.农业工程技术(温室园艺),2008(05):19-21.

17张迎辉.单片微型计算机键盘接口设计J.信息技术,2004(07):68-69+91.

18张友德,赵志英.单片微型机原理应用与实验M.上海市:复旦大学出版社,2003.

19赵芝芸.温室智能监控系统D.江苏:江苏科技大学,2010.

20张宏伟.基于STM32的智能环境监测系统设计与实现J.大庆师范学院学报,2020(05):32-35.

21王世伟,杨越.基于STM32的多型号舵机调试器设计J.九江学院学报(自然科学版),2020,35(02):33-36.

22Pengcheng Zhao,Meijun Ni,Chao Chen,Chenxi Wang,PingpingYang,Xiahui Wang,Chunyan Li,Yixi Xie,Junjie Fei. A Novel Self-protection Hydroquinone Electrochemical Sensor Based on Thermo -sensitive Triblock Polymer PS-PNIPAm-PSJ.

23Jian Wang,Jing Chen,Xiaofu Xiong,Xiaofeng Lu,ZhengLiao,Xiaobo Chen.Temperature safety analysis and backup protectionscheme improvement for overhead transmission line in poweroscillation conditionT.Electric Power Systems Research,2019,166.

24Fuji Electric Co.Ltd.;Patent Issued for SeiconductorDevice And Method Of Outputting Temperature Alarm (USPTO10,164,626)J.Electronics Newsweekly,2019.

25VERSID,INC;Patent Issued for Refrigeration UnitTemperature Alarm Using Thermal Properties of Food to Eliminate FalseAlarms (USPTO 9752810)J.Computers,Networks &Communications,2017.

26Fuji Electric Co.Ltd;Patent Application Titled"Semiconductor Device and Method of Outputting Teperature Alarm"Published Online (USPTO 20170077919)J. Technology & BusinessJournal,2017.

27su Yuanping,Xu Lihong,Goodman Erik D.Multi-layerhierarchical optimisation of greenhouse climate setpoints for energyconservation and improvement of crop yieldJ.Biosystems

28黄松茂.基于STM32的家庭环境监测系统的设计与实现D.甘肃兰州.西北师范大学,2018.:23-30.

29李大琳.智能车内温度监测系统设计J.山东工业技术,2014(12):80-81.

30郭雯,王海涛. 智能输液系统的发展与应用.医疗卫生装备,2012

相关推荐
蓝斯49714 小时前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
熙芯XiChip15 小时前
硬实时与软实时RTOS核心区别
嵌入式硬件
伟大的前程15 小时前
unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机
单片机·嵌入式硬件
小渔村的拉线工15 小时前
1.HPM6E80 解析芯片整体工作原理和存储架构
单片机·嵌入式硬件·mcu·架构·hpm6e80
熙芯XiChip16 小时前
CAN与CANopen的本质区别
单片机
lilihewo17 小时前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET18 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院18 小时前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰19 小时前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件
csdn杰哥20 小时前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5