找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4872|回复: 1
打印 上一主题 下一主题
收起左侧

用STM32实现温湿度OLED显示,温湿度传感器选用DHT11(带详细注释)

[复制链接]
跳转到指定楼层
楼主
ID:506858 发表于 2019-4-8 12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机选用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)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-4-8 14:35 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表