标题: 用STM32实现温湿度OLED显示,温湿度传感器选用DHT11(带详细注释) [打印本页]

作者: yhe4_15    时间: 2019-4-8 12:13
标题: 用STM32实现温湿度OLED显示,温湿度传感器选用DHT11(带详细注释)
单片机选用103系列,显示器用OLED
主程序程序:DHT11驱动程序在附件里
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "relay.h"
#include "oled0561.h"

#include "dht11.h"


int main (void){//主程序
        u8 b[2];
        delay_ms(1000); //上电时等待其他器件就绪
        RCC_Configuration(); //系统时钟初始化
        RELAY_Init();//继电器初始化

        I2C_Configuration();//I2C初始化
        OLED0561_Init(); //OLED初始化
        OLED_DISPLAY_8x16_BUFFER(0,"   YoungTalk    "); //显示字符串
        OLED_DISPLAY_8x16_BUFFER(2,"   DHT11 TEST   "); //显示字符串

        if(DHT11_Init()==0){ //DHT11初始化        返回0成功,1失败
                OLED_DISPLAY_8x16_BUFFER(4,"Humidity:   %   "); //显示字符串
                OLED_DISPLAY_8x16_BUFFER(6,"Temperature:   C"); //显示字符串
        }else{
                OLED_DISPLAY_8x16_BUFFER(4,"DHT11INIT ERROR!"); //显示字符串
        }
        delay_ms(1000);//DHT11初始化后必要的延时(不得小于1秒)
        while(1){
                if(DHT11_ReadData(b)==0){//读出温湿度值  指针1是湿度 20~90%,指针2是温度 0~50C,数据为十进制
                        OLED_DISPLAY_8x16(4,9*8,b[0]/10 +0x30);//显示湿度值
                        OLED_DISPLAY_8x16(4,10*8,b[0]%10 +0x30);//
                        OLED_DISPLAY_8x16(6,12*8,b[1]/10 +0x30);//显示温度值
                        OLED_DISPLAY_8x16(6,13*8,b[1]%10 +0x30);//
                }else{
                        OLED_DISPLAY_8x16_BUFFER(6,"DHT11READ ERROR!"); //显示字符串
                }
                delay_ms(1000); //延时,刷新数据的频率(不得小于1秒)
        }

全部资料51hei下载地址:
1-2-39-DHT11温湿度显示程序.7z (222.17 KB, 下载次数: 107)

作者: admin    时间: 2019-4-8 14:35
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1