基于51单片机的温度报警器

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

设计任务及要求

设计任务:

以51单片机为核心,设计和制作一个温度报警器,能在LCD上显示环境的温度与希望温度上下限阀值,并能设置希望温度上下限阀值,系统上电的时候显示的是当前环境温度和设定的温度阀值,通过按键来修改温度上下限阀值,再次上电时保持上一次的温度设置。根据温度传感器测得的温度做如下处理:温度当温度低于设定下限温度时,蜂鸣器发出报警声和绿光报警,并且通过继电器控制加热设备提升温度至正常温度,然后加热设备停止工作;当温度高于设定上限温度时,蜂鸣器发出报警声和红光报警,并且通过继电器控制散热设备降低温度至正常温度,然后散热设备停止工作。

设计要求:

(1)确定系统设计方案;
(2)进行系统的硬件设计;
(3)完成应用程序设计;
(4)应用系统的硬件和软件的调试;

硬件原理图

基于51单片机的温度报警器

部分程序代码

main.c

#include "public.h"
#include "lcd.h"
#include "temp.h"
#include "i2c.h"

sbit k3=P3^2;	//设置温度上下限   
sbit k1=P3^4;	//加			   
sbit k2=P3^5;	//减

sbit ledL=P1^0;
sbit ledH=P1^1;			  

sbit led=P2^4;     //电源指示灯

sbit beep=P1^5;	  //蜂鸣器报警
sbit relay=P1^4;  //加热或散热设备


char set_templ=22,set_temph=40;  //设定温度上下限默认值
u16 temp_val;  //检测的实际温度
u8 mode;  //温度模式

void Temp_DataPros()
{
	short temp;
	u8 temp_buf[5];
	temp=Ds18b20ReadTemp();
	temp_val=temp;	
	if(temp<0)
	{
		temp=-temp;
		LCD_Dispstring(2+5,0,"-");
	}
	else
	{
		LCD_Dispstring(2+5,0," ");
	}

	temp_buf[0]=temp/100+0x30;
	temp_buf[1]=temp%100/10+0x30;
	temp_buf[2]='.';
	temp_buf[3]=temp%100%10+0x30;
	temp_buf[4]='\0';
	LCD_Dispstring(2+6,0,temp_buf);		 //显示检测的温度xx.x

	temp_buf[0]=set_temph/10+0x30;
   	temp_buf[1]=set_temph%10+0x30;
	temp_buf[2]='\0';
	LCD_Dispstring(5,1,temp_buf);	  //显示设定的温度上限值xx

	temp_buf[0]=set_templ/10+0x30;
   	temp_buf[1]=set_templ%10+0x30;
	temp_buf[2]='\0';
	LCD_Dispstring(14,1,temp_buf);	 //显示设定的温度下限值xx
}



#define  K1_MODE  1
#define  K2_ADD  2
#define  K3_DEC  3

//mode:  0-单次扫描   1-连续扫描
u8 KEY_Scan(u8 mode)
{
	static u8 key=1;
	if(key&&(k1==0||k2==0||k3==0))
	{
		delay(1000);   //消抖
		key=0;
		if(k3==0)
		{
			return K1_MODE;
		}
		else if(k1==0)
		{
			return K2_ADD;
		}
		else if(k2==0)
		{
			return K3_DEC;	
		}
	}
	else if(k1==1&&k2==1&&k3==1)
	{
		key=1;	
	}
	if(mode)
	{
		key=1;
	}
	return 0;	
}

void KEY_Pros()
{
	u8 key;
	u8 temph_buf[3];

	key=KEY_Scan(0);
	
	if(key==K1_MODE)   //模式选择
	{
		mode++;
		LCD_Clear();

		if(mode==1)
		{
			LCD_Dispstring(0,0,"SETH:   C");		
		}
		else if(mode==2)
		{
			LCD_Dispstring(0,1,"SETL:   C");	
		}
		else 
		{
			mode=0;
			LCD_Dispstring(2,0,"Temp:     C");
			LCD_Dispstring(0,1,"SETH:  ");
			LCD_Dispstring(9,1,"SETL:  ");	
		}
	}
	if(mode==1)	 //温度上限设置
	{
		switch(key)	
		{
			case K2_ADD: 	   //加
						set_temph++;
						if(set_temph>=80)set_temph=80;
						break;
			case K3_DEC: 	 //减
						set_temph--;
						if(set_temph<=0)set_temph=0;
						break;
		}

		temph_buf[0]=set_temph/10+0x30;
		temph_buf[1]=set_temph%10+0x30;
		temph_buf[2]='\0';
	   	LCD_Dispstring(6,0,temph_buf);
		At24c02Write(0,set_temph);
	}

	else if(mode==2)  //温度下限设置
	{
		switch(key)	
		{
			case K2_ADD: 	   //加
						set_templ++;
						if(set_templ>=80)set_templ=80;
						break;
			case K3_DEC: 	 //减
						set_templ--;
						if(set_templ<=0)set_templ=0;
						break;
		}

		temph_buf[0]=set_templ/10+0x30;
		temph_buf[1]=set_templ%10+0x30;
		temph_buf[2]='\0';
	   	LCD_Dispstring(6,1,temph_buf);
		At24c02Write(2,set_templ);
	}
	


}



void sound()
{
	u8 i=50;
	while(i--)
	{
		beep=!beep;
		delay(10);
	}
}
void TempData_Compare()
{
	if(temp_val>set_temph*10)	//实际温度高于上限值   报警  
	{

		relay=0;
		ledH=0;
		ledL=1;
		sound();		
	}
	else if(temp_val<set_templ*10)	 //实际温度低于下限值   报警
	{

		relay=0;
		ledH=1;
		ledL=0;
		sound();		
	}
	else		      //实际温度在下限值和上限值之间   取消报警  取消加热  取消散热
	{
		ledH=1;
		ledL=1;
		relay=1;
	}
}

void kai_display()
{
	if(At24c02Read(255)!=18)
	{
		At24c02Write(0,set_temph);
		At24c02Write(2,set_templ);
		At24c02Write(255,18);	
	}
	else
	{
		set_temph=At24c02Read(0);
		set_templ=At24c02Read(2);	
	}

	LCD_Dispstring(2,0,"Temp:     C");
	LCD_Dispstring(0,1,"SETH:  ");
	LCD_Dispstring(9,1,"SETL:  ");
}

void main()
{
	ledH=1;
	ledL=1;
	relay=1;
	led=0;
	LCD_Init();
	kai_display();
	while(1)
	{
		if(mode==0)
			Temp_DataPros();
		KEY_Pros();	
		TempData_Compare();				
	}
}

如需具体工程代码可评论区留言文章来源地址https://www.toymoban.com/news/detail-503639.html

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

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

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

相关文章

  • MCU-51:单片机DS18B20温度报警器

    DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围:-55°C 到 +125°C 通信接口:1-Wire(单总线) 其它特征:可形成总线结构、内置温度报警功能、

    2024年02月02日
    浏览(54)
  • 51单片机DS18B20温度报警器proteus仿真设计_可调上下限

    (仿真+源码+原理图+报告+讲解视频) 原理图:Altium Designer 仿真版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0008 本设计系统是18b20温度报警系统数码管显示,可设置温度上限高温报警和下限低温报警,报警温度可精确到0.1度,并具有掉电保存功能,数

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

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

    2024年02月11日
    浏览(44)
  • 基于STM32单片机的温度报警器(数码管)(Proteus仿真+程序)

            本设计由STM32F103单片机最小系统+DS18B20温度传感器+数码管显示模块+声光报警模块+独立按键组成。 1、主控制器是STM32F103单片机 2、DS18B20温度传感器测量温度 3、数码管显示温度值,精度0.1摄氏度 4、三个按键可设置温度上限、下限报警值,温度超过上限、或者温度低

    2024年02月07日
    浏览(62)
  • 38、基于51单片机红外热释电人体感应蓝牙防盗报警器系统设计

    随着现在社会的发展,时代进步,高新技术的快速融入,人们的生活发生了巨大的改变,人们置购了大量高新技术的产品,许多高科技产品的使用越来越成为家庭生活的主旋律,因此人们对自己所处环境的安全要求就越来越高,特别是家居安全,不得不时刻留意不速之客的光

    2024年02月03日
    浏览(64)
  • 132、仿真-基于51单片机主从串口通信家用防盗报警器设计(程序+Proteus仿真+流程图等)

    毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​编辑 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号

    2024年02月16日
    浏览(42)
  • 定时报警器课程设计(基于单片机)

            定时报警器 设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管闪烁“00”(以1Hz闪烁),按键功能如下: (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此

    2024年02月09日
    浏览(43)
  • 基于单片机的家庭防盗报警器设计

    摘 要 II Abstract III 引 言 1 1 系统方案设计 4 1.1 方案论证 4 1.2 项目总体设计 5 2 项目硬件设计 7 2.1 单片机型号的选择 7 2.2 单片机的引脚说明 8 2.3 单片机的最小系统 9 2.3.1 时钟电路设计 9 2.3.2 复位电路设计 10 2.4 红外信号采集及其处理 11 2.5 蜂鸣器电路的设计 12 2.6 发光二极管电

    2024年03月12日
    浏览(52)
  • 单片机-烟雾报警器

    目       录 烟雾报警器 一、开题依据 二、软硬件环境 三、计划进度 四、关键技术 4.1 报警器设计所需资源 4.2 报警器设计原理与内容 五、核心芯片主要参数 5.1 主控芯片 5.1.1  AT89C52 单片机简介 5.1.2 主控电路在本系统中的运用 5.2 传感部分 5.2.1   数 / 模转换芯片 ADC0809

    2024年02月20日
    浏览(42)
  • 基于STM32单片机的温湿度检测报警器(数码管)(Proteus仿真+程序)

           本设计由STM32F103单片机最小系统+DHT11温湿度传感器+数码管显示模块+声光报警模块+独立按键组成。 1、主控制器是STM32F103单片机 2、DHT11传感器测量温度和湿度数据 3、数码管显示温度、湿度,精度1℃、1%RH 4、三个按键可设置温度、湿度上限报警值,温度或者湿度超过

    2024年02月03日
    浏览(77)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包