仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真圖
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<dht11.h>
- #include<1602.h>
- #include<uart.h>
- #include<adc0809.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit led1=P2^3;
- sbit led2=P2^4;
- void main()
- {
-
- adc_interrupt();
- LCD_Init(); //lcd1602初始化
- UART_Init();
- led1=1;
- led2=1;
- LCD_DrawString(0,0,"RH/T");
- while(1)
- {
- //電壓值采集處理
- uchar i;
- for(i=0;i<8;i++)
- {
- ADC();//調(diào)用模數(shù)轉(zhuǎn)換程序
- UART_SendString("volt");
- UART_SendNum1(1,i);
- UART_SendString(":");
- UART_SendNum1(5,volt[i]);
- UART_SendString("\r\n");
-
- }
- display();//調(diào)用顯示程序
-
- if(volt[0]<35000)
- {
- led2=0;
- UART_SendString("led2:open");
- UART_SendString("\r\n");
- }else{led2=1;UART_SendString("led2:close");UART_SendString("\r\n");}
- if(volt[1]<6000)
- {
- led1=0;
- UART_SendString("led1:open");
- UART_SendString("\r\n");
- }else{led1=1;led1=1;UART_SendString("led1:close");UART_SendString("\r\n");}
-
- //溫濕度處理
- DHT11_receive();
- //濕度
- LCD_SetDisplayAddress(4,0);
- LCD_DrawNum1(2,rec_dat[0]);
- LCD_DrawString(6,0,".");
- LCD_SetDisplayAddress(7,0);
- LCD_DrawNum1(2,rec_dat[1]);
- LCD_DrawString(9,0,"% ");
-
- //溫度
- LCD_SetDisplayAddress(11,0);
- LCD_DrawNum1(2,rec_dat[2]);
- LCD_DrawString(13,0,".");
- LCD_SetDisplayAddress(14,0);
- LCD_DrawNum1(1,rec_dat[3]);
- LCD_DrawString(15,0,"C");
-
- UART_SendString("wendu");
- UART_SendNum1(2,rec_dat[0]);
- UART_SendString(".");
- UART_SendNum1(2,rec_dat[1]);
- UART_SendString("\r\n");
- UART_SendString("shidu");
- UART_SendNum1(2,rec_dat[2]);
- UART_SendString(".");
- UART_SendNum1(2,rec_dat[3]);
- UART_SendString("\r\n");
-
-
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
DHT11溫濕度檢測 8路ADC0809電壓采集 串口發(fā)送采集數(shù)據(jù) 高低電壓報警.zip
(198.69 KB, 下載次數(shù): 153)
2020-1-3 12:50 上傳
點擊文件名下載附件
|