单片机
返回首页

STM32+SHT30(DS18B20)+0.96寸OLED(IIC)的温度湿度显示程序

2020-08-12 来源:51hei

自己写的程序,显示SHT30温湿度模块的温湿度。
既有OLED(IIC接口)屏幕的温湿度显示,也有串口数据输出。
为了作对比,我顺便把DS18B20的温度显示也写进去了,然后改下注释也可输出DS18B20温度数据。
在此感谢51hei论坛的SHT30例程,把原来有错误的地方改了,写了个完整的例程。
代码没怎么整理,不过加了必要的注释,发出来分享下成果

制作出来的实物图如下:
photo1.jpg

photo2.jpg

单片机源程序如下:

//////////////////////////////////////////////////////////////////////////////////

//

//  作    者   : Fish

//  生成日期   : 2018-12-14

//  最近修改   :

//  功能描述   : 0.96寸OLED显示SHD30温湿度程序。

//              显示SHT30传感器温湿度数据,串口1也可以显示。(USART1 PA9 PA10)

//  单片机:STM32F103ZET6         晶振:72M

//  说明: 串口发送温湿度数据,我把DS18B20的程序也写好了,

//        简单改改程序即可使用,默认使用SHD30传感器显示数据

//              ----------------------------------------------------------------

//              OLED屏

//              GND   电源地

//              VCC   接5V或3.3v电源

//              SCL   接PB13(SCL)

//              SDA   接PB15(SDA)

//              RES   接PB11 如果是用4针iic接口这个脚可以不接


//              SHD30温湿度传感器

//              GND   电源地

//              VCC   接5V或3.3v电源

//              SCL   接PB6(SCL)

//              SDA   接PB7(SDA)


//              DS18B20传感器

//              GND   电源地

//              VCC   接5V或3.3v电源

//              DAT   接PB6(SCL)

//              ----------------------------------------------------------------

//   注意:部分源码参考网上及论坛代码,仅供学习交流使用         2018-12-14


//////////////////////////////////////////////////////////////////////////////////


#include 'sys.h'

#include 'oled.h'

#include 'usart.h'

#include 'bmp.h'

#include 'sht30_dis.h'

#include 'bsp_SysTick.h'

#include 'bsp_ds18b20.h'


extern float TemValue;

extern float RhValue;

char Tempbuf[100],RHbuf[100];


int main(void)

  {        

                uint8_t uc, ucDs18b20Id [8];               

                u8 t;

                char Temp[50];

                SysTick_Init();

    uart_init(115200);         

                NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级         LED_Init();                             //LED端口初始化

                Delay_ms(200);

                OLED_Init();                        //初始化OLED  

                OLED_Clear();

    Delay_ms(200);


                OLED_DrawBMP(0,0,128,8,BMP1);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)

                Delay_ms(3000);

          OLED_Clear();

    OLED_DrawBMP(0,0,128,8,BMP2);                        

                t=' ';

               

  printf('rn this is a SHT30 test demo rn');

        

//        while( DS18B20_Init() )        

//                printf('rn no ds18b20 exit rn');

//        

//        printf('rn ds18b20 exit rn');

//        

//        

//        DS18B20_ReadId ( ucDs18b20Id  );           

//        

//        printf('rnDS18B20 xuliehao: 0x');


//        for ( uc = 0; uc < 8; uc ++ )            

//         printf ( '%.2x', ucDs18b20Id [ uc ] );

        Delay_ms(5000);

        OLED_Clear();

        while(1)

        {               

                  //温度显示电子时钟

            OLED_ShowCHinese(0,0,7);

                  OLED_ShowCHinese(16,0,8);

                  OLED_ShowCHinese(32,0,9);

                  OLED_ShowCHinese(48,0,10);

                  OLED_ShowCHinese(64,0,11);

                  OLED_ShowCHinese(80,0,12);

                  OLED_ShowCHinese(96,0,13);

                  OLED_ShowCHinese(112,0,14);

               

                printf ( 'rnDS18b20 temp: %.2f'Crn', DS18B20_GetTemp_MatchRom ( ucDs18b20Id ) );                //DS18B20温度显示        

//                sprintf(Temp,'Temp:%.2f'Crn',DS18B20_GetTemp_MatchRom ( ucDs18b20Id ));

//                OLED_ShowString(6,3,Temp,16);

                SHT_GetValue();

                printf ('%srn',Tempbuf);

                printf ('%srn',RHbuf);

                OLED_ShowString(6,3,Tempbuf,16);

                OLED_ShowString(6,6,RHbuf,16);


                Delay_ms(500);


        }         

        

}



进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 简洁的过零调功器电路设计与分析

  • 单稳态控制电路设计与分析

  • 光控电路设计与分析

  • 永不缺相启动运行的电动机控制电路

  • 开关电源的基本组成及工作原理

  • MT3608构成3.7V转12V的升压电路图

    相关电子头条文章