加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于单片机的红外非接触人体测温仪阈值报警液晶显示设计

2024/12/13
2638
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有需要资料的可了解一下.docx

共1个文件

设计要求:

本设计由STC89C52单片机电路+1602液晶显示电路+MLX90614ESF红外非接触温度检测电路+按键电路+蜂鸣器报警电路

1、液晶实时显示MLX90614ESF检测的环境温度值和被测物体温度值,显示中E环境温度,O物体温度。

2、可以通过按键设置温度的阈值,如果MLX90614检测到的温度高于设置的阈值,则蜂鸣器报警,否则,蜂鸣器不报警。

include "1602.h"
#include "mlx90614.h"

sbit buzzer=P1^0; //引脚定义
sbit key1=P2^0;
sbit key2=P2^1;

unsigned long time_20ms;  //定时计数
char dis0[16];			  //液晶数组显示暂存
char dis1[16];
unsigned int setNum = 37; //设置值
//---------------------------------------
//Name: CALTEMP           
//Temperature data is T=(Data)*0.02-273.15
//---------------------------------------
bit rekey =0;//防止按键重复按下
bit disFlag =0;//更新显示标志
unsigned int  Tem;	   //温度
float objTemp,envTemp;	 //物体温度和环境温度

void Init_Timer0(void);	 //函数声明

void main (void)
{   
	Init_Timer0();        //定时器0初始化
	             
	LCD_Init();           //初始化液晶
	DelayMs(20);          //延时有助于稳定
	LCD_Clear();

	while (1)         //主循环
	{
		if(disFlag==1)	   //显示标志
		{
			Tem=ReadObjectTemp();	 //读取实物温度
			objTemp=(float)(Tem)*0.02-273.15;
	
			Tem=ReadEnvironTemp();	 //读取环境温度
			envTemp=(float)(Tem)*0.02-273.15;

			sprintf(dis0,"E: %4.1f'C   ",envTemp);//打印温度值
			LCD_Write_String(0,0,dis0);//显示
			sprintf(dis1,"O:%5.1f'C   %3d  ",objTemp,setNum);//打印温度设置值
			LCD_Write_String(0,1,dis1);//显示

			if(objTemp>setNum)
			{buzzer =0;	}	//温度高蜂鸣器鸣叫
			else
			{buzzer=1;}		//温度低 停止
			disFlag = 0;

		}

		if((key1 == 0)||(key2 == 0))   //有按键按下
		{
		 	if(rekey == 0)
			{
				DelayMs(10);
				if(key1 == 0)  //按键1按下
				{
					rekey =1;	//防止重复按下
					if(setNum<200) setNum++;	  //++
				}
				else if((key2 == 0))//按键2按下
				{
				 	rekey =1;	//防止重复按下
					if(setNum>0) setNum--;		//--
				}
			}
		}
		else
		{
			rekey = 0;	 //防止重复按下
		}					
	}
}


void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;

资料借鉴于此纷传

  • 有需要资料的可了解一下.docx
    下载

相关推荐