引脚硬件连接
LED指示灯
LED1--->PC13
BH1750 光照
SDA----->PB5
SCL----->PB6
DS18B20 温度
DATA---->PA12
DHT11 温湿度
DATA---->PA11
土壤多要素传感器
EN------->PA1
RXD------>PA2
TXD------>PA3
二氧化碳传感器
RXD------>PB10
TXD------>PB11
CH340下载器
RXD------>PA9
TXD------>PB10
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "CO2.h"
- #include "sys.h"
- #include "usart.h"
- #include "ds18b20.h"
- #include "DTH117.h"
- #include "bh1750.h"
- #include "rs485.h"
- int main(void)
- {
- u8 i;
- u8 t=0,key;
- //u16 temp;//二氧化碳
- u8 tempera;
- short temperature;
- u8 humidity;
- u16 Light=0;//光强
- u8 USART3_buf[12];
- u8 rs485buf[30];
- u8 arr[8]={0X01,0X03,0X00,0X00,0X00,0X08,0X44,0X0C}; //土壤传感器问询帧
- u8 avr[8]={0X01,0X03,0X00,0X05,0X00,0X01,0X94,0X0B}; //二氧化碳问询帧
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- Usart1_Init(115200); //串口初始化为 115200
- // Usart3_Init(4800); //串口初始化为 4800
- RS485_Init(4800); //初始化RS485
- USART3_Init(4800); //初始化串口3
- LED_Init(); //初始化与LED连接的硬件接口
- bh1750_Init();
- DS18B20_Init();
- DHT11_Init();
- DHT11_Read_Data(&tempera,&humidity); //读取温湿度值
- //UsartPrintf(USART_DEBUG,"\r\n 温度:%d,湿度:%d,光照:%d",temp,humi,Light);
- UsartPrintf(USART_DEBUG,"\n\r\n 欢迎使用盆景生态监测系统");
- UsartPrintf(USART_DEBUG,"\r\n 本系统使用的传感器所能监测的环境因素有");
- UsartPrintf(USART_DEBUG,"\r\n 温度 空气温湿度 光强 氮磷钾 二氧化碳");
- while(1)
- {
- if(t%10==0) //每100ms读取一次
- {
- UsartPrintf(USART_DEBUG,"\r\n"); //换行
-
- /*----------------------*///温度采集
- temperature=DS18B20_Get_Temp();
- if(temperature==0)UsartPrintf(USART_DEBUG,"\r\n DS18B20 Error!"); //DS18B20报错
- else{
- if(temperature<0){
- UsartPrintf(USART_DEBUG,"-"); //负温度
- temperature=-temperature; //转为正数
- }else
- UsartPrintf(USART_DEBUG,"\r\n DS18B20:温度:%d.%d%s",temperature/10,temperature%10,"℃"); //显示温度
- }
-
- /*-----------------------------------*///空气温湿度采集
- DHT11_Read_Data(&tempera,&humidity); //读取温湿度值
- if(humidity>100||tempera>100||(humidity+tempera==0))UsartPrintf(USART_DEBUG,"\r\n DHT11 Error!"); //DHT11报错
- else {UsartPrintf(USART_DEBUG,"\r\n DHT11 :空气温度:%d%s",tempera,"℃"); //显示空气温湿度
- UsartPrintf(USART_DEBUG,"\r\n :空气湿度:%d%c",humidity,'%'); //显示空气温湿度
- humidity=0;
- tempera=0;
- }