加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

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

12/13 08:09
1869
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

設(shè)計要求:

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

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

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

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

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

unsigned long time_20ms;  //定時計數(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();        //定時器0初始化
	             
	LCD_Init();           //初始化液晶
	DelayMs(20);          //延時有助于穩(wěn)定
	LCD_Clear();

	while (1)         //主循環(huán)
	{
		if(disFlag==1)	   //顯示標(biāo)志
		{
			Tem=ReadObjectTemp();	 //讀取實物溫度
			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位定時器,使用"|"符號可以在使用多個定時器時不受影響		     
	TH0=(65536-20000)/256;		  //重新賦值 20ms
	TL0=(65536-20000)%256;

資料借鑒于此紛傳

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

相關(guān)推薦

電子產(chǎn)業(yè)圖譜