历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | 基于DHT11的温湿计设计 OLED12864显示

2019-10-17 来源:51hei

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

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

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

    #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();}}


    推荐阅读

    史海拾趣

    Excelitas公司的发展小趣事

    随着技术的不断成熟和市场的扩大,Excelitas公司开始寻求全球扩张。公司先后在北美、欧洲和亚洲设立了研发中心和生产基地,以更好地服务全球客户。在全球扩张的过程中,Excelitas注重本土化战略,积极与当地企业合作,共同开拓市场。这一策略不仅帮助公司快速融入当地市场,还促进了公司业务的持续增长。

    Hong Kong X'Tals Ltd公司的发展小趣事
    确保电源电压在LM122的允许范围内(4.5~40V),以避免损坏芯片。
    BELDEN公司的发展小趣事

    在20世纪初,BELDEN公司在技术创新方面取得了显著突破。公司不仅将塑料绝缘材料应用于电线和电缆制造,还着眼于精密和高质量产品的需求,致力于高附加值的绝缘材料、电缆、防护和护套材料的生产。这些技术创新使得BELDEN的产品在性能和质量上都有了显著提升,进一步巩固了公司在市场中的地位。同时,公司还不断扩大产品线,增加了橡胶绝缘材料等多种新产品,满足了不同客户的需求。

    Analytic Instruments Corp公司的发展小趣事

    随着技术的不断成熟和产品线的不断丰富,Analytic Instruments Corp开始积极拓展市场。公司通过与行业内的知名企业和研究机构建立合作关系,成功地将产品打入多个重要的应用领域。同时,公司还加大了品牌宣传力度,通过参加行业展会、举办技术研讨会等方式,提升了品牌知名度和影响力。

    Artesyn Embedded Technologies公司的发展小趣事

    为了更好地服务全球客户,Artesyn Embedded Technologies不断加强其在全球市场的布局。公司在北美、欧洲和亚洲等地设立了区域中心,并通过直接办事处、代理机构以及分销商提供全球性销售与支援。这种全球化的战略使公司能够更好地满足不同地区客户的需求,同时也为公司带来了更多的商业机会。

    COILCRAFT公司的发展小趣事

    COILCRAFT公司成立于1945年,是美国较早的磁性元件制造商。在创立初期,公司以生产高频电感器和变压器为主,凭借着卓越的技术和稳定的质量,逐渐在电子元器件市场中崭露头角。公司总部位于伊利诺伊州卡里,这个地理位置为其提供了便捷的物流和人才资源,为其后续的发展奠定了坚实的基础。

    问答坊 | AI 解惑

    请大家帮我看看

    我建立一个WCE MFC工程,A对话框。然后用类向导加了B,C,D对话框。程序开始运行A,然后用DoModal进入B,再用DoModal进入C,再用DoModal进入D。现在我要从D->B或A,我要怎么搞啊?…

    查看全部问答>

    c#开发的wince程序如何连接到其他主机的数据库

    用c#开发了一个wince程序,现在想连接远程服务器的数据库,数据库是sqlserver2005,请问如何连。 好像和正常winfrom程序连接不太一样吧,using System.Data.SqlClient;引用不了,请大家帮忙…

    查看全部问答>

    STM32内置bootloader,是全双工还是半双工的?

    现在需要用到485给装置升级,不知道能不能实现哦 如果是半双工问答式的,那就好办了 有用过的朋友么?…

    查看全部问答>

    体温信号检测与处理系统设计

    本内容: 设计一个体温(呼吸)的测量系统,要求如下:   1、可以测量人体的体温(呼吸频率)。 2、能够对测量的信号进行处理并可显示体温(呼吸频率)。 3、能够存储若干次测量结果。        4、能用开关控制系统 ...…

    查看全部问答>

    Altium Designer庫清單

    Altium Designer原廠網站提供的庫清單可以依照廠牌, 型號, 功能 搜尋你要找的零件之前的放錯了, 6MB 這個才是對的. [ 本帖最后由 dale 于 2011-8-1 14:25 编辑 ]…

    查看全部问答>

    msp430x15x 430x16x 430x161x datasheet

    msp430x15x 430x16x 430x161x datasheet [ 本帖最后由 guanglin 于 2011-8-2 11:06 编辑 ]…

    查看全部问答>

    低通滤波器用哪一个运放好

    哪个朋友能告诉我300K的低通滤波器,用哪一个运放好呢?我倒是用过LM741,但它到60K就截止了。…

    查看全部问答>

    关于MSP430F6736 UCS的问题!

    用6736做了一块板子,在进行UCS的初始化时,运行初始化代码如下: PJDIR |= BIT0 | BIT1 | BIT3;           // ACLK, MCLK, SMCLK set out to pinsPJSEL |= BIT0 | BIT1 | BIT3;     &nbs ...…

    查看全部问答>

    FPGA SPI通信讨论

    小白正在做一个FPGA跟单片机通信的小实验,遇到问题了。请各路大神指导指导。 现在的情况是,单片机先运行,然后FPGA再开始运行,传输数据就是正确的。但是,当FPGA运行过程中,单片机复位之后,数据就发生错误。估计问题是出现在发送的计数器问题 ...…

    查看全部问答>

    晕,我的无线手表可能坏了

    本帖最后由 wangfuchong 于 2014-6-7 21:36 编辑 今天手工挖地翻土(一块地被土地承包商的沟渠分割,无法通过手扶拖拉机之类,我父亲太好说话,竟然没要求给设立一个涵洞或者铺设一个可通过手扶拖拉机的极断的桥,也许水泥预制板就能行),浑身是汗,以至 ...…

    查看全部问答>