找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

制作出来的实物图如下:




单片机源程序如下:
  1. //////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  作    者   : Fish
  4. //  生成日期   : 2018-12-14
  5. //  最近修改   :
  6. //  功能描述   : 0.96寸OLED显示SHD30温湿度程序。
  7. //              显示SHT30传感器温湿度数据,串口1也可以显示。(USART1 PA9 PA10)
  8. //  单片机:STM32F103ZET6         晶振:72M
  9. //  说明: 串口发送温湿度数据,我把DS18B20的程序也写好了,
  10. //        简单改改程序即可使用,默认使用SHD30传感器显示数据
  11. //              ----------------------------------------------------------------
  12. //              OLED屏
  13. //              GND   电源地
  14. //              VCC   接5V或3.3v电源
  15. //              SCL   接PB13(SCL)
  16. //              SDA   接PB15(SDA)
  17. //              RES   接PB11 如果是用4针iic接口这个脚可以不接

  18. //              SHD30温湿度传感器
  19. //              GND   电源地
  20. //              VCC   接5V或3.3v电源
  21. //              SCL   接PB6(SCL)
  22. //              SDA   接PB7(SDA)

  23. //              DS18B20传感器
  24. //              GND   电源地
  25. //              VCC   接5V或3.3v电源
  26. //              DAT   接PB6(SCL)
  27. //              ----------------------------------------------------------------
  28. //   注意:部分源码参考网上及论坛代码,仅供学习交流使用         2018-12-14

  29. //////////////////////////////////////////////////////////////////////////////////

  30. #include "sys.h"
  31. #include "oled.h"
  32. #include "usart.h"
  33. #include "bmp.h"
  34. #include "sht30_dis.h"
  35. #include "bsp_SysTick.h"
  36. #include "bsp_ds18b20.h"

  37. extern float TemValue;
  38. extern float RhValue;
  39. char Tempbuf[100],RHbuf[100];

  40. int main(void)
  41.   {        
  42.                 uint8_t uc, ucDs18b20Id [8];               
  43.                 u8 t;
  44.                 char Temp[50];
  45.                 SysTick_Init();
  46.     uart_init(115200);         
  47.                 NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级         LED_Init();                             //LED端口初始化
  48.                 Delay_ms(200);
  49.                 OLED_Init();                        //初始化OLED  
  50.                 OLED_Clear();
  51.     Delay_ms(200);

  52.                 OLED_DrawBMP(0,0,128,8,BMP1);  //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
  53.                 Delay_ms(3000);
  54.           OLED_Clear();
  55.     OLED_DrawBMP(0,0,128,8,BMP2);                        
  56.                 t=' ';
  57.                
  58.   printf("\r\n this is a SHT30 test demo \r\n");
  59.         
  60. //        while( DS18B20_Init() )        
  61. //                printf("\r\n no ds18b20 exit \r\n");
  62. //        
  63. //        printf("\r\n ds18b20 exit \r\n");
  64. //        
  65. //        
  66. //        DS18B20_ReadId ( ucDs18b20Id  );           
  67. //        
  68. //        printf("\r\nDS18B20 xuliehao: 0x");

  69. //        for ( uc = 0; uc < 8; uc ++ )            
  70. //         printf ( "%.2x", ucDs18b20Id [ uc ] );
  71.         Delay_ms(5000);
  72.         OLED_Clear();
  73.         while(1)
  74.         {               
  75.                   //温度显示电子时钟
  76.             OLED_ShowCHinese(0,0,7);
  77.                   OLED_ShowCHinese(16,0,8);
  78.                   OLED_ShowCHinese(32,0,9);
  79.                   OLED_ShowCHinese(48,0,10);
  80.                   OLED_ShowCHinese(64,0,11);
  81.                   OLED_ShowCHinese(80,0,12);
  82.                   OLED_ShowCHinese(96,0,13);
  83.                   OLED_ShowCHinese(112,0,14);
  84.                
  85.                 printf ( "\r\nDS18b20 temp: %.2f'C\r\n", DS18B20_GetTemp_MatchRom ( ucDs18b20Id ) );                //DS18B20温度显示        
  86. //                sprintf(Temp,"Temp:%.2f'C\r\n",DS18B20_GetTemp_MatchRom ( ucDs18b20Id ));
  87. //                OLED_ShowString(6,3,Temp,16);
  88.                 SHT_GetValue();
  89.                 printf ("%s\r\n",Tempbuf);
  90.                 printf ("%s\r\n",RHbuf);
  91.                 OLED_ShowString(6,3,Tempbuf,16);
  92.                 OLED_ShowString(6,6,RHbuf,16);

  93.                 Delay_ms(500);

  94.         }         
  95.         
  96. }
  97.         
复制代码


所有资料51hei提供下载:
Keil代码0.96OLED_STM32F103ZE_IIC.7z (259.54 KB, 下载次数: 633)


评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏22 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:474232 发表于 2019-3-7 11:00 | 只看该作者
很好,值得学习与探讨!
回复

使用道具 举报

板凳
ID:499463 发表于 2019-4-6 20:12 | 只看该作者
多谢分享
回复

使用道具 举报

地板
ID:507046 发表于 2019-4-8 15:32 | 只看该作者
很不错
回复

使用道具 举报

5#
ID:507046 发表于 2019-4-8 15:32 | 只看该作者

多谢分享
回复

使用道具 举报

6#
ID:508534 发表于 2019-4-10 12:07 | 只看该作者
感谢分享
回复

使用道具 举报

7#
ID:395480 发表于 2019-4-14 00:42 来自手机 | 只看该作者
很好 东西不错
回复

使用道具 举报

8#
ID:89772 发表于 2019-5-2 09:03 | 只看该作者
需要看下。。。。
回复

使用道具 举报

9#
ID:423234 发表于 2019-5-3 23:08 | 只看该作者
多谢分享
回复

使用道具 举报

10#
ID:125831 发表于 2019-5-6 14:59 | 只看该作者
学习学习,谢谢楼主
回复

使用道具 举报

11#
ID:337997 发表于 2019-10-11 15:54 | 只看该作者
我用这个程序出不来第二张图是为什么?一直卡在第一张图
回复

使用道具 举报

12#
ID:690275 发表于 2020-2-5 16:29 | 只看该作者
好贴,感谢分享,想拿来测试一下是否可以使用
回复

使用道具 举报

13#
ID:118286 发表于 2020-4-8 16:14 | 只看该作者
Keil uVision4打不开
回复

使用道具 举报

14#
ID:729970 发表于 2020-4-17 01:43 | 只看该作者
谢谢楼主分享 受教了
回复

使用道具 举报

15#
ID:208271 发表于 2020-4-26 22:00 | 只看该作者
很好的程序,直接运行完全不用改。
感谢楼主!
回复

使用道具 举报

16#
ID:473907 发表于 2020-4-27 16:19 | 只看该作者
不错的资料,有空试试
回复

使用道具 举报

17#
ID:368810 发表于 2020-5-14 10:44 | 只看该作者
wifingtta 发表于 2020-4-26 22:00
很好的程序,直接运行完全不用改。
感谢楼主!

里面只是程序吗,带仿真吗?
回复

使用道具 举报

18#
ID:483223 发表于 2020-5-15 09:28 | 只看该作者
正在学习,谢谢分享
回复

使用道具 举报

19#
ID:483223 发表于 2020-5-15 09:35 | 只看该作者
很好的软件设计,谢谢分享!
回复

使用道具 举报

20#
ID:483223 发表于 2020-5-15 14:51 | 只看该作者
大神,代码中 sht30_dis_init( ) 初始化函数在哪调用的?是否工程不完整?我移植到STM32F407上读不到数据!
回复

使用道具 举报

21#
ID:784999 发表于 2020-6-20 15:53 | 只看该作者
只有DS18B20也可以吧
回复

使用道具 举报

22#
ID:797023 发表于 2020-7-4 11:05 | 只看该作者
不错,代码有点乱
回复

使用道具 举报

23#
ID:1051855 发表于 2022-11-15 17:39 | 只看该作者
楼主为啥我这点三个画面没有显示数据,你的最终数据保存在哪里呀
回复

使用道具 举报

24#
ID:1053578 发表于 2022-11-23 17:33 | 只看该作者
很好,值得学习与探讨!
回复

使用道具 举报

25#
ID:1068301 发表于 2023-4-10 21:09 | 只看该作者
为什么F10x.h编译缺少“}”
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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