单片机全称单片微型计算(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); } }
|