|
單片機(jī)全稱(chēng)單片微型計(jì)算(Single Chip Microcomputer),就組成和功能而言,單片機(jī)正如一個(gè)微型計(jì)算機(jī)系統(tǒng),其內(nèi)部集成了中央處理器(CPU)、隨機(jī)數(shù)據(jù)存儲(chǔ)器(RAM)、只讀程序存儲(chǔ)器(ROM)定時(shí)器/計(jì)數(shù)器、輸入/輸出(I/O)接口電路和串行通信接口等主要功能部件。在發(fā)展過(guò)程中單片機(jī)不斷擴(kuò)展各種控制功能,獨(dú)立執(zhí)行內(nèi)部程序,本次設(shè)計(jì)就是在單片機(jī)的基礎(chǔ)上進(jìn)行開(kāi)發(fā)的。 信息采集以單片機(jī)為核心,由溫濕度采集電路、熱式電傳感器電路、煙霧采集電路、A/D轉(zhuǎn)換電路、時(shí)鐘電路以及復(fù)位電路組成,基于單片機(jī)對(duì)數(shù)字信號(hào)的高敏感性、可控性,溫濕度傳感器可以產(chǎn)生數(shù)字信號(hào),送給單片機(jī)顯示。采用MQ2煙霧傳感器采集煙霧數(shù)據(jù),通過(guò)AD0832轉(zhuǎn)換成數(shù)字兩,設(shè)計(jì)了以89c51基本系統(tǒng)為核心的一套監(jiān)測(cè)系統(tǒng)。該系統(tǒng)由信號(hào)采集、信號(hào)分析和信號(hào)處理三個(gè)部分組成的,實(shí)現(xiàn)程序的存儲(chǔ)、數(shù)據(jù)的實(shí)時(shí)顯示和報(bào)警功能。 溫濕度監(jiān)測(cè)系統(tǒng)是在環(huán)境試驗(yàn)、科學(xué)研究(諸如種植、養(yǎng)殖、生物工程、化工工程)、工業(yè)生產(chǎn)等領(lǐng)域應(yīng)用廣泛的現(xiàn)場(chǎng)環(huán)境控制系統(tǒng)。它能模擬各種環(huán)境條件,即按照實(shí)際要求精確測(cè)量環(huán)境的溫度和濕度,為研究不同的生化過(guò)程創(chuàng)造了良好的環(huán)境條件。因此,溫濕度監(jiān)測(cè)系統(tǒng)廣泛應(yīng)用在科研、現(xiàn)代農(nóng)業(yè)、醫(yī)藥、冶金、化工、林業(yè)、環(huán)境科學(xué)及生物遺傳工程等領(lǐng)域。
IMG_20190510_175143.jpg (1.78 MB, 下載次數(shù): 66)
下載附件
2019-5-10 18:49 上傳
IMG_20190510_175148.jpg (3.63 MB, 下載次數(shù): 82)
下載附件
2019-5-10 18:49 上傳
Screenshot_20190510-175346.jpg (281.08 KB, 下載次數(shù): 61)
下載附件
2019-5-10 18:49 上傳
QQ截圖20190510184526.png (67.55 KB, 下載次數(shù): 100)
下載附件
2019-5-10 18:49 上傳
QQ截圖20190510185213.png (62.45 KB, 下載次數(shù): 77)
下載附件
2019-5-10 18:52 上傳
部分代碼: #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標(biāo)志位,等于1時(shí)讀DHT11 uchar U8T_data_H=0; uchar U8RH_data_H=0; //U8T是溫度數(shù)據(jù)變量 U8RH濕度 bit tmp=1; //DHT11讀取成功標(biāo)志位 unsigned char DHT[5]; //DHT11讀取數(shù)據(jù)緩沖數(shù)組 uint DA; //煙霧數(shù)據(jù) 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); //讀取溫濕度數(shù)據(jù),如果讀取成功,返回1,否則是0 if(tmp) //如果是1,那就將讀取的數(shù)據(jù),賦值給相應(yīng)的數(shù)據(jù) { tmp=0; U8T_data_H= DHT[2]; U8RH_data_H=DHT[0]; } } void show() //顯示數(shù)據(jù) { 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); } }
|