STM32F103C8T6+温湿度+土壤湿度+水泵,可通过设置土壤湿度阈值控制水泵
单片机源程序如下:
- /*
- * 温湿度 单片机 土壤 单片机 oled 单片机 继电器(水泵) 单片机
- * VCC ---> VCC VCC VCC VCC VCC VCC VCC
- * GND GND GND GND GND GND GND GND
- out PB14 AO PA1 SCL PB8 IN PB12
- SDA PB9
- */
- #include "stm32f10x.h"
- #include "delay.h"
- #include "sys.h"
- #include "led.h"
- #include "beep.h"
- #include "math.h"
- #include "stdio.h"
- #include "usart.h"
- #include "timer.h"
- #include "stdlib.h"
- #include "string.h"
- #include "stm32f10x_tim.h"
- #include "stm32f10x_flash.h"
- #include "dht11.h"
- #include "adc.h"
- #include "oled_iic.h"
- int main(void)
- {
- u8 temperature;
- u8 humidity;
- int shidu;
- delay_init();
- TIM3_Int_Init(9999,7199); //10Khz的计数频率,计数到5000为500ms
- NVIC_Configuration();
- LED_Init(); //LED灯初始化
- Relay_Init(); //继电器初始化
- uart_init(9600); //串口1初始化为9600
- uart3_init(9600); //串口3初始化为9600
- DHT11_Init();
- Adc_Init();
- OLED_Init(); //OLED屏幕初始化
-
- OLED_Clear();
- while(1)
- {
- OLED_ShowCH(35,0,"1803hmt"); //1803hmt
-
- shidu=Get_Adc_Average(1,10);
- DHT11_Read_Data(&temperature,&humidity); //读取温湿度值
- printf("当前温度:%d 当前湿度:%d 土壤湿度:%d\r\n",temperature,humidity,shidu);
- printf("\r\n");
- delay_ms(800);
- OLED_ShowNum(40,3,temperature,2,16); //显示整数部分
- OLED_ShowNum(105,3,humidity,2,16); //显示整数部分
- OLED_ShowNum(75,6,shidu,2,16); //显示整数部分
- OLED_ShowCH(0,3,"温度:");
- OLED_ShowCH(65,3,"湿度:");
- OLED_ShowCH(0,6,"土壤湿度:"); //显示中文:温度
-
- if(shidu<=20)
- {
- Pum_ON(); //开始抽水
- }
- else
- {
- Pum_OFF();
- }
- }
- }
复制代码
所有资料51hei附件下载:
STM32C8T6+温湿度+土壤+水泵+oled.7z
(1.8 MB, 下载次数: 344)
|