`近期家人生病, 忙于求医照料, 只能断断续续抽时间做实验.
实验名称: LCD显示与DHT11测量温湿度
实验目的: 通过开发板连接的DHT11模块实时测量环境温湿度, 并在LCD屏上显示.
实验材料:
精英STM32F103开发板
DHT11温湿度模块, 尺寸3.5寸, 芯片为 ILI9486, 无触摸功能
连接方式:如图所示,LCD屏连接至LCD模块接口, DHT11连接至OLED/摄像头模块接口并使用GND引脚.
实验步骤:
1.通电显示
烧写程序并通电后, 显示当前温度为28.1度, 湿度为72.0%
2.温湿度变更
对DHT11模块位置哈几口气, 以改变其温湿度, 可看到LCD显示 当前温度28.2度, 湿度86.0%
2秒钟之后,湿度急速下降为80%, 然后降低至初始时的72%
芯片为 ILI9486的触屏驱动代码可参见附件.
最后附张我简陋的"工作室"的图:
主代码:
- void showmaininfo(void);
- u8 getnumlen(uint8_t num);
- int main(void)
- {
- u8 pos;
- DHT11_Data_TypeDef data;
- delay_init();
- DHT11_GPIO_Config();
- LCD_Init();
- showmaininfo();
-
- while(1)
- {
- if(SUCCESS == Read_DHT11(&data))
- {
- LCD_ShowNum(106,60,data.temp_int,getnumlen(data.temp_int),16);
- LCD_ShowNum(106,90,data.humi_int,getnumlen(data.humi_int),16);
- LCD_ShowNum(130,60,data.temp_deci,getnumlen(data.temp_deci),16);
- LCD_ShowNum(130,90,data.humi_deci,getnumlen(data.humi_deci),16);
- }
- delay_ms(1000);
- }
- }
- void showmaininfo(void)
- {
- DrawTestPage("精英STM32F103开发板");
-
- Show_Str(20,30,YELLOW,BLUE,"LCD&DHT11测试",16,1);
- Show_Str(20,60,RED,BLUE,"当前湿度: . 度",16,1);
- Show_Str(20,90,RED,BLUE,"当前湿度: . %",16,1);
- Show_Str(20,120,BLUE,BLUE,"LCD Info: 3.5' ILI9486 320X480",16,1);
- delay_ms(1500);
- }
- u8 getnumlen(uint8_t num)
- {
- if(num>99)
- return 3;
- else if(num>9)
- return 2;
- return 1;
- }
复制代码
`
|