1. 程式人生 > 實用技巧 >595【畢設課設】基於微控制器非接觸紅外體溫計測量閾值報警

595【畢設課設】基於微控制器非接觸紅外體溫計測量閾值報警

【資源下載】下載地址如下:
https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

51微控制器行動式紅外非接觸人體測溫儀閾值報警91
本系統由STC89C52微控制器、lcd1602液晶、MLX90614ESF紅外非接觸
溫度檢測、按鍵、蜂鳴器報警及電源組成。
1、液晶實時顯示MLX90614ESF檢測的環境溫度值和被測物體溫度值,
顯示中E環境溫度,O物體溫度。
2、可以通過按鍵設定溫度的閾值,如果檢測到的物體溫度高於設定的
閾值,則蜂鳴器報警,否則,蜂鳴器不報警。
3、測量距離一般在感測器上面1-2cm左右,不要緊貼著感測器或者
測量距離過遠。

unsigned long time_20ms=0xaaaaaaaa; 	//	系統定時計數
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++;	  //++
				}
點選並拖拽以移動