• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于單片機(jī)的紅外非接觸人體測(cè)溫儀閾值報(bào)警液晶顯示設(shè)計(jì)

2024/12/13
2716
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

共1個(gè)文件

設(shè)計(jì)要求:

本設(shè)計(jì)由STC89C52單片機(jī)電路+1602液晶顯示電路+MLX90614ESF紅外非接觸溫度檢測(cè)電路+按鍵電路+蜂鳴器報(bào)警電路。

1、液晶實(shí)時(shí)顯示MLX90614ESF檢測(cè)的環(huán)境溫度值和被測(cè)物體溫度值,顯示中E環(huán)境溫度,O物體溫度。

2、可以通過(guò)按鍵設(shè)置溫度的閾值,如果MLX90614檢測(cè)到的溫度高于設(shè)置的閾值,則蜂鳴器報(bào)警,否則,蜂鳴器不報(bào)警。

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

sbit buzzer=P1^0; //引腳定義
sbit key1=P2^0;
sbit key2=P2^1;

unsigned long time_20ms;  //定時(shí)計(jì)數(shù)
char dis0[16];			  //液晶數(shù)組顯示暫存
char dis1[16];
unsigned int setNum = 37; //設(shè)置值
//---------------------------------------
//Name: CALTEMP           
//Temperature data is T=(Data)*0.02-273.15
//---------------------------------------
bit rekey =0;//防止按鍵重復(fù)按下
bit disFlag =0;//更新顯示標(biāo)志
unsigned int  Tem;	   //溫度
float objTemp,envTemp;	 //物體溫度和環(huán)境溫度

void Init_Timer0(void);	 //函數(shù)聲明

void main (void)
{   
	Init_Timer0();        //定時(shí)器0初始化
	             
	LCD_Init();           //初始化液晶
	DelayMs(20);          //延時(shí)有助于穩(wěn)定
	LCD_Clear();

	while (1)         //主循環(huán)
	{
		if(disFlag==1)	   //顯示標(biāo)志
		{
			Tem=ReadObjectTemp();	 //讀取實(shí)物溫度
			objTemp=(float)(Tem)*0.02-273.15;
	
			Tem=ReadEnvironTemp();	 //讀取環(huán)境溫度
			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);//打印溫度設(shè)置值
			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;	//防止重復(fù)按下
					if(setNum<200) setNum++;	  //++
				}
				else if((key2 == 0))//按鍵2按下
				{
				 	rekey =1;	//防止重復(fù)按下
					if(setNum>0) setNum--;		//--
				}
			}
		}
		else
		{
			rekey = 0;	 //防止重復(fù)按下
		}					
	}
}


void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響		     
	TH0=(65536-20000)/256;		  //重新賦值 20ms
	TL0=(65536-20000)%256;

資料借鑒于此紛傳

  • 有需要資料的可了解一下.docx
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!