找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11655|回復(fù): 24
打印 上一主題 下一主題
收起左側(cè)

STM32+SHT30(DS18B20)+0.96寸OLED(IIC)的溫度濕度顯示程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:393699 發(fā)表于 2018-12-24 21:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
自己寫的程序,顯示SHT30溫濕度模塊的溫濕度。
既有OLED(IIC接口)屏幕的溫濕度顯示,也有串口數(shù)據(jù)輸出。
為了作對比,我順便把DS18B20的溫度顯示也寫進(jìn)去了,然后改下注釋也可輸出DS18B20溫度數(shù)據(jù)。
在此感謝51hei論壇的SHT30例程,把原來有錯誤的地方改了,寫了個完整的例程。
代碼沒怎么整理,不過加了必要的注釋,發(fā)出來分享下成果

制作出來的實(shí)物圖如下:




單片機(jī)源程序如下:
  1. //////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  作    者   : Fish
  4. //  生成日期   : 2018-12-14
  5. //  最近修改   :
  6. //  功能描述   : 0.96寸OLED顯示SHD30溫濕度程序。
  7. //              顯示SHT30傳感器溫濕度數(shù)據(jù),串口1也可以顯示。(USART1 PA9 PA10)
  8. //  單片機(jī):STM32F103ZET6         晶振:72M
  9. //  說明: 串口發(fā)送溫濕度數(shù)據(jù),我把DS18B20的程序也寫好了,
  10. //        簡單改改程序即可使用,默認(rèn)使用SHD30傳感器顯示數(shù)據(jù)
  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. //   注意:部分源碼參考網(wǎng)上及論壇代碼,僅供學(xué)習(xí)交流使用         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();          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級         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);  //圖片顯示(圖片顯示慎用,生成的字表較大,會占用較多空間,F(xiàn)LASH空間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.         
復(fù)制代碼


所有資料51hei提供下載:
Keil代碼0.96OLED_STM32F103ZE_IIC.7z (259.54 KB, 下載次數(shù): 644)


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏22 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:474232 發(fā)表于 2019-3-7 11:00 | 只看該作者
很好,值得學(xué)習(xí)與探討!
回復(fù)

使用道具 舉報

板凳
ID:499463 發(fā)表于 2019-4-6 20:12 | 只看該作者
多謝分享
回復(fù)

使用道具 舉報

地板
ID:507046 發(fā)表于 2019-4-8 15:32 | 只看該作者
很不錯
回復(fù)

使用道具 舉報

5#
ID:507046 發(fā)表于 2019-4-8 15:32 | 只看該作者
回復(fù)

使用道具 舉報

6#
ID:508534 發(fā)表于 2019-4-10 12:07 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

7#
ID:395480 發(fā)表于 2019-4-14 00:42 來自手機(jī) | 只看該作者
很好 東西不錯
回復(fù)

使用道具 舉報

8#
ID:89772 發(fā)表于 2019-5-2 09:03 | 只看該作者
需要看下。。。。
回復(fù)

使用道具 舉報

9#
ID:423234 發(fā)表于 2019-5-3 23:08 | 只看該作者
多謝分享
回復(fù)

使用道具 舉報

10#
ID:125831 發(fā)表于 2019-5-6 14:59 | 只看該作者
學(xué)習(xí)學(xué)習(xí),謝謝樓主
回復(fù)

使用道具 舉報

11#
ID:337997 發(fā)表于 2019-10-11 15:54 | 只看該作者
我用這個程序出不來第二張圖是為什么?一直卡在第一張圖
回復(fù)

使用道具 舉報

12#
ID:690275 發(fā)表于 2020-2-5 16:29 | 只看該作者
好貼,感謝分享,想拿來測試一下是否可以使用
回復(fù)

使用道具 舉報

13#
ID:118286 發(fā)表于 2020-4-8 16:14 | 只看該作者
Keil uVision4打不開
回復(fù)

使用道具 舉報

14#
ID:729970 發(fā)表于 2020-4-17 01:43 | 只看該作者
謝謝樓主分享 受教了
回復(fù)

使用道具 舉報

15#
ID:208271 發(fā)表于 2020-4-26 22:00 | 只看該作者
很好的程序,直接運(yùn)行完全不用改。
感謝樓主!
回復(fù)

使用道具 舉報

16#
ID:473907 發(fā)表于 2020-4-27 16:19 | 只看該作者
不錯的資料,有空試試
回復(fù)

使用道具 舉報

17#
ID:368810 發(fā)表于 2020-5-14 10:44 | 只看該作者
wifingtta 發(fā)表于 2020-4-26 22:00
很好的程序,直接運(yùn)行完全不用改。
感謝樓主!

里面只是程序嗎,帶仿真嗎?
回復(fù)

使用道具 舉報

18#
ID:483223 發(fā)表于 2020-5-15 09:28 | 只看該作者
正在學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報

19#
ID:483223 發(fā)表于 2020-5-15 09:35 | 只看該作者
很好的軟件設(shè)計,謝謝分享!
回復(fù)

使用道具 舉報

20#
ID:483223 發(fā)表于 2020-5-15 14:51 | 只看該作者
大神,代碼中 sht30_dis_init( ) 初始化函數(shù)在哪調(diào)用的?是否工程不完整?我移植到STM32F407上讀不到數(shù)據(jù)!
回復(fù)

使用道具 舉報

21#
ID:784999 發(fā)表于 2020-6-20 15:53 | 只看該作者
只有DS18B20也可以吧
回復(fù)

使用道具 舉報

22#
ID:797023 發(fā)表于 2020-7-4 11:05 | 只看該作者
不錯,代碼有點(diǎn)亂
回復(fù)

使用道具 舉報

23#
ID:1051855 發(fā)表于 2022-11-15 17:39 | 只看該作者
樓主為啥我這點(diǎn)三個畫面沒有顯示數(shù)據(jù),你的最終數(shù)據(jù)保存在哪里呀
回復(fù)

使用道具 舉報

24#
ID:1053578 發(fā)表于 2022-11-23 17:33 | 只看該作者
很好,值得學(xué)習(xí)與探討!
回復(fù)

使用道具 舉報

25#
ID:1068301 發(fā)表于 2023-4-10 21:09 | 只看該作者
為什么F10x.h編譯缺少“}”
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表