居家養(yǎng)老監(jiān)護(hù)系統(tǒng)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (62.55 KB, 下載次數(shù): 28)
下載附件
2022-4-14 16:59 上傳
Altium Designer畫的居家養(yǎng)老監(jiān)護(hù)系統(tǒng)PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (60.01 KB, 下載次數(shù): 24)
下載附件
2022-4-14 16:58 上傳
安卓app 用e4a寫的:
51hei.png (53.79 KB, 下載次數(shù): 30)
下載附件
2022-4-14 16:58 上傳
單片機(jī)源程序如下:
- #include "reg52.h" //調(diào)用單片機(jī)頭文件
- #include "delay.h"
- #include "oled.h"
- #include "dht11.h"
- #include "esp8266.h"
- #define uchar unsigned char //無符號(hào)字符型 宏定義 變量范圍0~255
- #define uint unsigned int //無符號(hào)整型 宏定義 變量范圍0~65535
- //繼電器
- sbit relay1=P1^6;
- sbit relay2=P1^5;
- sbit relay3=P1^4;
- sbit relay4=P1^3;
- sbit relay5=P3^6;
- sbit relay6=P3^7;
- //按鍵接口
- sbit K0=P2^6; //一鍵啟動(dòng)
- sbit K1=P2^7; //一鍵關(guān)閉
- sbit K2=P2^5; //R1開/關(guān)
- sbit K3=P2^4; //R2開/關(guān)
- sbit K4=P2^3; //R3開/關(guān)
- sbit K5=P2^2; //R4開/關(guān)
- sbit K6=P2^1; //R5開/關(guān)
- sbit K7=P2^0; //R6開/關(guān)
- //蜂鳴器
- sbit beep=P1^0;
- uchar code table[]="0123456789.";
- uchar T=0,H=0,Receive;
- uchar Recive_table[40]; //用于接收wifi模塊反饋到MCU上的數(shù)據(jù)
- uchar Send_table[10]="0000000000";//前面4位溫濕度,后面6位繼電器狀態(tài),1表示開,0表示關(guān)
- void ESP8266_Senddate()
- {
- delay_uint(100);
- ESP8266_Set("AT+CIPSEND=0,10");//發(fā)送10個(gè)字節(jié)
- delay_uint(100);
- ESP8266_Set(Send_table);
- }
- void DHT11_receive() //接收40位的數(shù)據(jù)
- {
- uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
- EA=0; //關(guān)閉中斷,防止中斷影響DHT11出現(xiàn)單片機(jī)死機(jī)
- DHT11_start();
- if(Data==0)
- {
- while(Data==0); //等待拉高
- DHT11_delay_us(40); //拉高后延時(shí)80us
- R_H=DHT11_rec_byte(); //接收濕度高八位
- R_L=DHT11_rec_byte(); //接收濕度低八位
- T_H=DHT11_rec_byte(); //接收溫度高八位
- T_L=DHT11_rec_byte(); //接收溫度低八位
- revise=DHT11_rec_byte(); //接收校正位
- DHT11_delay_us(25); //結(jié)束
- EA=1;
- if((R_H+R_L+T_H+T_L)==revise) //校正
- {
- RH=R_H;
- RL=R_L;
- TH=T_H;
- TL=T_L;
- }
- T=TH;
- H=RH;
- //獲取當(dāng)前溫濕度值并顯示
- OLED_ShowChar(72,0,T%100/10,16);
- OLED_ShowChar(88,0,T%10,16);
- OLED_ShowChar(72,2,H%100/10,16);
- OLED_ShowChar(88,2,H%10,16);
- //溫度
- Send_table[0]=table[T%100/10];
- Send_table[1]=table[T%10];
- //濕度
- Send_table[2]=table[H%100/10];
- Send_table[3]=table[H%10];
- }
- }
- /*****
- 對(duì)接收的數(shù)據(jù)處理
- ******/
- void ESP8266_Recive_Estimate()
- {
- if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的數(shù)據(jù)為+IPD時(shí)進(jìn)入控制
- {
- //一鍵啟動(dòng)
- if((Recive_table[9]=='a'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- relay1=1;
- relay2=1;
- relay3=1;
- relay4=1;
- relay5=1;
- relay6=1;
- OLED_ShowChinese(24,4,11,16);//繼電器1
- OLED_ShowChinese(68,4,11,16);//繼電器2
- OLED_ShowChinese(112,4,11,16);//繼電器3
- OLED_ShowChinese(24,6,11,16);//繼電器4
- OLED_ShowChinese(68,6,11,16);//繼電器5
- OLED_ShowChinese(112,6,11,16);//繼電器6
- Send_table[4]=Send_table[5]=Send_table[6]=Send_table[7]=Send_table[8]=Send_table[9]=table[1];
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //一鍵關(guān)閉
- if((Recive_table[9]=='b'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- relay1=0;
- relay2=0;
- relay3=0;
- relay4=0;
- relay5=0;
- relay6=0;
- OLED_ShowChinese(24,4,12,16);//繼電器1
- OLED_ShowChinese(68,4,12,16);//繼電器2
- OLED_ShowChinese(112,4,12,16);//繼電器3
- OLED_ShowChinese(24,6,12,16);//繼電器4
- OLED_ShowChinese(68,6,12,16);//繼電器5
- OLED_ShowChinese(112,6,12,16);//繼電器6
- Send_table[4]=Send_table[5]=Send_table[6]=Send_table[7]=Send_table[8]=Send_table[9]=table[0];
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器1控制
- if((Recive_table[9]=='c'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[4]-'0')==1){Send_table[4]=table[0];OLED_ShowChinese(24,4,12,16);relay1=0;}
- else{Send_table[4]=table[1];OLED_ShowChinese(24,4,11,16);relay1=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器2控制
- if((Recive_table[9]=='d'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[5]-'0')==1){Send_table[5]=table[0];OLED_ShowChinese(68,4,12,16);relay2=0;}
- else{Send_table[5]=table[1];OLED_ShowChinese(68,4,11,16);relay2=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器3控制
- if((Recive_table[9]=='e'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[6]-'0')==1){Send_table[6]=table[0];OLED_ShowChinese(112,4,12,16);relay3=0;}
- else{Send_table[6]=table[1];OLED_ShowChinese(112,4,11,16);relay3=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器4控制
- if((Recive_table[9]=='f'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[7]-'0')==1){Send_table[7]=table[0];OLED_ShowChinese(24,6,12,16);relay4=0;}
- else{Send_table[7]=table[1];OLED_ShowChinese(24,6,11,16);relay4=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器5控制
- if((Recive_table[9]=='g'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[8]-'0')==1){Send_table[8]=table[0];OLED_ShowChinese(68,6,12,16);relay5=0;}
- else{Send_table[8]=table[1];OLED_ShowChinese(68,6,11,16);relay5=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //繼電器6控制
- if((Recive_table[9]=='h'))
- {
- //提示音
- beep=1;
- delay_uint(100);
- beep=0;
- if((Send_table[9]-'0')==1){Send_table[9]=table[0];OLED_ShowChinese(112,6,12,16);relay6=0;}
- else{Send_table[9]=table[1];OLED_ShowChinese(112,6,11,16);relay6=1;}
- Recive_table[9]=' ';
- ESP8266_Senddate();
- }
- //APP連接后一直發(fā)送
- if((Recive_table[9]=='I'))
- {
- ESP8266_Senddate();
- }
- }
- }
- /****
- 按鍵控制
- ****/
- void keyscan()
- {
- //一鍵啟動(dòng)
- if(K0==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K0==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //啟動(dòng)所有繼電器
- relay1=1;
- relay2=1;
- relay3=1;
- relay4=1;
- relay5=1;
- relay6=1;
- Send_table[4]=Send_table[5]=Send_table[6]=Send_table[7]=Send_table[8]=Send_table[9]='1';
- OLED_ShowChinese(24,4,11,16);//繼電器1
- OLED_ShowChinese(68,4,11,16);//繼電器2
- OLED_ShowChinese(112,4,11,16);//繼電器3
- OLED_ShowChinese(24,6,11,16);//繼電器4
- OLED_ShowChinese(68,6,11,16);//繼電器5
- OLED_ShowChinese(112,6,11,16);//繼電器6
- while(K0==0);//等待按鍵釋放
- }
- }
- //一鍵關(guān)閉
- if(K1==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K1==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //啟動(dòng)所有繼電器
- relay1=0;
- relay2=0;
- relay3=0;
- relay4=0;
- relay5=0;
- relay6=0;
- Send_table[4]=Send_table[5]=Send_table[6]=Send_table[7]=Send_table[8]=Send_table[9]='0';
- OLED_ShowChinese(24,4,12,16);//繼電器1
- OLED_ShowChinese(68,4,12,16);//繼電器2
- OLED_ShowChinese(112,4,12,16);//繼電器3
- OLED_ShowChinese(24,6,12,16);//繼電器4
- OLED_ShowChinese(68,6,12,16);//繼電器5
- OLED_ShowChinese(112,6,12,16);//繼電器6
- while(K1==0);//等待按鍵釋放
- }
- }
- //繼電器1
- if(K2==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K2==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- if(relay1==0){OLED_ShowChinese(24,4,12,16);Send_table[4]='0';}
- else {OLED_ShowChinese(24,4,11,16);Send_table[4]='1';}
- while(K2==0);//等待按鍵釋放
- }
- }
- //繼電器2
- if(K3==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K3==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- relay2=~relay2;
- if(relay2==0){OLED_ShowChinese(68,4,12,16);Send_table[5]='0';}
- else {OLED_ShowChinese(68,4,11,16);Send_table[5]='1';}
- while(K3==0);//等待按鍵釋放
- }
- }
- //繼電器3
- if(K4==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K4==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- relay3=~relay3;
- if(relay3==0){OLED_ShowChinese(112,4,12,16);Send_table[6]='0';}
- else {OLED_ShowChinese(112,4,11,16);Send_table[6]='1';}
- while(K4==0);//等待按鍵釋放
- }
- }
- //繼電器4
- if(K5==0)
- {
- delay_uint(10); //延時(shí)消抖
- if(K5==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- relay4=~relay4;
- if(relay4==0){OLED_ShowChinese(24,6,12,16);Send_table[7]='0';}
- else {OLED_ShowChinese(24,6,11,16);Send_table[7]='1';}
- while(K5==0);//等待按鍵釋放
- }
- }
- //繼電器5
- if(K6==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K6==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- relay5=~relay5;
- if(relay5==0){OLED_ShowChinese(68,6,12,16);Send_table[8]='0';}
- else {OLED_ShowChinese(68,6,11,16);Send_table[8]='1';}
- while(K6==0);//等待按鍵釋放
- }
- }
- //繼電器6
- if(K7==0)
- {
- delay_uint(10);//延時(shí)消抖
- if(K7==0)
- {
- //按鍵提示音
- beep=1;
- delay_uint(100);
- beep=0;
- //繼電器狀態(tài)翻轉(zhuǎn)
- relay6=~relay6;
- if(relay6==0){OLED_ShowChinese(112,6,12,16);Send_table[9]='0';}
- else {OLED_ShowChinese(112,6,11,16);Send_table[9]='1';}
- while(K7==0);//等待按鍵釋放
- }
- }
-
- }
- /*****
- 系統(tǒng)初始化函數(shù)
- ****/
- void System_Init()
- {
- beep=0;//關(guān)閉蜂鳴器
- //關(guān)閉所有繼電器
- relay1=0;
- relay2=0;
- relay3=0;
- relay4=0;
- relay5=0;
- relay6=0;
- //OLED初始化
- OLED_Init();
- //開機(jī)顯示
- OLED_ShowChinese(10,0,0,16);
- OLED_ShowChinese(28,0,1,16);
- OLED_ShowChinese(42,0,2,16);
- OLED_ShowChinese(60,0,3,16);
- OLED_ShowChinese(78,0,4,16);
- OLED_ShowChar(96,0,11,16);//!
- OLED_ShowChinese(10,3,5,16);
- OLED_ShowChinese(28,3,6,16);
- OLED_ShowChinese(42,3,7,16);
- OLED_ShowChar(60,3,24,16);//.
- OLED_ShowChar(78,3,24,16);//.
- OLED_ShowChar(96,3,24,16);//.
- //ESP8266模塊初始化
- ESP8266_Init();
- OLED_Clear();//清屏
- //顯示溫度
- OLED_ShowChinese(20,0,8,16);
- OLED_ShowChinese(38,0,9,16);
- OLED_ShowChar(56,0,26,16);
- OLED_ShowChar(72,0,T%100/10,16);
- OLED_ShowChar(88,0,T%10,16);
- OLED_ShowChar(102,0,35,16);
- OLED_ShowChar(110,0,95,16);
- //顯示濕度
- OLED_ShowChinese(20,2,10,16);
- OLED_ShowChinese(38,2,9,16);
- OLED_ShowChar(56,2,26,16);
- OLED_ShowChar(72,2,H%100/10,16);
- OLED_ShowChar(88,2,H%10,16);
- OLED_ShowChar(102,2,15,16);
- //顯示繼電器狀態(tài)、繼電器1
- OLED_ShowChar(0,4,50,16);
- OLED_ShowChar(8,4,1,16);
- OLED_ShowChar(16,4,26,16);
- OLED_ShowChinese(24,4,12,16);
- //繼電器2
- OLED_ShowChar(44,4,50,16);
- OLED_ShowChar(52,4,2,16);
- OLED_ShowChar(60,4,26,16);
- OLED_ShowChinese(68,4,12,16);
- //繼電器3
- OLED_ShowChar(88,4,50,16);
- OLED_ShowChar(96,4,3,16);
- OLED_ShowChar(104,4,26,16);
- OLED_ShowChinese(112,4,12,16);
- //繼電器4
- OLED_ShowChar(0,6,50,16);
- OLED_ShowChar(8,6,4,16);
- OLED_ShowChar(16,6,26,16);
- OLED_ShowChinese(24,6,12,16);
- //繼電器5
- OLED_ShowChar(44,6,50,16);
- OLED_ShowChar(52,6,5,16);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
51hei.png (6 KB, 下載次數(shù): 34)
下載附件
2022-4-14 17:02 上傳
上圖資料51hei附件下載 程序Keil5,仿真Proteus8.8,ad10 PCB:
居家養(yǎng)老監(jiān)護(hù)系統(tǒng).7z
(2.93 MB, 下載次數(shù): 82)
2022-4-14 17:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|