第七章 OLED+DHT11+STM32动态显示温湿度

上一章给大家介绍了OLED显示模块的使用,但上一章我们在OLED上显示的是静态的,不会变动的,所以这一章我结合第一章介绍的DHT11温湿度模块,实现温湿度数值在OLED显示模块上进行动态显示,其实也是非常简单。

首先打开第一章提供的DHT11代码工程文件和第六章提供的OLED的代码工程文件,因为DHT11与STM32之间是通过单总线进行通讯的,所以我们把单总线驱动源码文件移植到OLED工程文件中。

移植完单总线源码文件后,我们就可以将STM32获取温湿度的函数代码文件也移植过来。但是DHT11的代码工程把单总线驱动源码和STM32获取温湿度的函数代码都整合在上面移植的DHT11文件内了,所以文件方面的移植只要完成上图的操作就可以了。

接下来打开OLED的代码,进行下图操作,将单总线驱动和STM32获取温湿度的函数代码添加进工程中。

在弹出的窗口进行下图操作。

将移植过来的DHT11文件添加到编译路径。添加成功如下图所示,然后点击OK就可以了。(不懂怎么添加的同学,参考)

做完上图操作,我们就可以调用dht11.c里面函数了,首先在OLED代码的main.c开头添加DHT11.h头文件(第1个箭头指示),并将存储温湿度数值的数组也复制过来(第2个箭头指示),然后调用DHT11初始化的函数(第3个箭头指示,相关的GPIO初始化也在里面)。

效果如下:

然后我们再调用第六章教给大家的OLED_ShowCHinese( )和OLED_ShowString( )函数,在屏幕上显示“温度”、“湿度”和其他中英文字符,根据第六章的知识,想要中文和中文字符,我们就得将它们的字模放置到存储字模数据的数组Hzk[ ]中(不知道怎么生成中文字模的同学,去第六章补补课),如下图所示。

将要显示的中文的字模添加到Hzk[ ]后,我们就可以调用OLED_ShowCHinese( )进行中文和中文字符的显示了,如下图。

显示效果如下:


经验分享 程序员 微信小程序 职场和发展