|
基于單片機的家庭環境監測系統
制作出來的實物圖如下:
OE391K`9HB%AJ~}Y_)RSGU6.png (724.9 KB, 下載次數: 42)
下載附件
2019-5-21 18:22 上傳
電路原理圖如下:
EX7}JETB]TR54FXO~U.png (98.9 KB, 下載次數: 49)
下載附件
2019-5-21 18:22 上傳
單片機源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #include <absacc.h>
- #include <math.h>
- #include "uart.c"
- #include "delay.h"
- #include "0832.h"
- #define uchar unsigned char
- #define uint unsigned int
- #include "eeprom52.h"
- //T:23C P0.12mg/m3
- //H:45% C:000mL/m3
- sbit DATA = P2^0; //溫濕度
- sbit E=P2^5; //1602使能引腳
- sbit RS=P2^7; //1602數據/命令選擇引腳
- sbit RW=P2^6;
- sbit K1=P1^3;//設置鍵
- sbit K2=P1^4;//加
- sbit K3=P1^5;//減
- sbit K4=P1^6; //確認
- sbit LED6=P3^2; //煙霧報警
- sbit LED1=P3^3; //溫度上限
- sbit LED2=P3^4; //溫度下限
- sbit LED3=P3^5; //濕度上限
- sbit LED4=P3^6; //濕度下限
- sbit LED5=P3^7; //PM2.5報警
- sbit alarm=P1^7; //蜂鳴器
- uchar U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;
- uchar U8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;
- uchar Mode,humidity,temperature;
- uint DA;
- bit bdata FlagStartRH;
- uchar flag ;//記錄當前設置狀態
- uint count;
- uchar sec=0;
- #define NULL 0
- #define RsBuf_N 150
- bit flag_ok=0;
- uint sum;
- unsigned char xdata RsBuf[RsBuf_N]; //定義串口接收數據緩沖區
- uchar RsPoint;
- bit state=0;
- void TransmitText();
- unsigned char dianhuahaoma[12]="17606735816";
- void Delay1(uint j)
- {
- uchar i;
- for(;j>0;j--)
- {
- for(i=0;i<27;i++);
- }
- }
- void Delay_10us(void)
- {
- uchar i;
- i--;
- i--;
- i--;
- i--;
- i--;
- i--;
- }
- void COM(void)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- U8FLAG=2;
- while((!DATA)&&U8FLAG++);
- Delay_10us();
- Delay_10us();
- Delay_10us();
- U8temp=0;
- if(DATA)U8temp=1;
- U8FLAG=2;
- while((DATA)&&U8FLAG++);
- //超時則跳出for循環
- if(U8FLAG==1)break;
- //判斷數據位是0還是1
-
- // 如果高電平高過預定0高電平值則數據位為 1
-
- U8comdata<<=1;
- U8comdata|=U8temp; //0
- }//rof
- }
- //--------------------------------
- //-----溫濕度讀取子程序 ------------
- //--------------------------------
- //----以下變量均為全局變量--------
- //----溫度高8位== U8T_data_H------
- //----溫度低8位== U8T_data_L------
- //----濕度高8位== U8RH_data_H-----
- //----濕度低8位== U8RH_data_L-----
- //----校驗 8位 == U8checkdata-----
- //----調用相關子程序如下----------
- //---- Delay();, Delay_10us();,COM();
- //--------------------------------
- uchar RH(void)
- {
- //主機拉低18ms
- DATA=0;
- Delay1(180); //原來為5
- DATA=1;
- //總線由上拉電阻拉高 主機延時20us
- Delay_10us();
- Delay_10us();
- Delay_10us();
- Delay_10us();
- //主機設為輸入 判斷從機響應信號
- DATA=1;
- //判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行
- if(!DATA) //T !
- {
- U8FLAG=2;
- //判斷從機是否發出 80us 的低電平響應信號是否結束
- while((!DATA)&&U8FLAG++);
- U8FLAG=2;
- //判斷從機是否發出 80us 的高電平,如發出則進入數據接收狀態
- while((DATA)&&U8FLAG++);
- //數據接收狀態
- COM();
- U8RH_data_H_temp=U8comdata;
- COM();
- U8RH_data_L_temp=U8comdata;
- COM();
- U8T_data_H_temp=U8comdata;
- COM();
- U8T_data_L_temp=U8comdata;
- COM();
- U8checkdata_temp=U8comdata;
- DATA=1;
- //數據校驗
- U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
- if(U8temp==U8checkdata_temp)
- {
- U8RH_data_H=U8RH_data_H_temp;
- U8RH_data_L=U8RH_data_L_temp;
- U8T_data_H=U8T_data_H_temp;
- U8T_data_L=U8T_data_L_temp;
- U8checkdata=U8checkdata_temp;
- }
- return 1;
- }
- else //傳感器不響應
- {
- return 0;
- }
- }
- /********************************************************************
- * 文件名 : 液晶1602顯示.c
- * 描述 : 該程序實現了對液晶1602的控制。
- ***********************************************************************/
- /********************************************************************
- * 名稱 : delay()
- * 功能 : 延時,延時時間大概為140US。
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void delay()
- {
- int i,j;
- for(i=0; i<=10; i++)
- for(j=0; j<=2; j++);
- }
-
- /********************************************************************
- * 名稱 : enable(uchar del)
- * 功能 : 1602命令函數
- * 輸入 : 輸入的命令值
- * 輸出 : 無
- ***********************************************************************/
- void write_1602com(uchar del)
- {
- P0 = del;
- RS = 0;
- E = 1;
- delay();
- E = 0;
- delay();
- }
- /********************************************************************
- * 名稱 : write(uchar del)
- * 功能 : 1602寫數據函數
- * 輸入 : 需要寫入1602的數據
- * 輸出 : 無
- ***********************************************************************/
- void write_1602dat(uchar del)
- {
- P0 = del;
- RS = 1;
- E = 1;
- delay();
- E = 0;
- delay();
- }
- /********************************************************************
- * 名稱 : L1602_init()
- * 功能 : 1602初始化,請參考1602的資料
- * 輸入 : 無
- * 輸出 : 無
- ***********************************************************************/
- void L1602_init(void)
- {
- write_1602com(0x38);
- write_1602com(0x0c);
- write_1602com(0x06);
- write_1602com(0x01); //清屏要放在最后
- write_1602com(0x80);
- write_1602dat('W');
- write_1602dat('e');
- write_1602dat('l');
- write_1602dat('c');
- write_1602dat('o');
- write_1602dat('m');
- write_1602dat('e');
- write_1602dat(' ');
- write_1602dat('t');
- write_1602dat('o');
- write_1602dat(' ');
- write_1602dat('u');
- write_1602dat('s');
- write_1602dat('e');
- write_1602com(0x80+0x40);
- write_1602dat(' ');
- write_1602dat(' ');
- write_1602dat(' ');
- write_1602dat(' ');
- write_1602dat(' ');
- write_1602dat('I');
- write_1602dat('n');
- write_1602dat('i');
- write_1602dat('t');
- write_1602dat('.');
- write_1602dat('.');
- write_1602dat('.');
- }
- //T:23C P0.12mg/m3
- //H:45% C:000mL/m3
- void display()
- {
- write_1602com(0x82);
- write_1602dat(temperature%100/10+0x30);
- write_1602dat(temperature%100%10+0x30);
- write_1602com(0xc2);
- write_1602dat(humidity%100/10+0x30);
- write_1602dat(humidity%100%10+0x30);
- write_1602com(0x87);
- write_1602dat(PM%10000/1000+0x30);
- write_1602dat('.');
- write_1602dat(PM%1000/100+0x30);
- write_1602dat(PM%100/10+0x30);
- write_1602com(0xc8);
- write_1602dat(MQ/100+0x30);
- write_1602dat(MQ%100/10+0x30);
- write_1602dat(MQ%10+0x30);
- }
- void display_1()
- {
- write_1602com(0x83);
- write_1602dat(TH%100/10+0x30);
- write_1602dat(TH%100%10+0x30);
- write_1602com(0x8c);
- write_1602dat(TL%100/10+0x30);
- write_1602dat(TL%100%10+0x30);
- write_1602com(0xc3);
- write_1602dat(HH%100/10+0x30);
- write_1602dat(HH%100%10+0x30);
- write_1602com(0xcc);
- write_1602dat(HL%100/10+0x30);
- write_1602dat(HL%100%10+0x30);
- }
- void display_2()
- {
- write_1602com(0x86);
- write_1602dat(PMH%1000/100+0x30);
- write_1602dat('.');
- write_1602dat(PMH%100/10+0x30);
- write_1602dat(PMH%10+0x30);
- write_1602com(0xc7);
- write_1602dat(MQH/100+0x30);
- write_1602dat(MQH%100/10+0x30);
- write_1602dat(MQH%10+0x30);
- }
- void write_string(uchar * str)
- {
- while( * str)
- {
- write_1602dat(* str);
- str++;
- }
- }
- /***********************發送TEXT短信息********************************
- */
- void TransmitText() //發送號碼 發送內容,字母或數字
- {
- // uchar i=5,j=5;
- uchar send_number;
-
- SendString("AT+CMGF=1\r\n");
-
- delayms_1000ms();
-
- SendString("AT+CSCS=\"UCS2\"\r\n");
-
- delayms_1000ms();
-
- SendString("AT+CSMP=17,0,2,25\r\n");
-
- delayms_1000ms();
-
- SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
- SendASC('"');
- for(send_number=0;send_number<11;send_number++)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(dianhuahaoma[send_number]);
- }
- SendASC('"');
- SendASC('\r'); //發送回車指令//
- SendASC('\n'); //發送換行指令//
-
- delayms_1000ms();
- delayms_1000ms();
- delayms_1000ms();
- SendString("5F53524D6E295EA6FF1A"); //當前溫度:
- if(temperature/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(temperature/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(temperature%10+0x30);
- SendString("2103"); //攝氏度符號
- SendString("0020"); //發送空格
- SendString("6E295EA64E0A9650FF1A"); //溫度上限:
- if(TH/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(TH/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(TH%10+0x30);
- SendString("2103"); //攝氏度符號
- SendString("0020"); //發送空格
- SendString("6E295EA64E0B9650FF1A"); //溫度下限:
- if(TL/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(TL/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(TL%10+0x30);
- SendString("2103"); //攝氏度符號
- SendString("0020"); //發送空格
- if(temperature>=TH)
- SendString("6E295EA68FC79AD88BF76CE8610FFF01"); //溫度過高請注意!
- if(temperature<=TL)
- SendString("6E295EA68FC74F4E8BF76CE8610FFF01"); //溫度過低請注意!
- SendString("0020"); //發送空格
- SendString("5F53524D6E7F5EA6FF1A"); //當前濕度:
- if(humidity/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(humidity/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(humidity%10+0x30);
- SendString("0025"); //百分號符號
- SendString("0020"); //發送空格
- SendString("6E7F5EA64E0A9650FF1A"); //濕度上限:
- if(HH/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(HH/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(HH%10+0x30);
- SendString("0025"); //百分號符號
- SendString("0020"); //發送空格
- SendString("6E7F5EA64E0B9650FF1A"); //濕度下限:
- if(HL/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(HL/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(TL%10+0x30);
- SendString("0025"); //百分號符號
- SendString("0020"); //發送空格
- if(humidity>=HH)
- SendString("6E7F5EA68FC79AD88BF76CE8610FFF01"); //濕度過高請注意!
- if(humidity<=HL)
- SendString("6E7F5EA68FC74F4E8BF76CE8610FFF01"); //濕度過低請注意!
- SendString("0020"); //發送空格
- delayms_1000ms();
- delayms_1000ms();
- SendASC(0x1a);
-
- SendASC('\r');
- SendASC('\n');
- delayms_1000ms();
- RsPoint=0;
- delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
- delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
- delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
- delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
- delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();delayms_1000ms();
- SendString("AT+CMGF=1\r\n");
-
- delayms_1000ms();
-
- SendString("AT+CSCS=\"UCS2\"\r\n");
-
- delayms_1000ms();
-
- SendString("AT+CSMP=17,0,2,25\r\n");
-
- delayms_1000ms();
- SendString("AT+CMGS="); //信息發送指令 AT+CMGS=//
- SendASC('"');
- for(send_number=0;send_number<11;send_number++)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(dianhuahaoma[send_number]);
- }
- SendASC('"');
- SendASC('\r'); //發送回車指令//
- SendASC('\n'); //發送換行指令//
-
- delayms_1000ms();
- delayms_1000ms();
- delayms_1000ms();
- SendString("0050004D0032002E0035FF1A"); //PM2.5:
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PM/1000+0x30);
- SendString("002E"); //.
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PM%1000/100+0x30);
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PM%100/10+0x30);
- SendString("006D0067002F006D0033"); //mg/m3
- SendString("0020"); //發送空格
- SendString("0050004D0032002E003562A58B66503CFF1A"); //PM2.5報警值:
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PMH/100+0x30);
- SendString("002E"); //.
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PMH%100/10+0x30);
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(PMH%10+0x30);
- SendString("006D0067002F006D0033"); //mg/m3
- SendString("0020"); //發送空格
- SendString("70DF96FEFF1A"); //煙霧:
- if(MQ/100!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQ/100+0x30);
- }
- if(MQ/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQ%100/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQ%10+0x30);
- SendString("006D0067002F006D0033"); //mg/m3
- SendString("0020"); //發送空格
- SendString("70DF96FE62A58B66503CFF1A"); //煙霧報警值:
- if(MQH/100!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQH/100+0x30);
- }
- if(MQH/10!=0)
- {
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQH%100/10+0x30);
- }
- SendASC('0');
- SendASC('0');
- SendASC('3');
- SendASC(MQH%10+0x30);
- SendString("006D0067002F006D0033"); //mg/m3
-
- delayms_1000ms();
- delayms_1000ms();
- SendASC(0x1a);
- SendASC('\r');
- SendASC('\n');
- SendString("AT+CMGF=1\r\n");
- delayms_1000ms();
- RsPoint=0;
- }
- /***按鍵函數***/
- void KEY()
- {
- if(K1==0)
- {
- Delay1(200);
- if(K1==0)
- {
- flag++;
- if(flag==1)
- {
- FlagStartRH = 0;
- TR0 = 0;
- alarm=1;
- write_1602com(0x80);
- write_string("TH: C TL: C");
- write_1602com(0xc0);
- write_string("HH: % HL: % ");
- write_1602com(0x85);
- write_1602dat(0xdf);
- write_1602com(0x8e);
- write_1602dat(0xdf);
- display_1();
- write_1602com(0x84);
- write_1602com(0x0f);
- }
- else if(flag==2)
- write_1602com(0x8d);
- else if(flag==3)
- write_1602com(0xc4);
- else if(flag==4)
- write_1602com(0xcd);
- else if(flag==5)
- {
- write_1602com(0x80);
- write_string("PM2.5: . mg/m3 ");
- write_1602com(0xc0);
- write_string(" MQ : mL/m3 ");
- display_2();
- write_1602com(0x89);
- }
- else if(flag==6)
- write_1602com(0xc9);
- else
- {
- flag=1;
- write_1602com(0x80);
- write_string("TH: C TL: C");
- write_1602com(0xc0);
- write_string("HH: % HL: % ");
- write_1602com(0x85);
- write_1602dat(0xdf);
- write_1602com(0x8e);
- write_1602dat(0xdf);
- display_1();
- write_1602com(0x84);
- }
- while(!K1);
- }
- }
- if(K2==0)
- {
- Delay1(200);
- if(K2==0)
- {
- switch (flag)
- {
- case 1: TH++;
- if(TH>99)
- TH=0;
- if(TH<=TL)
- TH=TL+1;
- write_1602com(0x83);
- write_1602dat(TH/10+0x30);
- write_1602dat(TH%10+0x30);
- write_1602com(0x84);
- break;
- case 2: TL++;
- if(TL>98)
- TL=0;
- if(TL>=TH)
- TL=TH-1;
- write_1602com(0x8c);
- write_1602dat(TL/10+0x30);
- write_1602dat(TL%10+0x30);
- write_1602com(0x8d);
- break;
- case 3: HH++;
- if(HH>99)
- HH=0;
- if(HH<=HL)
- HH=HL+1;
- write_1602com(0xc3);
- write_1602dat(HH/10+0x30);
- write_1602dat(HH%10+0x30);
- write_1602com(0xc4);
- break;
- case 4: HL++;
- if(HL>98)
- HL=0;
- if(HL>=HH)
- HL=HH-1;
- write_1602com(0xcc);
- write_1602dat(HL/10+0x30);
- write_1602dat(HL%10+0x30);
- write_1602com(0xcd);
- break;
- case 5: PMH++;
- if(PMH>200)
- PMH=200;
- write_1602com(0x86);
- write_1602dat(PMH%1000/100+0x30);
- write_1602dat('.');
- write_1602dat(PMH%100/10+0x30);
- write_1602dat(PMH%10+0x30);
- write_1602com(0x89);
- break;
- case 6: MQH++;
- if(MQH>200)
- MQH=200;
- write_1602com(0xc7);
- write_1602dat(MQH%1000/100+0x30);
- write_1602dat(MQH%100/10+0x30);
- write_1602dat(MQH%10+0x30);
- write_1602com(0xc9);
- break;
- }
- while(!K2);
- }
- }
- if(K3==0)
- {
- Delay1(200);
- if(K3==0)
- {
- switch (flag)
- {
- case 1: TH--;
- if(TH>99)
- TH=99;
- if(TH<=TL)
- TH=TL+1;
- write_1602com(0x83);
- write_1602dat(TH/10+0x30);
- write_1602dat(TH%10+0x30);
- write_1602com(0x84);
- break;
- case 2: TL--;
- if(TL>99)
- TL=98;
- if(TL>=TH)
- TL=TH-1;
- write_1602com(0x8c);
- write_1602dat(TL/10+0x30);
- write_1602dat(TL%10+0x30);
- write_1602com(0x8d);
- break;
- case 3: HH--;
- if(HH>99)
- HH=99;
- if(HH<=HL)
- HH=HL+1;
- write_1602com(0xc3);
- write_1602dat(HH/10+0x30);
- write_1602dat(HH%10+0x30);
- write_1602com(0xc4);
- break;
- case 4: HL--;
- if(HL>99)
- HL=98;
- if(HL>=HH)
- HL=HH-1;
- write_1602com(0xcc);
- write_1602dat(HL/10+0x30);
- write_1602dat(HL%10+0x30);
- write_1602com(0xcd);
- break;
- case 5: PMH--;
- if(PMH<=0)
- PMH=0;
- write_1602com(0x86);
- write_1602dat(PMH%1000/100+0x30);
- write_1602dat('.');
- write_1602dat(PMH%100/10+0x30);
- write_1602dat(PMH%10+0x30);
- write_1602com(0x89);
- break;
- case 6: MQH--;
- if(MQH<=0)
- MQH=0;
- write_1602com(0xc7);
- write_1602dat(MQH%1000/100+0x30);
- write_1602dat(MQH%100/10+0x30);
- write_1602dat(MQH%10+0x30);
- write_1602com(0xc9);
- break;
- }
- while(!K3);
- }
- }
- if(K4==0)
- {
- Delay1(200);
- if(K4==0)
- {
- FlagStartRH = 1;
- TR0 = 1;
- write_1602com(0x0c);
- write_1602com(0x80);
- write_string("T: C P . mg/m3");
- write_1602com(0xc0);
- write_string("H: % M: mL/m3");
- display();
- flag=0;
- write_eeprom();
- }
- }
- }
- void Onealarm()
- {
- alarm=0;
- Delay1(200);
- alarm=1;
- Delay1(200);
- }
- //T:23C P0.12mg/m3
- //H:45% C:000mL/m3
- /********************************************************************
- * 名稱 : Main()
- * 功能 : 主函數
- ***********************************************************************/
- void main()
- {
- uint testnum;
- uchar ys;
-
- Uart_init();
- RW=0;
- init_eeprom();
- read_eeprom();
- L1602_init();
- for(ys=0;ys<10;ys++)
- {
- delayms_1000ms();
- }
- SendString("AT\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("AT\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("ati\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("ati\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("ATH\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("AT+CMGF=1\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("AT+CNMI=2,1,0,0,0\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("ATH\r\n");
- delayms_1000ms();
- delayms_1000ms();
- SendString("AT+CSCS=");
- SendASC('"');
- SendString("UCS2");
- SendASC('"');
- SendString("\r\n");
- delayms_1000ms();
- write_1602com(0x80);
- write_string("T: C P . mg/m3");
- write_1602com(0xc0);
- write_string("H: % M: mL/m3");
- // Uart_init();
- // TH=30;TL=20;HH=80;HL=50;COH=100;PMH=100;
- while(1)
- {
- KEY();
- if(flag==0)
- {
- if(FlagStartRH==1)
- {
- testnum = RH();
- FlagStartRH = 0;
- // TR0 = 1;
- humidity = U8RH_data_H; //讀出溫濕度,只取整數部分
- temperature = U8T_data_H;
-
- DA=sum/40;
- sum=0;
- PM=DA*(float)(DA/4);
- MQ=adc0832(1);
- display();
- }
- if(temperature>=TH)
- LED1=0;
- else
- LED1=1;
- if(temperature<=TL)
- LED2=0;
- else
- LED2=1;
- if(humidity>=HH)
- LED3=0;
- else
- LED3=1;
- if(humidity<=HL)
- LED4=0;
- else
- LED4=1;
- if(PM/10>=PMH)
- LED5=0;
- else
- LED5=1;
- if(MQ>=MQH)
- LED6=0;
- else
- LED6=1;
- if(temperature>=TH||temperature<=TL||humidity>=HH||humidity<=HL||PM/10>=PMH||MQ>=MQH)
- {
- Onealarm();
- }
- else
- alarm=1;
- if((temperature>=TH||temperature<=TL||humidity>=HH||humidity<=HL||PM/10>=PMH||MQ>=MQH)&&flag_ok==1)
- {
- TR0=0;
- TransmitText();
- flag_ok=0;
- TR0=1;
- }
- }
- }
- }
- void timer0() interrupt 1
- {
- TH0=0x4b;
- TL0=0xff;
- count++;
- DA=adc0832(0);
- sum=sum+DA;
- if(count>=40)
- {
- count=0;
- FlagStartRH=1;
- if(flag_ok==0)
- {
- sec++;
- if(sec>=10)
- {
- sec=0;
- flag_ok=1;
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
基于單片機的家庭環境監測系統.rar
(2.82 MB, 下載次數: 225)
2019-5-21 18:22 上傳
點擊文件名下載附件
全套系統 下載積分: 黑幣 -5
|
-
-
參考文檔.7z
2021-5-31 05:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.65 MB, 下載次數: 146, 下載積分: 黑幣 -5
-
-
6-制作詳解.rar
2019-5-23 14:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.39 MB, 下載次數: 121, 下載積分: 黑幣 -5
評分
-
查看全部評分
|