基于单片机智能围床灯

这篇具有很好参考价值的文章主要介绍了基于单片机智能围床灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-DPJ-004

一,环境介绍

语言环境:C语言

开发技术:51单片机

二,项目简介

科技进步促进了人民生活的不断改善。各个行业都在逐步推进智能化,在我们的日常生活中,我们所接触到的智能设备也在不断增多,这给我们带来了更多的选择。在现实生活中,床围灯以人工开关为主,特别是在夜间,非常不方便。在此基础上,提出了一种基于51 单片机的床边灯光自动控制系统。系统主要包括:单片机主控系统, LCD液晶显示模块,温、湿度探测、光强探测、人体散发出的热量探测、照明自动调节等。它主要完成了对人体位置的感知,对灯光进行智能控制,对温度、湿度和光照强度进行检测,并对 LCD液晶显示屏进行显示。本课题与目前的科技发展水平相结合,提出了使用单片机来实现智能床围灯的控制。这既是一种对传统家庭的一种革新,也是科研人员和广大人民群众对美好生活的一种期待。

本文介绍了一种以单片机为核心,以单片微处理器为核心,以微处理器为核心,以微处理器为核心,对微机进行了智能化的控制。在目前的现实生活中,床围灯的控制方式大多都是人工开关,特别是在夜间的环境中,非常不方便。在这样的情况下,本课题结合当前的技术发展水平,使得床围灯的控制能够用单片机来实现。这样即给传统家庭带来了革新,又是科研人员及广大民众对美好生活的一种向往。智能床围灯控制系统改善了传统床围灯多终端控制带来的不便利之处,并以此为首要,简化操作流程的同时,也提高了系统的可操作性。这在一定程度上为人们的生活带去了便利,同时还在很大程度上节约了能源的消耗,因此它具备了良好的实用意义。

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

三,系统展示

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

四,核心代码展示

#include "reg52.h"
#include "stdio.h"
#include "1602.h"
#include "ds1302.h"
#include "pcf8591.h"
#include "dht11.h"
uchar buf[16]; //显示缓存
sbit  BEEP=P3^3;//蜂鸣器

sbit  JDQ1=P3^7;//开关
sbit  JDQ2=P3^2;//开关
sbit  JDQ3=P1^0;//开关	 .

sbit SYS_SET  = P1^1;//按键选择
sbit SYS_MD   = P1^2;//增加

sbit DCIN1   = P1^5;   //人体探头
sbit DCIN2   = P1^6; 
sbit DCIN3   = P1^7; 


int  f,PWM_T1=0,PWM_T2=0,PWM_T3=0;

void pwmtext(){
	TMOD = 0x02;   //定时器0,工作模式2,8位定时模式
	TH0=150;     //写入预置初值(取值1-255,数越大PWM频率越高)
	TL0=150;     //写入预置值 (取值1-255,数越大PWM频率越高)
	TR0=1;       //启动定时器
	ET0=1;       //允许定时器0中断
	EA=1;        //允许总中断
}
/**************中断服务程序*****************/
void timer0() interrupt	1			//2.5毫秒@11.0592MHz
{
    f++;    //每次定时器溢出加1
    	 
	 if(f==20)   //PWM周期 100个单位
		 {
			f=0;  //使t=0,开始新的PWM周期
			JDQ1=0;JDQ2=0;JDQ3=0;
		 }
	 
	 if(PWM_T1==f)  //按照当前占空比切换输出为高电平
		 {  
		 	JDQ1=1; //  
		 }
	 if(PWM_T2==f)  //按照当前占空比切换输出为高电平
		 {  
		 	JDQ2=1; //  
		 }
	 if(PWM_T3==f)  //按照当前占空比切换输出为高电平
		 {  
		 	JDQ3=1; //  
		 }	 
}


//标志位
void BEEPS(){ //蜂鸣器响一声
	BEEP=0;delay(100);BEEP=1;delay(100); 
}
			  
/***************主程序****************/		   
void main()
{	int mds=0,cd=0,flag=0;
	uchar temp1,gzmax=20,wenmax=30,shimax=70;
	pwmtext();	//PWM初始化
	lcd1602_init();//液晶初始化
	init_ds1302();//ds1302初始化
//	write_time();//写数据
//	BEEPS(); 

	while(1)
	{									   
			    read_time();//获取时间
			   	temp1=(float)((float)Read_PCF8591(1)/255.0)*100.0;	    //读取模拟量1  光照值
				Read_PCF8591(2);	    //读取模拟量2
				Read_PCF8591(3);	    //读取模拟量3
				Read_PCF8591(4);	    //读取模拟量4
			 	
			 cd++;
			 if(cd>25){cd=0;
			 flag=!flag; lcd_Write_com(0x01);	//清屏
			   EA=0;DHT11_receive();EA=1;
			  	
			 }
				if(flag){
				 //显示数据
				 hz_lcdDis(0,0,"Te:"); hz_lcdDis(0,6,"C");
				 hz_lcdDis(1,0,"Hu:");fuhao(5);
				 hz_lcdDis(1,5,"%");
				 hz_lcdDis(1,9,"Gz:");
				 hz_lcdDis(1,14,"%");
				 num_lcdDis(0,3,temp_value,2);
			     num_lcdDis(1,3,humi_value,2);
				 num_lcdDis(1,12,(int)temp1,2);
	
				}else{

				 sprintf(buf,"Date:%02d-%02d-%02d ",2000+(int)nians,(int)yues,(int)ris);	//年月日
				 hz_lcdDis(0,0,buf);//显示在第一行
				 sprintf(buf,"Time:%02d:%02d:%02d ",(int)shis,(int)fens,(int)miaos);//时分秒
				 hz_lcdDis(1,0,buf); //显示在第二行	 
				
				}

			  if(temp_value>wenmax|humi_value>shimax){	  //阈值超标报警
			   BEEPS(); 
			  }
//
			  if(temp1<gzmax){ //光照过低
			  		 if(DCIN1==1){	//1位置有人
						 if(PWM_T1<20){
						 	 PWM_T1++;	 //开灯
						 }
					 
					 }else{
					  if(PWM_T1>0){
					  	  PWM_T1--;	 //关灯
					  }
					 }

					 if(DCIN2==1){	//2位置有人
					  if(PWM_T2<20){
						 	 PWM_T2++;  //开灯
						 }
					 }else{
					  if(PWM_T2>0){
					  	  PWM_T2--;		 //关灯
					  }
					 }

					 if(DCIN3==1){		 //3位置有人
					  if(PWM_T3<20){
						 	 PWM_T3++; //开灯
						 }
					 }else{
					  if(PWM_T3>0){
					  	  PWM_T3--;	    //关灯
					  }
					 }
			  }else{
			  
			   if(PWM_T3>0){
					  	  PWM_T3--;
					  };if(PWM_T2>0){
					  	  PWM_T2--;
					  }	 if(PWM_T1>0){
					  	  PWM_T1--;
					  }
			  }
			 

			 

			 if(SYS_SET==0){
			 	BEEPS();
			    lcd_Write_com(0x01);	//清屏
				while(SYS_SET==0);
				mds=1;
				lcd_Write_com(0x01);
					       nian  = read_ds1302(read_add[5]);
						   sprintf(buf,"nian:%d ",(int)nians);
			 			   hz_lcdDis(0,0,buf); //显示在第1行 
						   hz_lcdDis(0,14,"<=");
						   hz_lcdDis(1,14,"  ");
					
				while(1){
				 if(SYS_SET==0){
				 	mds++;BEEPS();
					
					if(mds==2){
						   yue  = read_ds1302(read_add[4]);
						   sprintf(buf,"yue:%d ",(int)yues);
			 			   hz_lcdDis(1,0,buf); //显示在第2行 
						   hz_lcdDis(0,14,"  ");
						   hz_lcdDis(1,14,"<=");
					}
					if(mds==3){lcd_Write_com(0x01);
					       ri  = read_ds1302(read_add[3]);
						   sprintf(buf,"ri:%d ",(int)ris);
			 			   hz_lcdDis(0,0,buf); //显示在第3行				 
						   hz_lcdDis(0,14,"<=");
						   hz_lcdDis(1,14,"  ");
					}
					if(mds==4){
					       
						   shi  = read_ds1302(read_add[2]);
						   sprintf(buf,"shi:%d ",(int)shis);
			 			   hz_lcdDis(1,0,buf); //显示在第4行
						   hz_lcdDis(0,14,"  ");
						   hz_lcdDis(1,14,"<=");
					}
					if(mds==5){
					lcd_Write_com(0x01);
						   fen  = read_ds1302(read_add[1]);	
						   sprintf(buf,"fen:%d ",(int)fens);
			 			   hz_lcdDis(0,0,buf); //显示在第5行
						   hz_lcdDis(0,14,"<=");
						   hz_lcdDis(1,14,"  ");
						   
					}
					if(mds==6){
						   miao  = read_ds1302(read_add[0]);
						   sprintf(buf,"miao:%d ",(int)miaos);
			 			   hz_lcdDis(1,0,buf); //显示在第4行
						   hz_lcdDis(0,14,"  ");
						   hz_lcdDis(1,14,"<=");
					}								   
					if(mds==7){
					lcd_Write_com(0x01);	   
						   sprintf(buf,"gzmax:%d ",(int)gzmax);
			 			   hz_lcdDis(0,0,buf); //显示在第4行
						   hz_lcdDis(0,14,"<=");
						   hz_lcdDis(1,14,"  ");
					}							
					if(mds==8){
						   
						   sprintf(buf,"wenmax:%d ",(int)wenmax);
			 			   hz_lcdDis(1,0,buf); //显示在第4行
						   hz_lcdDis(0,14,"  ");
						   hz_lcdDis(1,14,"<=");
					}
					if(mds==9){
						 	lcd_Write_com(0x01);  
						   sprintf(buf,"shimax:%d ",(int)shimax);
			 			   hz_lcdDis(0,0,buf); //显示在第4行
						   hz_lcdDis(0,14,"<=");
						   hz_lcdDis(1,14,"  ");
					}
					if(mds>9){lcd_Write_com(0x01);
					  write_time();//写数据	 
					  break;
					}
					while(SYS_SET==0);
				  }
				  if(mds==1){
				  	   if(SYS_MD==0){BEEPS();
					   	   nian=nian+1;	
						   nians=nians+1; 
						   if(nians>25){
						   nian=nians=23;
						   }
						   sprintf(buf,"nian:%d ",(int)nians);//时分秒
			 			   hz_lcdDis(0,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==2){
				  	   if(SYS_MD==0){ BEEPS();
					   	   yue=yue+1;	
						   yues=yues+1; 
						   if(yues>12){
						   yues=yue=1;
						   }
						   sprintf(buf,"yue:%d ",(int)yues);//时分秒
			 			   hz_lcdDis(1,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==3){
				  	   if(SYS_MD==0){ BEEPS();
					   	   ri=ri+1;	
						   ris=ris+1; 
						   if(ris>31){
						   	 ris=ri=1;
						   }
						   sprintf(buf,"ri:%d ",(int)ris);//时分秒
			 			   hz_lcdDis(0,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==4){
				  	   if(SYS_MD==0){ BEEPS();
					   	   shi=shi+1;	
						   shis=shis+1;
						   if(shis>23){
						   	  shis=shi=0;
						   } 
						   sprintf(buf,"shi:%d ",(int)shis);//时分秒
			 			   hz_lcdDis(1,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==5){
				  	   if(SYS_MD==0){ BEEPS();
					   	   fen=fen+1;	
						   fens=fens+1; 
						   if(fens>59){
						   	 fens=fen=0;
						   }
						   sprintf(buf,"fen:%d ",(int)fens);//时分秒
			 			   hz_lcdDis(0,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }if(mds==6){
				  	   if(SYS_MD==0){	BEEPS();
					   	   miao=miao+1;	
						   miaos=miaos+1; 
						   if(miaos>59){
						   	 miaos=miao=0;
						   }
						   sprintf(buf,"miao:%d ",(int)miaos);//时分秒
			 			   hz_lcdDis(1,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==7){
				  	   if(SYS_MD==0){	BEEPS();
					   	   gzmax=gzmax+1;	
						  
						   if(gzmax>80){
						   	 gzmax=10;
						   }
						   sprintf(buf,"gzmax:%d ",(int)gzmax);//时分秒
			 			   hz_lcdDis(0,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==8){
				  	   if(SYS_MD==0){	BEEPS();
					   	  ;	
						   wenmax=wenmax+1; 
						   if(wenmax>45){
						   	 wenmax=10;
						   }
						   sprintf(buf,"wenmax:%d ",(int)wenmax);//时分秒
			 			   hz_lcdDis(1,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
				  if(mds==9){
				  	   if(SYS_MD==0){	BEEPS();
					   	   shimax=shimax+1;	 
						   if(shimax>80){
						   	 shimax=10;
						   }
						   sprintf(buf,"shimax:%d ",(int)shimax);//时分秒
			 			   hz_lcdDis(0,0,buf); //显示在第二行 
						   while(SYS_MD==0);
					   }
				  }
			}
		}
   }
 }

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

 基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划

 基于单片机智能围床灯,单片机实战项目,单片机,嵌入式硬件,婴儿床睡眠检测,原力计划文章来源地址https://www.toymoban.com/news/detail-731261.html

到了这里,关于基于单片机智能围床灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机毕设 基于单片机的智能快递柜设计与实现

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能快递柜设计与实现 大家可用于 课程设计 或 毕业设计 🧿 毕设项目分享:见文末! 一般来说,传统快递服务方式是人对人,即快递员进行揽件派送,与签收人进行面对面签收,确认无误后服务终

    2024年04月09日
    浏览(53)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(64)
  • 单片机项目分享 单片机 图像分类 智能识别机器人 - 物联网 深度学习 AI

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月21日
    浏览(66)
  • 基于单片机的智能小车设计

    随着科技的发展,智能机器人在日常生活中的应用越来越广泛。智能小车作为智能机器人的一种,具有便携性和多功能的特点,在教育、娱乐和工业等领域得到了广泛关注和应用。智能小车可以通过远程控制实现各种动作,如前进、后退、转弯等,并且可以通过搭载传感器实

    2024年02月06日
    浏览(55)
  • 基于单片机的智能风扇设计

    单片机类型:51单片机(普中) 传感器的使用: DS18B20温度传感器、LD3320语音模块、JQ8900-16P语音播报、LCD1602显示屏、hc-sr501人体感应模块等 设计有三个模式: 模式1:根据温度变化进行风扇速度的调节 模式2:自主控制温度的风扇变化 模式3:采用人体感应模块,监测风扇前是

    2024年01月18日
    浏览(45)
  • 基于单片机的智能衣柜设计

    随着科技的不断发展,人们对于生活品质的要求越来越高。智能衣柜作为智能家居的一个重要组成部分,能够为用户提供便捷、个性化的衣物管理服务。本文主要研究了基于单片机的智能衣柜设计,通过对硬件系统和软件系统的设计与实现,实现了衣柜的智能化管理。 智能衣

    2024年04月08日
    浏览(45)
  • 基于32单片机的智能插座

    目 录 摘 要 … …1 Abstract… …2引言… …2 第一章 绪论 5 1.1 开发背景与选题意义 5 1.1 国内基于传感器智能插座分析 5 1.2 本文任务与目标 6 1.3 本文所作的工作 6 1.4 本章小结 6 第二章 控制单元以及检测单元选择 6 2.1 STM32控制芯片选择 7 2.2 电压电流传感器的选择 7 2.3 ESP8266芯片

    2024年02月05日
    浏览(48)
  • 单片机设计基于51单片机的智能风扇控制系统设计与实现

      我们常见的电风扇一般只有四、五个风速档,用的是人工开关,而且并不是每个人家里都会有空调,或者在一些小型的工厂或者一些小型加工厂,这些地方都可能没有配备大型的中央空调系统这些东西,所以这些东西往往都会采用风扇这种小成本的东西来代替,但是不清楚

    2024年02月03日
    浏览(65)
  • 单片机课设———基于51单片机的智能风扇控制器(汇编语言)

    说明:单片机芯片为AT89C52,使用普中开发板,用汇编语言编程。 系统实现了对风扇的控制: (1)控制器面板包括:启/停键、模式选择键、风速键和类型选择键。 (2)模式分为:手动模式和自动温控模式。在温控模式下,风速键和类型选择键无效。 (3)风速分为:强、中

    2024年02月11日
    浏览(51)
  • 基于单片机的家用智能浇灌系统

    keil5,STM32CubeMX、Altium Designer 单片机:STM32F051K8Ux 土壤湿度传感器:TL - 69 温度传感器:DS18B20(数字传感器直接输出数字信号) OLED屏幕:OLED12864、 水泵:L9110等; 传感器采集空气和土壤的温度以及湿度,将数据传输给单片机,经单片机处理后输出在OLED显示屏上。 将温度传感

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包