想在stm32单片机中通过DHT11传感器返回的温湿度自动控制继电器的开合,但是代码好像并没有起到控制继电器的作用,并且运行的时候温湿度在lcd上没有正常显示,求大神指点如何修改一下代码,最终可以通过DHT11检测到的温湿度控制继电器的开合,控制继电器的代码如下():
GPIO_SetBits(GPIO_jidianqi,jidianqi);
GPIO_ResetBits(GPIO_jidianqi2,jidianqi2);
while(1)
{
if(temp>10&&humi>10)
{
GPIO_SetBits(GPIO_jidianqi,jidianqi);
GPIO_SetBits(GPIO_jidianqi2,jidianqi2);
}
}
主函数的代码:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "dht11.h"
#include "jidianqi.h"
void data_pros()
{
u8 temp;
u8 humi;
u8 temp_buf[3],humi_buf[3];
DHT11_Read_Data(&temp,&humi);
temp_buf[0]=temp/10+0x30;
temp_buf[1]=temp%10+0x30;
temp_buf[2]='\0';
LCD_ShowString(55,100,tftlcd_data.width,tftlcd_data.height,16,temp_buf);
humi_buf[0]=humi/10+0x30;
humi_buf[1]=humi%10+0x30;
humi_buf[2]='\0';
LCD_ShowString(55,130,tftlcd_data.width,tftlcd_data.height,16,humi_buf);
printf("ζè=%d¡ãC êa¶è=%d%%RH\r\n",temp,humi);
GPIO_SetBits(GPIO_jidianqi,jidianqi);
GPIO_ResetBits(GPIO_jidianqi2,jidianqi2);
while(1)
{
if(temp>10&&humi>10)
{
GPIO_SetBits(GPIO_jidianqi,jidianqi);
GPIO_SetBits(GPIO_jidianqi2,jidianqi2);
}
}
}
int main()
{
u8 i=0;
u8 temp;
u8 humi;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LED_Init();
USART1_Init(115200);
TFTLCD_Init();
jiqianqi_Init();
FRONT_COLOR=BLACK;
LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"PRECHIN STM32F1");
LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"www8prechin8net");
LCD_ShowString(10,50,tftlcd_data.width,tftlcd_data.height,16,"DHT11 Test");
LCD_ShowString(10,100,tftlcd_data.width,tftlcd_data.height,16,"Temp: C");
LCD_ShowString(10,130,tftlcd_data.width,tftlcd_data.height,16,"Humi: %RH");
FRONT_COLOR=RED;
while(DHT11_Init()) //¼ì2aDS18B20êÇ·ñ′¿Ôú
{
LCD_ShowString(130,50,tftlcd_data.width,tftlcd_data.height,16,"Error ");
printf("DHT11 Check Error!\r\n");
delay_ms(500);
}
LCD_ShowString(130,50,tftlcd_data.width,tftlcd_data.height,16,"Success");
printf("DHT11 Check OK!\r\n");
while(1)
{
i++;
if(i%20==0)
{
LED1=!LED1;
data_pros();
}
delay_ms(10);
}
}
|