基于51单片机的烟雾检测+温度检测+蜂鸣器报警+光耦+风扇+LCD4602液晶显示(含原理图/PCB/代码)

这篇具有很好参考价值的文章主要介绍了基于51单片机的烟雾检测+温度检测+蜂鸣器报警+光耦+风扇+LCD4602液晶显示(含原理图/PCB/代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于51单片机的烟雾检测+温度检测+蜂鸣器报警+光耦+风扇+LCD4602液晶显示(含仿真/原理图/PCB/代码/模块资料)

讲在前面:

51单片机是大多数电子爱好者的入门级单片机,这款设计是一个比较综合的单片机设计。本文介绍了一个典型的51单片机设计,希望对各位有帮助。
本人也在其他平台开源了一些项目和分享:
点击进入B站传送门

概述

1)产品功能:

使用51单片机作为控制器,与ADC0832(ADC芯片)经行I2C通信,
采集烟雾检测模块和温度传感器模块的电压信号,实现烟雾浓度,锅具温度检测。
(锅具检测)检测锅具是否放置,人员暂离保护,锅具加减火控制(四档),排气扇控制,蜂鸣器提醒。

具体功能:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子

2)使用元器件:

电源降压芯片:L7805
单片机型号:STC89C52
ADC芯片:ADC0832
三极管:S8050直插
LCD1602显示屏
按键:直插6*6轻触开关
直插3mmLED

3)实物电路:

电源电路:
D1为防反接二极管,CE1和C2为输入滤波电容,CE2和C1为输出滤波电容。后接LED做电源指示灯。
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
单片机最小系统:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
ADC:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
烟雾传感器和温度传感器:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
人员检测和锅具检测的红外对管模块:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子

风扇和蜂鸣器:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
LCD1602显示屏:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
6个按键:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
指示灯:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
PCB效果图:

单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
实物:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子

4)Proteus实物电路:

由于Proteus没有传感器模块,所以用滑动变阻器模拟传感器模块输出的电压,红外对管模块用自锁开关来模拟
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子

5)程序:

变量声明:

//****************************** 基于 51 单片机的简易厨房安全检测控制系统 *******************************
#include <reg52.h>
#include <intrins.h>

/*已知数据类型重新定义*/
#define uchar unsigned char
#define uint unsigned int
/*引脚定义*/
//LCD1602
#define LCD1602_DB P0	//LCD1602数据总线
//sbit LCD1602_RS = P2^0;	 //RS端
//sbit LCD1602_RW = P2^1;	 //RW端
//sbit LCD1602_EN = P2^2;	 //EN端
sbit LCD1602_RS = P2^4;	 //RS端
sbit LCD1602_RW = P2^5;	 //RW端
sbit LCD1602_EN = P2^6;	 //EN端

//ADC0832
sbit cs = P1^0;//片选使能,低电平有效
sbit clk = P1^1;//芯片时钟输入
sbit dio = P1^2;//数据输入DI与输出DO

//四个按键输入
sbit key_temth_r = P3^0;		//增加温度阈值的按键
sbit key_temth_f = P3^1;		//减小温度阈值的按键
sbit key_gasth_r = P3^2;		//增加气体浓度阈值的按键
sbit key_gasth_f = P3^3;		//减小气体浓度阈值的按键
sbit key_fir_r = P3^4;			//加火按键
sbit key_fir_f = P3^5;			//减火按键


sbit Beep = P3^7;     //蜂鸣器
sbit FAN = P3^6; 			//风扇
sbit GuangOu_Guo = P2^5;	        //光耦检测锅具
sbit GuangOu_People = P2^6;				//光耦检测人
sbit Guo = P2^7;			//控制锅具烧火的引脚

//挡位指示的4个灯
sbit Guo1 = P1^4;     
sbit Guo2 = P1^5;	
sbit Guo3 = P1^6;	
sbit Guo4 = P1^7;	

uchar adc = 0;			//ADC读取的原始值
uint voltage = 0;		//ADC读取的原始值转换得到的电压值

uint gas = 0;				//创建气体浓度值
uint gas_th = 70;		//创建气体浓度阈值
uint tem = 0;				//创建温度值
uint tem_th = 270;	//创建温度阈值

uint fir = 0;				//  fir = 1,允许锅具使用,fir = 0,禁止锅具使用

uchar LED_buffer1[16] = {"Gas:        "};//ADC显示缓冲
uchar LED_buffer2[16] = {"Tem:       "};//电压显示缓冲

uint num = 0;				//延时计数值
uint GuangOu_Guo_falg = 1;			//锅具检测光耦标志位
uint GuangOu_People_falg = 1;		//人员检测光耦标志位

主程序:(挺简单的,没用定时器,全程用if else…)

void main()
{
	//初值设定
	Beep = 0;				//蜂鸣器
	FAN = 0;				//风扇
	Guo = 0;				//锅具使能
	Guo1 = 1;  Guo2 = 1;  Guo3 = 1;  Guo4 = 1;			//初始挡位全为0,   1:挡位灯不亮,0:挡位灯亮
	
	Init_LCD1602();//1602初始化
	LCD1602_Dis_Str(0, 0, " System Init ");	//显示字符串
	LCD1602_Dis_Str(0, 1, " Please Wait ");	//显示字符串
	DelayMS(1000);													//显示初始化字符串1s


	while(1)			// 一直循环
	{
		
		LCD1602Display();												//一直循环读取电压和显示数值
		GuangOu_Guo_falg = GuangOu_Guo;					//将光耦值赋值给标志位
		GuangOu_People_falg = GuangOu_People;		//将光耦值赋值给标志位
		
		if(GuangOu_Guo == 0)      							//有锅
		{
			if(GuangOu_People == 0)      					//有人
			{
				if(tem <= tem_th)										//温度未超过阈值,即没有烧锅
					{	
						Guo = 1; Beep = 0;							//满足以上3个条件才开启锅具使能
					} 
			}
		}
		
		if(GuangOu_Guo_falg == 1)	//无锅
		{		
				//等待一段时间后
				num ++;															//num自加
				if(num >= 1000)											//进行多次实验,一个while循环大约是10ms,1000就是10s
				{
					num  = 0;													//记得清零,方便下次使用
					Beep = 1;													//蜂鸣器报警
					Guo = 0;
				}		
		}		
		if(GuangOu_People_falg == 1)	//无人
		{		
				//等待一段时间后
				num ++;
				if(num >= 1000)
				{
					num  = 0;
					Beep = 1;
					Guo = 0;
				}		
		}
		
		
		if(gas >= gas_th){ FAN = 1; }else if(gas <= gas_th){ FAN = 0; }			//气体浓度超标反应和正常反应
		if(tem >= tem_th){	Guo = 0; }																			//温度过高,烧锅反应
		
		
		
		//6个按键
		if(key_temth_r == 0)
		{
			DelayMS(10);				 				//消抖
			if(key_temth_r == 0)
			{
				while(key_temth_r == 0);	//按下按键,松开后才算数
				tem_th += 10;							//温度阈值 +10
				if(tem_th >= 500){ tem_th = 500; }					//温度阈值限幅
			}
		}
		if(key_temth_f == 0)
		{
			DelayMS(10);
			if(key_temth_f == 0)
			{
				while(key_temth_f == 0);
				tem_th -= 10;
				if(tem_th <= 0){ tem_th = 0; }
			}
		}
		
		if(key_gasth_r == 0)
		{
			DelayMS(10);
			if(key_gasth_r == 0)
			{
				while(key_gasth_r == 0);
				gas_th += 10;
				if(gas_th >= 500){ gas_th = 500; }
			}
		}
		if(key_gasth_f == 0)
		{
			DelayMS(10);
			if(key_gasth_f == 0)
			{
				while(key_gasth_f == 0);
				gas_th -= 10;
				if(gas_th <= 0){ gas_th = 0; }
			}
		}
		
		// 加火减火
		if(key_fir_r == 0)
		{
			DelayMS(10);
			if(key_fir_r == 0)
			{
				while(key_fir_r == 0);
				fir += 1;
				if(fir >= 4){ fir = 4; }
			}
		}
		if(key_fir_f == 0)
		{
			DelayMS(10);
			if(key_fir_f == 0)
			{
				while(key_fir_f == 0);
				fir -= 1;
				if(fir <= 0){ fir = 0; }
			}
		}
		
		
		if(Guo == 1)			//如果锅具使能,才能进行加减火控制
		{
			if(fir ==0)
			{ Guo1 = 1;  Guo2 = 1;  Guo3 = 1;  Guo4 = 1; }
			if(fir ==1)
			{ Guo1 = 0;  Guo2 = 1;  Guo3 = 1;  Guo4 = 1; }
			if(fir ==2)
			{ Guo1 = 0;  Guo2 = 0;  Guo3 = 1;  Guo4 = 1; }
			if(fir ==3)
			{ Guo1 = 0;  Guo2 = 0;  Guo3 = 0;  Guo4 = 1; }
			if(fir ==4)
			{ Guo1 = 0;  Guo2 = 0;  Guo3 = 0;  Guo4 = 0; }
		}
		else if(Guo == 0)				//如果锅具没有被使能,则所有挡位关闭
		{
			Guo1 = 1;  Guo2 = 1;  Guo3 = 1;  Guo4 = 1;
		}

	}
}

演示视频:

待发布

主要内容差不多都在上面了,相信大家可以根据此文设计制作出属于自己的51单片机设计。
全部文件:
单片机,气体浓度监测,蜂鸣器,风扇这个核心电路,单片机开发,单片机,51单片机,stm32,嵌入式硬件,社交电子文章来源地址https://www.toymoban.com/news/detail-814352.html

到了这里,关于基于51单片机的烟雾检测+温度检测+蜂鸣器报警+光耦+风扇+LCD4602液晶显示(含原理图/PCB/代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于AT89C51单片机的温度检测报警设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87777752?spm=1001.2014.3001.5503 源码获取 主要内容: 基于51单片机设计一个温度检测报警器,至少具有以下功能:温度的检测和超过设定值时的报警功能 基本要求: 1、功能齐全,要配有功能说明;

    2024年02月03日
    浏览(51)
  • 7、基于51单片机智能热水器温度水温水位检测控制系统设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、Proteus仿真  七、程序源码 八、资料包括 随着社会的发展,人类科技的进步,各行各业都在使自己的产品智能化、数字化,因老式的热水器使用煤

    2024年02月09日
    浏览(71)
  • 基于51单片机多路温度检测proteus仿真 ds18b20

    本设计是基于51单片机多路温度检测proteus仿真_ds18b20(仿真+程序+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0042 功能说明: 通过对多路DS18B20温度传感器的数据采集,实现8路/4路温度采集并将数值显示在LCD显示屏上; 通过按键设置温度报警

    2024年02月12日
    浏览(40)
  • 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)

    当前文章介绍基于51单片机和SHT30传感器设计的环境温度与湿度检测设备。设备采用IIC模拟时序通信协议,能够实时监测环境的温度和湿度,并将数据通过LCD显示屏显示出来;可以广泛应用于室内环境监测、气象观测、农业温室监测等领域。 在本项目中,使用了51单片机作为主

    2024年02月13日
    浏览(38)
  • 基于51单片机的烟雾报警器设计

    硬件方案         火灾报警器采用51单片机为核心控制器,利用气体传感器MQ-2、ADC0809模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警

    2024年02月11日
    浏览(36)
  • day07 51单片机-18B20温度检测

    本案例讲解如何从18B20传感器获取温度信息并显示在LCD上。 1.2.1 硬件原理图 1.2.3 18B20工作原理 可以看到18B20有两根引脚负责供电,一根引脚负责数据交换。18B20就是通过数据线和单片机进行数据交换的。 1)18B20工作时序 2)初始化信号 3)写数据时序 写‘1’时序 写‘0’时序

    2024年04月23日
    浏览(27)
  • 基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

        功能介绍 以STM32单片机作为主控系统; LCD1602液晶显示屏来显示显示测得的值; SR501人体红外感应是否有人进行防盗; 通过烟雾传感器MQ-2获取前的烟雾值; 通过DHT11温湿度传感器来获取当前的温湿度; 所有的信息通过通过esp8266 wifi把数据传输到手机端进行显示;    

    2024年02月15日
    浏览(38)
  • 基于51单片机的温度报警器

    设计任务: 以51单片机为核心,设计和制作一个温度报警器,能在LCD上显示环境的温度与希望温度上下限阀值,并能设置希望温度上下限阀值,系统上电的时候显示的是当前环境温度和设定的温度阀值,通过按键来修改温度上下限阀值,再次上电时保持上一次的温度设置。根

    2024年02月11日
    浏览(35)
  • 基于51单片机的数字温度计【开源】

    (1)温度实时显示(LCD2864) (2)温度上限下线调节 (3)万年历功能 (4)超温报警 (5)年月日时分秒可调节 (6)温度测量精度0.0625℃ (7)节日自动判定 STC89c52,DS18B20,DS1302,按键模块。LCD12864 main.c LCD12864.c ( 主要一些延时和LCD12864的驱动) LCD12864.h (主要一些函数的声

    2024年02月10日
    浏览(40)
  • 基于51单片机的超声波测距及温度显示

    (仿真+程序+PCB+原理图+设计报告) 功能介绍 具体功能: 1.超声波测距传感器HC-SR04、温度传感器DS18B20将检测的数据传给51单片机; 2.LCD1602实时显示测得的距离和温度; 3.按键可以设置距离的上下限; 4.距离超过设定范围,蜂鸣器+LED产生声光报警; ​演示视频: 基于5

    2024年04月24日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包