DHT11传感器的数据口接在PG11管脚,电源接入开发板上电源上,多大的电压取决于你的DHT11传感器模块供电电压。
单片机源程序如下:
- #include "system.h"
- #include "SysTick.h"
- #include "led.h"
- #include "usart.h"
- #include "tftlcd.h"
- #include "dht11.h"
- #include "smog.h"
- #include "adc.h"
- #include "sys.h"
- #include "delay.h"
- void data_pros() //数据处理函数
- {
- u8 t;
- u32 temp_val=0;
- 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,60,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,80,tftlcd_data.width,tftlcd_data.height,16,humi_buf);
- for(t=0;t<SMOG_READ_TIMES;t++)
- {
- temp_val+=Get_Adc(SMOG_ADC_CHX); //读取ADC值
- delay_ms(5);
- }
- temp_val/=SMOG_READ_TIMES;//得到平均值
- printf("Smog_ADC_Val:%d\r\n", temp_val);
- // return (u16)temp_val;
- }
- int main()
- {
- u8 i=0;
- u16 adcx1,adcx2;
- float temp;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应
- SysTick_Init(72);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
- LED_Init();
- USART1_Init(9600);
- USART1_Init(115200); //串口初始化为115200
- TFTLCD_Init(); //LCD初始化
- Smog_Init();
- Adc_Init(); //ADC初始化
-
- LCD_Clear(BLACK);
-
- FRONT_COLOR=GREEN;
- LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16," STM32F103ZET6");
- LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"DHT11 Test");
- LCD_ShowString(10,60,tftlcd_data.width,tftlcd_data.height,16,"Temp: C");
- LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,16,"Humi: %RH");
-
- LCD_DrawLine( 0, 100, 279, 100);
-
- FRONT_COLOR=BLUE;//设置字体为蓝色
- LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");
- LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");
- LCD_ShowString(60,190,200,16,16,"ADC_CH0_VAL:");
- LCD_ShowString(60,210,200,16,16,"ADC_CH0_VOL:0.000V");
-
- FRONT_COLOR=RED;
-
- while(DHT11_Init()) //检测DHT-11是否存在
- {
- LCD_ShowString(130,30,tftlcd_data.width,tftlcd_data.height,16,"Error ");
- delay_ms(500);
- }
- LCD_ShowString(130,30,tftlcd_data.width,tftlcd_data.height,16,"Success");
-
- while(1)
- {
-
- i++;
- if(i%20==0)
- {
- led1=!led1;
- data_pros(); //读取一次DHT11数据最少要大于100ms
- }
-
- delay_ms(10);
-
- }
- while(1)
- {
- adcx1=Get_Adc_Average(ADC_Channel_10,10);
- LCD_ShowxNum(156,130,adcx1,4,16,0);//显示ADC的值
- temp=(float)adcx1*(3.3/4096);
- adcx1=temp;
- LCD_ShowxNum(156,150,adcx1,1,16,0);//显示电压值
- temp-=adcx1;
- temp*=1000;
- LCD_ShowxNum(172,150,temp,3,16,0X80);
-
- adcx2=Get_Adc_Average(ADC_Channel_11,10);
- LCD_ShowxNum(156,190,adcx2,4,16,0);//显示ADC的值
- temp=(float)adcx2*(3.3/4096);
- adcx2=temp;
- LCD_ShowxNum(156,210,adcx2,1,16,0);//显示电压值
- temp-=adcx2;
- temp*=1000;
- LCD_ShowxNum(172,210,temp,3,16,0X80);
-
- delay_ms(250);
- }
- }
-
复制代码
失败的程序,求大神帮助:
缺文件,不能编译.7z
(179.73 KB, 下载次数: 90)
|