久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9722|回復: 24
打印 上一主題 下一主題
收起左側

單片機SHT20+BH1750+BMP180溫濕度、氣壓、光照度三合一設計

  [復制鏈接]
跳轉到指定樓層
樓主
  最近一直想做一個可以檢測溫濕度的,光照強度,還有氣壓檢測的儀表。而且要精度高反應快的傳感器,在網上找了一圈,看的眼花繚亂,符合要求的價格都不低,無意中看到某寶看到一個溫濕度、氣壓、光照度三合一的傳感模塊,最重要的是模塊上面集成的溫濕度芯片是我首選的SHT20,還有光照強度傳感器BH1750. ,都符合自己的要求,這2款芯片在大學的時候就有所了解,算是溫度檢測和光照檢測領域里,精度高,體積非常小,性價比很高的一款。氣壓傳感器一般都是采用BMP180或者BMP085,這2個芯片也差不多的,現在用BMP180的感覺要多一些。非常符合設計需要。 再加上這個模塊是串口輸出,直接就可以讀取數據啦。哈哈哈,根本不需要自己去進行3個傳感器的驅動代碼編程,。(其實之前我也買個單獨的模塊回來,本來打算3個模塊并聯使用,,奈何程序花了好幾天時間都沒有調試通過,后來模塊直接都不知道丟哪里去了。)。于是果斷重新就此準備自己重新制作一個。        因為是模塊,沒有相關的顯示屏,硬著頭皮問賣家能不能拿送個顯示屏................結果和預想的一樣。需要單獨購買。好吧,又買了一塊單片機的板子,到手拼接后,開始查資料制作,于是出現了此貼。

     從單片機板子和模塊到手后 到制作完成總共花了1天時間!附實物圖與相關程序,留給需要的人吧!其實還可以通過氣壓大小,有相應來計算出海拔高度。過段時間更新的時候我在上傳上來。。。。3合1模塊上的傳感器:CMCU-01 SHT20+BMP180+BH1750FVI


各傳感器的參數介紹:
================================================
SHT20是瑞士Sensirion 數字溫濕度傳感器。 SHT20數字溫濕度傳感器是眾多溫濕度傳感器中一款性價比高的產品,配有4C 代CMOSens®芯片。除了配有電容式相對濕度傳感器和能隙溫度傳感器外,該芯片還包含一個放大器、A/D 轉換器、OTP 內存和數字處理單元。用量以百萬計,且應用領域廣泛。該類傳感器適用于對成本極其敏感但又注重品質的大批量生產的行業。 同時具有很高的溫度精度和濕度精度。 SHT20系列模塊專為低功耗小體積應用設計,具有良好的品質、快的響應速度、抗干擾能力強、性價比高等優點、極低的功耗。懂行的人都知道它的優點。傳感器重要參數:                   濕度測量范圍:0—100%RH
濕度精度范圍(10%RH to 95%RH): ±3%RH溫度測量范圍: -40℃—125℃  (-40 - +257°F)溫度精度范圍:±0.3℃濕度遲滯:±1%RH測量時間:50ms年漂移量:-0.5%RH/year響應時間:5 s
=================================================
BMP180是一款高精度、小體積、超低能耗的壓力傳感器,可以應用在移動設備中
它的性能卓越,絕對精度最低可以達到0.03hPa,并且耗電極低,只有3μA,采用強大的8-pin陶瓷無引線芯片承載(LCC)超薄封裝,可以通過I2C總線直接與各種微處理器相連
主要特點:
壓力范圍:300~1100hPa(海拔9000米~-500米),從這里可以看出來,該模塊還可以通過公式計算海拔高度哦~
低功耗:5μA,在標準模式
高精度:低功耗模式下,分辨率為0.06hPa(0.5米)
高線性模式下,分辨率為0.03hPa(0.25米)

======================================================BH1750FVI
采用ROHM原裝BH1750FVI芯片
光照度范圍:0-65535 lx   (有沒有發現比光敏電阻強N倍?)
傳感器內置16bitAD轉換器
直接數字輸出,省略復雜的計算,省略標定
不區分環境光源
接近于視覺靈敏度的分光特性
可對廣泛的亮度進行1勒克斯的高精度測定

===============================================

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include"LCD1602.h"

  4. #define uchar unsigned char                // 以后unsigned char就可以用uchar代替
  5. #define uint  unsigned int                // 以后unsigned int 就可以用uint 代替


  6. uchar rxfalg=1;
  7. uchar Byte1,Byte2,Byte3,Byte4,Byte5,Byte6,Byte7,Byte8,Byte9,Byte10,Byte11,Byte12,Byte13,Byte14,Byte15,Byte15,Byte16;

  8. uint Light,Pressure,Temp; //定義的光照強度,氣壓,溫度。
  9. uchar Humi; //濕度
  10. /*********************************************************/
  11. // 毫秒級的延時函數,time是要延時的毫秒數
  12. /*********************************************************/
  13. void DelayMs(uint time)
  14. {
  15.         uint i,j;
  16.         for(i=0;i<time;i++)
  17.                 for(j=0;j<112;j++);
  18. }



  19. /*********************************************************/
  20. // 串口初始化
  21. /*********************************************************/
  22. void UartInit()
  23. {
  24.         SCON = 0x50;        // 配置串口寄存器
  25.         TMOD = 0x20;        // 配置定時器寄存器
  26.         TH1  = 0xfd;        // 計算波特率的值為9600
  27.         TL1  = 0xfd;        // 計算波特率的值為9600
  28.         EA   = 1;                        // 打開總中斷
  29.         ES   = 1;                        // 打開串口中斷
  30.         TR1  = 1;                        // 啟動定時器
  31. }


  32. /*********************************************************/
  33. // 主函數
  34. /*********************************************************/
  35. void main(void)
  36. {

  37.   LCDInt(); //液晶初始化
  38.         UartInit();                                                        // 串口初始化
  39.   DelayMs(500);

  40.              SetXY(0,0); // 光照
  41.                          LCDWriteDate('L');
  42.                          LCDWriteDate(':');
  43.              SetXY(0,7);
  44.              LCDWriteDate('L');
  45.              LCDWriteDate('x');
  46.        
  47.              SetXY(1,0); // 氣壓
  48.                          LCDWriteDate('P');
  49.                          LCDWriteDate(':');
  50.              SetXY(1,8);
  51.              LCDWriteDate('K');
  52.              LCDWriteDate('p');
  53.           
  54.             
  55.              SetXY(0,10); // 溫度
  56.                          LCDWriteDate('T');
  57.                          LCDWriteDate(':');
  58.             // SetXY(0,15); //
  59.                         // LCDWriteDate(0XDF);
  60.                        
  61.              SetXY(1,11); //濕度
  62.                          LCDWriteDate('H');
  63.                          LCDWriteDate(':');
  64.                          SetXY(1,15); //
  65.        LCDWriteDate('%');
  66.                        
  67.        
  68.         while(1)
  69.         {
  70.                
  71.                  
  72.                 if(rxfalg==0)
  73.                 {
  74.                          rxfalg=1;
  75.                  
  76.                   //光照強度
  77.                    SetXY(0,2); //
  78.        LCDWriteDate(Light/10000+0x30);
  79.                          LCDWriteDate(Light%10000/1000+0x30);
  80.                          LCDWriteDate(Light%1000/100+0x30);
  81.                          LCDWriteDate(Light%100/10+0x30);
  82.                          LCDWriteDate(Light%10+0x30);
  83.                        
  84.                          //氣壓強度
  85.                    SetXY(1,2); //
  86.        LCDWriteDate(Pressure/10000+0x30);
  87.                          LCDWriteDate(Pressure%10000/1000+0x30);
  88.                          LCDWriteDate(Pressure%1000/100+0x30);
  89.                          LCDWriteDate('.');
  90.                          LCDWriteDate(Pressure%100/10+0x30);
  91.                          LCDWriteDate(Pressure%10+0x30);
  92.                        
  93.                          //溫度
  94.                    SetXY(0,12); //
  95.        LCDWriteDate(Temp/100+0x30);
  96.                          LCDWriteDate(Temp%100/10+0x30);
  97.                          LCDWriteDate('.');
  98.        LCDWriteDate(Temp%10+0x30);
  99.                          
  100.                          //濕度
  101.                    SetXY(1,13); //
  102.        LCDWriteDate(Humi/10+0x30);
  103.        LCDWriteDate(Humi%10+0x30);
  104.                        
  105.                 }
  106.                
  107.            DelayMs(500);
  108. }

  109. }

  110. /*********************************************************/
  111. // 串口中斷服務程序
  112. /*********************************************************/
  113. void UartInt(void) interrupt 4
  114. {
  115.       ES = 0;                           //關串口中斷,防止中斷嵌套

  116.                         while(!RI);                        // 固定位0XAA
  117.                         Byte1=SBUF;
  118.                         RI=0;

  119.                         while(!RI);                        // Byte2 預留
  120.                         Byte2=SBUF;
  121.                         RI=0;
  122.                        
  123.                         while(!RI);                        // Byte3 預留
  124.                         Byte3=SBUF;
  125.                         RI=0;
  126.                        
  127.                         while(!RI);                        // Byte4 預留
  128.                         Byte4=SBUF;
  129.                         RI=0;
  130.        
  131.                   while(!RI);                        // Byte5 預留
  132.                         Byte5=SBUF;
  133.                         RI=0;
  134.                        
  135.                         while(!RI);                        // Byte6 光照強度高8位
  136.                   Byte6=SBUF;
  137.                         RI=0;
  138.                        
  139.                         while(!RI);                        // Byte7 光照強度低8位
  140.                         Byte7=SBUF;
  141.                         RI=0;
  142.                        
  143.                         while(!RI);                        // Byte8  氣壓高8位
  144.                         Byte8=SBUF;
  145.                         RI=0;
  146.                        
  147.                         while(!RI);                        // Byte9  氣壓低8位
  148.                         Byte9=SBUF;
  149.                         RI=0;
  150.                        
  151.                         while(!RI);                        // Byte10 溫度正負標志位
  152.                         Byte10=SBUF;
  153.                         RI=0;
  154.                        
  155.                         while(!RI);                        // Byte11 溫度高8位
  156.                         Byte11=SBUF;
  157.                         RI=0;
  158.                        
  159.                         while(!RI);                        // Byte12  溫度低8位
  160.                         Byte12=SBUF;
  161.                         RI=0;
  162.                        
  163.                         while(!RI);                // Byte13  濕度
  164.                         Byte13=SBUF;
  165.                         RI=0;
  166.                        
  167.                         while(!RI);                        // Byte14 校驗和 高8位
  168.                         Byte14=SBUF;
  169.                         RI=0;
  170.                        
  171.                         while(!RI);                        // Byte15  校驗和 低8位
  172.                         Byte15=SBUF;
  173. ……………………

  174. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
程序,相關文檔資料測試通過.zip (3.78 MB, 下載次數: 337)

評分

參與人數 2黑幣 +115 收起 理由
perfect123 + 15 共享資料的黑幣獎勵!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:403916 發表于 2019-2-22 20:26 | 只看該作者
謝謝樓主分享經驗哦,互相進步!
回復

使用道具 舉報

板凳
ID:403916 發表于 2019-2-22 20:30 | 只看該作者
問一下這個單片機板子叫什么啊?可以從網上買到嗎?
回復

使用道具 舉報

地板
ID:479446 發表于 2019-2-22 21:33 | 只看該作者
1061897836 發表于 2019-2-22 20:30
問一下這個單片機板子叫什么啊?可以從網上買到嗎?

單片機板子可以在網上買的,賣模塊的那里一般就有,我就是懶得焊接,所以買了一個現成的板子。  其實可以自己焊接一個最小系統板,另外加一塊液晶顯示屏LCD1602就可以了。程序里面都有液晶顯示屏的IO口注釋。測出來的數據非常準確。
回復

使用道具 舉報

5#
ID:82854 發表于 2019-2-25 19:41 來自觸屏版 | 只看該作者
請問Tx Rx 分別接單片機什么端口?謝謝。。
回復

使用道具 舉報

6#
ID:479446 發表于 2019-2-26 17:37 | 只看該作者
tclgx 發表于 2019-2-25 19:41
請問Tx Rx 分別接單片機什么端口?謝謝。。

單片機的串口。就是P3.0(RXD) 和P3.1(TXD)
回復

使用道具 舉報

7#
ID:245466 發表于 2019-3-6 23:38 | 只看該作者
太棒了,好資料。
回復

使用道具 舉報

8#
ID:130345 發表于 2019-3-7 11:04 | 只看該作者
樓主買得是50塊一個的那種串口輸出的模塊嗎?記得那家淘寶有分三種價位。
回復

使用道具 舉報

9#
ID:479446 發表于 2019-3-9 18:39 | 只看該作者
持勤補拙 發表于 2019-3-7 11:04
樓主買得是50塊一個的那種串口輸出的模塊嗎?記得那家淘寶有分三種價位。

嗯。是的。串口的。好像是40塊錢吧
回復

使用道具 舉報

10#
ID:461137 發表于 2019-3-14 17:45 | 只看該作者
LZ,能說說BMP180+BH1750的各個接口都接單片機的哪個接口嗎?
回復

使用道具 舉報

11#
ID:479446 發表于 2019-3-16 18:53 | 只看該作者
lml0508 發表于 2019-3-14 17:45
LZ,能說說BMP180+BH1750的各個接口都接單片機的哪個接口嗎?

單片機串口
回復

使用道具 舉報

12#
ID:461137 發表于 2019-3-16 21:27 | 只看該作者

那BMP1750有個ADDR引腳接單片機哪個端口呢?
回復

使用道具 舉報

13#
ID:479446 發表于 2019-3-19 19:42 | 只看該作者
lml0508 發表于 2019-3-16 21:27
那BMP1750有個ADDR引腳接單片機哪個端口呢?

不用接。
回復

使用道具 舉報

14#
ID:340738 發表于 2019-4-28 19:04 | 只看該作者
請問大神,用stm32f103rct6,iic模式下,可以傳送三個傳感器的數據嗎?

回復

使用道具 舉報

15#
ID:261045 發表于 2019-5-17 22:34 | 只看該作者
謝謝,很好的東東,正需要它,下載看看,謝謝啦!!!!
回復

使用道具 舉報

16#
ID:261045 發表于 2019-5-17 22:35 | 只看該作者
謝謝,正需要這個東東,就不知道程序能不能用,下載來看看再說啦!!!!
回復

使用道具 舉報

17#
ID:261045 發表于 2019-5-17 22:44 | 只看該作者
SHT20+BH1750+BMP180,這幾個傳感器都在那個小板上面嗎?謝謝
回復

使用道具 舉報

18#
ID:585365 發表于 2019-9-11 20:28 | 只看該作者
正在學習這方面的知識,謝謝
回復

使用道具 舉報

19#
ID:92810 發表于 2019-10-29 14:34 | 只看該作者
太棒了,好資料。
回復

使用道具 舉報

20#
ID:165363 發表于 2019-11-21 17:00 | 只看該作者
感謝樓主分享資料和例程。
回復

使用道具 舉報

21#
ID:214276 發表于 2020-3-13 17:01 | 只看該作者
下載來試試看。我也有個BMP180的模塊調試好了。
回復

使用道具 舉報

22#
ID:105771 發表于 2020-5-13 08:46 | 只看該作者
多謝分享,正好在找
回復

使用道具 舉報

23#
ID:65237 發表于 2020-5-14 21:21 | 只看該作者
謝謝分享 收下了
回復

使用道具 舉報

24#
ID:85508 發表于 2022-12-11 18:12 | 只看該作者
溫度、濕度、氣壓、照度,功能強大
回復

使用道具 舉報

25#
ID:229502 發表于 2024-5-16 16:48 | 只看該作者
除了main.c,其他傳感器函數沒有
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人av激情 | 国产在线中文字幕 | 91精品国产91久久综合桃花 | 欧美久久精品一级c片 | 欧美电影大全 | 亚洲欧美一区二区三区情侣bbw | 久久激情网| 欧美一级毛片在线播放 | 精品二| 欧美一级视频免费看 | 国产成人99久久亚洲综合精品 | 国产精品自在线 | 美女爽到呻吟久久久久 | 91电影| 91久久久久| 91九色在线观看 | 亚洲精品乱码久久久久久按摩观 | 在线观看三级av | 成人激情视频在线观看 | 中文字幕在线观看第一页 | 久久蜜桃av | 亚洲欧洲精品在线 | 精品毛片在线观看 | h片在线观看免费 | 黄色片视频免费 | 久久久久亚洲精品 | 色中文在线 | 日韩视频二区 | 亚洲精品久久久蜜桃网站 | 日韩伦理一区二区 | 成人激情视频免费在线观看 | 一区二区三区精品 | 天堂中文资源在线 | 国产一区二区毛片 | 欧美日韩国产一区二区三区 | 欧美亚洲国产成人 | 少妇久久久 | 中文字幕综合在线 | 夜夜爽夜夜操 | 精品亚洲永久免费精品 | 日韩精品一区二区三区视频播放 |