595【畢設課設】基於微控制器非接觸紅外體溫計測量閾值報警
阿新 • • 發佈:2020-12-03
【資源下載】下載地址如下:
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++; //++ } 點選並拖拽以移動