單片機全稱單片微型計算(Single Chip Microcomputer),就組成和功能而言,單片機正如一個微型計算機系統,其內部集成了中央處理器(CPU)、隨機數據存儲器(RAM)、只讀程序存儲器(ROM)定時器/計數器、輸入/輸出(I/O)接口電路和串行通信接口等主要功能部件。在發展過程中單片機不斷擴展各種控制功能,獨立執行內部程序,本次設計就是在單片機的基礎上進行開發的。 信息采集以單片機為核心,由溫濕度采集電路、熱式電傳感器電路、煙霧采集電路、A/D轉換電路、時鐘電路以及復位電路組成,基于單片機對數字信號的高敏感性、可控性,溫濕度傳感器可以產生數字信號,送給單片機顯示。采用MQ2煙霧傳感器采集煙霧數據,通過AD0832轉換成數字兩,設計了以89c51基本系統為核心的一套監測系統。該系統由信號采集、信號分析和信號處理三個部分組成的,實現程序的存儲、數據的實時顯示和報警功能。 溫濕度監測系統是在環境試驗、科學研究(諸如種植、養殖、生物工程、化工工程)、工業生產等領域應用廣泛的現場環境控制系統。它能模擬各種環境條件,即按照實際要求精確測量環境的溫度和濕度,為研究不同的生化過程創造了良好的環境條件。因此,溫濕度監測系統廣泛應用在科研、現代農業、醫藥、冶金、化工、林業、環境科學及生物遺傳工程等領域。
部分代碼: #include<reg52.h> #define uchar unsigned char #define uint unsigned int
#include"eeprom52.h" #include"dht11.c" #include "LCD1602.H" #include "Uart52_code.H" #include "0832.H"
#define uchar unsigned char //宏定義 #define uint unsigned int #define LCD1602_dat P0
sbit beep=P2^5;
sbit led_1=P3^2; sbit led_2=P3^3; sbit led_3=P3^4; sbit led_4=P3^5; sbit led_5=P3^6;
sbit Button_1=P2^0; sbit Button_2=P2^1; sbit Button_3=P2^2;
bit read_dht11=1; //讀DHT11標志位,等于1時讀DHT11 uchar U8T_data_H=0; uchar U8RH_data_H=0; //U8T是溫度數據變量 U8RH濕度 bit tmp=1; //DHT11讀取成功標志位 unsigned char DHT[5]; //DHT11讀取數據緩沖數組 uint DA; //煙霧數據 uchar jishu=0; uchar h; uint sum,pm_h;
uchar temp_h,temp_l,hum_h,hum_l,Set_Send,Send_mode,sys_time,T_sec; uchar bz,ms,state,Receive_Add,Receive_dat[50]; bit beep1,s1,Read_OK,Send_flag,key_1,key_2,key_3;
void DHT11_dat() { DHT_Start(); //DHT11IO初始化 tmp=DHT_ByteRead(&DHT); //讀取溫濕度數據,如果讀取成功,返回1,否則是0 if(tmp) //如果是1,那就將讀取的數據,賦值給相應的數據 { tmp=0; U8T_data_H= DHT[2]; U8RH_data_H=DHT[0]; } } void show() //顯示數據 { if(state==0) { LCD1602_write(0,0x80); LCD1602_writebyte("T: "); LCD1602_write(1,0x30+U8T_data_H/10%10); LCD1602_write(1,0x30+U8T_data_H%10); LCD1602_write(1,0xdf); LCD1602_writebyte("C "); LCD1602_writebyte("Hum:"); LCD1602_write(1,0x30+U8RH_data_H/10%10); LCD1602_write(1,0x30+U8RH_data_H%10); LCD1602_writebyte("%"); LCD1602_write(0,0xc0); LCD1602_writebyte("Smoke: "); if(DA%10000/1000==0) LCD1602_writebyte(" "); else LCD1602_write(1,DA%10000/1000+0x30); if((DA%1000/100+DA%10000/1000)==0) LCD1602_writebyte(" "); else LCD1602_write(1,DA%1000/100+0x30); if((DA%10000/1000+DA%1000/100+DA%100/10)==0) LCD1602_writebyte(" "); else LCD1602_write(1,DA%100/10+0x30); LCD1602_write(1,DA%10+0x30); LCD1602_writebyte("mg/m3"); } else { LCD1602_write(0,0x80); LCD1602_writebyte("TH:"); if(state==1&&s1==1) { LCD1602_writebyte(" "); }else { LCD1602_write(1,0x30+temp_h/10%10); LCD1602_write(1,0x30+temp_h%10); } LCD1602_write(1,0xdf); LCD1602_writebyte("TL:"); if(state==2&&s1==1) { LCD1602_writebyte(" "); }else { LCD1602_write(1,0x30+temp_l/10%10); LCD1602_write(1,0x30+temp_l%10); } LCD1602_write(1,0xdf); LCD1602_writebyte(" SH"); LCD1602_write(1,0);
LCD1602_write(0,0xc0); LCD1602_writebyte("HH:"); if(state==3&&s1==1) { LCD1602_writebyte(" "); }else { LCD1602_write(1,0x30+hum_h/10%10); LCD1602_write(1,0x30+hum_h%10); } LCD1602_writebyte(" HL:"); if(state==4&&s1==1) { LCD1602_writebyte(" "); }else { LCD1602_write(1,0x30+hum_l/10%10); LCD1602_write(1,0x30+hum_l%10); } LCD1602_writebyte(" "); if(state==5&&s1==1) { LCD1602_writebyte(" "); }else { if(pm_h%10000/1000==0) LCD1602_writebyte(" "); else LCD1602_write(1,pm_h%10000/1000+0x30); if((pm_h%1000/100+pm_h%10000/1000)==0) LCD1602_writebyte(" "); else LCD1602_write(1,pm_h%1000/100+0x30); if((pm_h%10000/1000+pm_h%1000/100+pm_h%100/10)==0) LCD1602_writebyte(" "); else LCD1602_write(1,pm_h%100/10+0x30); LCD1602_write(1,pm_h%10+0x30); } }
|