基于DHT11的温湿计设计 OLED12864显示

发布者:Xiangsi最新更新时间:2019-10-17 来源: 51hei关键字:DHT11  温湿计  OLED12864显示 手机看文章 扫描二维码
随时随地手机看文章

本作品采用STC15F104W单片机和OLED12864(IIC)设计,配合B站上传的视频更佳。
B站搜索基于DHT11的温湿计(UP凌净清河)即可查到相关视频(预计2018年7月13日前会审核完毕)。

主要亮点:
1.自定义的显示函数以满足显示需求
2.简化的字库以满足单片机4K Flash的容量需求
次要亮点:
1.使用小巧的STC15F104W单片机

请注意!为防止低成本盗用(虽然写的不怎么样),仅展示主程序文件源码,在附件中有完整版。
图片.jpg

    #include

    #include "intrins.h"

    #include "OLED_Contrul_Hygrothermograph.c"

    sbit YLED=P3^1;

    sbit RLED=P3^0;

    sbit DHT=P3^5;

    unsigned int Temperature[3]={1,1,1};

    unsigned int Humidity[2]={1,1};

    unsigned char Data_Receive[5];

    /*#################################################################################

    设计名称:基于DHT11的温湿度计(Hygrothermograph)

    设计者:清河


    平台:STC15F104W

    硬件部分

    显示:采用OLED12864显示温度和湿度

    测量,采用DHT11模块,模块信息如下:

    ASATR

    -----

    NA:DHT11

    OC:3.3-5.5V

    U1:5-95%RH

    U2:-20-60℃

    U3:±5%RH±2℃

    SN:A1712882A


    为保证延时准确,晶振设置为12MHz


    借用了http://www.51hei.com/bbs/dpj-38067-1.html上的部分程序,在此表示感谢

    #################################################################################*/

    void Delay30us()

    {unsigned char i;i=87;while(--i);}


    void Delay20ms()

    {unsigned char i,j,k;i=1;j=234;k=113;do{do{while(--k);}while(--j);}while(--i);}


    void Delay1s()

    {unsigned char i,j,k;i=46;j=153;k=245;do{do{while(--k);}while(--j);}while(--i);}


    void OLED_Display()

    {OLED_DataDisplay_T(56,4,Temperature);OLED_DataDisplay_H(56,6,Humidity);}


    void DHT_Collect()

    {unsigned char i,j;unsigned char t;unsigned char dat8=0;unsigned int CheckValue=0;

    DHT=0;Delay20ms();DHT=1;Delay30us();

    t=80;while(DHT&&t--);if(t==0){DHT=1;}t=250;while(!DHT&&t--);

    if(t==0){DHT=1;}t=250;while(DHT&&t--);if(t==0){DHT=1;}

    for(j=0;j<5;j++)

    {for(i=0;i<8;i++){t=150;while(!DHT&&t--);if(t==0){DHT=1;}t=0;

    while(DHT&&++t);dat8<<=1;if(t>30)dat8+=1;}Data_Receive[j]=dat8;}

    Delay30us();Delay30us();DHT=1;

    for(i=0;i<4;i++){CheckValue+=Data_Receive[i];}

    if((unsigned char)CheckValue==Data_Receive[4])

    {Temperature[0]=Data_Receive[2]/10;Temperature[1]=Data_Receive[2]%10;Temperature[2]=Data_Receive[3]%10;

    Humidity[0]=Data_Receive[0]/10;Humidity[1]=Data_Receive[0]%10;}}


    void sys_init()

    {YLED=1;RLED=1;OLED_Init();OLED_CLS();

    OLED_FormTitle(0,0);OLED_FormName(0,2);OLED_FormLine(0,3);OLED_FormTemp(8,4);OLED_FormHumi(16,6);

    OLED_AnyChar_16X16(96,4,TempChar);OLED_AnyChar_8X16(88,6,HumiChar);OLED_AnyChar_8X16(72,4,PointChar);}


    void main()

    {sys_init();while(1){DHT_Collect();YLED=1;RLED=0;OLED_Display();RLED=1;YLED=0;Delay1s();Delay1s();}}


    关键字:DHT11  温湿计  OLED12864显示 引用地址:基于DHT11的温湿计设计 OLED12864显示

    上一篇:单片机+74HC595入门8X8点阵教学
    下一篇:单片机自动浇花系统

    推荐阅读最新更新时间:2024-11-07 13:12

    单总线传感器DHT11在温度测控中的应用
         引言   随着科技的不断发展,汽车、空调、除湿器、烘干机等种类繁多的电器都已进入人们的日常生活,而这些电器设备很多都离不开对温度、湿度等环境因素的要求。因此,温度、湿度传感器用途越来越广泛。新一代的数字传感器不再需要外置的A/D转换模块,并具有标准接口,使用方便,得到了越来越多的应用。DHT11作为一种新型的单总线温湿度数字传感器,具有更多的优点,它使系统设计更加简单,控制方便,易于实现。   1  单总线通信简介   目前常用的微机与外设之间进行数据传输的串行总线主要有I2C总线、SPI总线和SCI总线。其中I2C总线以同步串行两线方式进行通信(1条时钟线,1条数据线),SPI总线则以同步串行三线方式进行通
    [嵌入式]
    使用无字库12864液晶模块制作温湿
    在上次介绍的日历钟的基础上扩展一下:让它具备检测大气温度和湿度的功能,一天24小时不间断运行并定时检测,于是,日历钟就摇身一变成为一个小小温湿度计啦。虽然气象要素很多,不过我们最常用的就是气温和湿度。一个是冷热程度,一个是环境空气中含水蒸气的多少。一般家用温度计很常见,湿度计就比较少,以前有一种干湿球温度计,但是用起来比较麻烦,准确度也不高。现在应用电子技术我们就可以做一个可以同时显示温度、湿度、时间的小仪器,放在家里以便随时监测我们的小环境。它的特点如下: 1.在单片机ATMega8L-8PU(以下简称M8)和日历钟电路DS1302的基础上,使用一个在工厂经过精密校准的数字式温度、湿度传感器AM2301作为探头; 2.当
    [电源管理]
    使用无字库12864液晶模块制作<font color='red'>温湿</font>度<font color='red'>计</font>
    小广播
    设计资源 培训 开发板 精华推荐

    最新单片机文章
    何立民专栏 单片机及嵌入式宝典

    北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

    换一换 更多 相关热搜器件
    随便看看

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved