欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機SHT20+BH1750+BMP180溫濕度、氣壓、光照度三合一設(shè)計 [打印本頁]

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

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


各傳感器的參數(shù)介紹:
================================================
SHT20是瑞士Sensirion 數(shù)字溫濕度傳感器。 SHT20數(shù)字溫濕度傳感器是眾多溫濕度傳感器中一款性價比高的產(chǎn)品,配有4C 代CMOSens®芯片。除了配有電容式相對濕度傳感器和能隙溫度傳感器外,該芯片還包含一個放大器、A/D 轉(zhuǎn)換器、OTP 內(nèi)存和數(shù)字處理單元。用量以百萬計,且應(yīng)用領(lǐng)域廣泛。該類傳感器適用于對成本極其敏感但又注重品質(zhì)的大批量生產(chǎn)的行業(yè)。 同時具有很高的溫度精度和濕度精度。 SHT20系列模塊專為低功耗小體積應(yīng)用設(shè)計,具有良好的品質(zhì)、快的響應(yīng)速度、抗干擾能力強、性價比高等優(yōu)點、極低的功耗。懂行的人都知道它的優(yōu)點。傳感器重要參數(shù):                   濕度測量范圍:0—100%RH
濕度精度范圍(10%RH to 95%RH): ±3%RH溫度測量范圍: -40℃—125℃  (-40 - +257°F)溫度精度范圍:±0.3℃濕度遲滯:±1%RH測量時間:50ms年漂移量:-0.5%RH/year響應(yīng)時間:5 s
=================================================
BMP180是一款高精度、小體積、超低能耗的壓力傳感器,可以應(yīng)用在移動設(shè)備中
它的性能卓越,絕對精度最低可以達到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   (有沒有發(fā)現(xiàn)比光敏電阻強N倍?)
傳感器內(nèi)置16bitAD轉(zhuǎn)換器
直接數(shù)字輸出,省略復(fù)雜的計算,省略標定
不區(qū)分環(huán)境光源
接近于視覺靈敏度的分光特性
可對廣泛的亮度進行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. // 毫秒級的延時函數(shù),time是要延時的毫秒數(shù)
  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. // 主函數(shù)
  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. // 串口中斷服務(wù)程序
  112. /*********************************************************/
  113. void UartInt(void) interrupt 4
  114. {
  115.       ES = 0;                           //關(guān)串口中斷,防止中斷嵌套

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

  119.                         while(!RI);                        // Byte2 預(yù)留
  120.                         Byte2=SBUF;
  121.                         RI=0;
  122.                        
  123.                         while(!RI);                        // Byte3 預(yù)留
  124.                         Byte3=SBUF;
  125.                         RI=0;
  126.                        
  127.                         while(!RI);                        // Byte4 預(yù)留
  128.                         Byte4=SBUF;
  129.                         RI=0;
  130.        
  131.                   while(!RI);                        // Byte5 預(yù)留
  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黑下載附件…………
復(fù)制代碼

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


作者: 1061897836    時間: 2019-2-22 20:26
謝謝樓主分享經(jīng)驗哦,互相進步!
作者: 1061897836    時間: 2019-2-22 20:30
問一下這個單片機板子叫什么啊?可以從網(wǎng)上買到嗎?
作者: 簡簡單單635    時間: 2019-2-22 21:33
1061897836 發(fā)表于 2019-2-22 20:30
問一下這個單片機板子叫什么啊?可以從網(wǎng)上買到嗎?

單片機板子可以在網(wǎng)上買的,賣模塊的那里一般就有,我就是懶得焊接,所以買了一個現(xiàn)成的板子。  其實可以自己焊接一個最小系統(tǒng)板,另外加一塊液晶顯示屏LCD1602就可以了。程序里面都有液晶顯示屏的IO口注釋。測出來的數(shù)據(jù)非常準確。
作者: tclgx    時間: 2019-2-25 19:41
請問Tx Rx 分別接單片機什么端口?謝謝。。
作者: 簡簡單單635    時間: 2019-2-26 17:37
tclgx 發(fā)表于 2019-2-25 19:41
請問Tx Rx 分別接單片機什么端口?謝謝。。

單片機的串口。就是P3.0(RXD) 和P3.1(TXD)
作者: k2866    時間: 2019-3-6 23:38
太棒了,好資料。
作者: 持勤補拙    時間: 2019-3-7 11:04
樓主買得是50塊一個的那種串口輸出的模塊嗎?記得那家淘寶有分三種價位。
作者: 簡簡單單635    時間: 2019-3-9 18:39
持勤補拙 發(fā)表于 2019-3-7 11:04
樓主買得是50塊一個的那種串口輸出的模塊嗎?記得那家淘寶有分三種價位。

嗯。是的。串口的。好像是40塊錢吧
作者: lml0508    時間: 2019-3-14 17:45
LZ,能說說BMP180+BH1750的各個接口都接單片機的哪個接口嗎?
作者: 簡簡單單635    時間: 2019-3-16 18:53
lml0508 發(fā)表于 2019-3-14 17:45
LZ,能說說BMP180+BH1750的各個接口都接單片機的哪個接口嗎?

單片機串口
作者: lml0508    時間: 2019-3-16 21:27
簡簡單單635 發(fā)表于 2019-3-16 18:53
單片機串口

那BMP1750有個ADDR引腳接單片機哪個端口呢?
作者: 簡簡單單635    時間: 2019-3-19 19:42
lml0508 發(fā)表于 2019-3-16 21:27
那BMP1750有個ADDR引腳接單片機哪個端口呢?

不用接。
作者: 倚天劍    時間: 2019-4-28 19:04
請問大神,用stm32f103rct6,iic模式下,可以傳送三個傳感器的數(shù)據(jù)嗎?


作者: cduhuapu    時間: 2019-5-17 22:34
謝謝,很好的東東,正需要它,下載看看,謝謝啦!!!!
作者: cduhuapu    時間: 2019-5-17 22:35
謝謝,正需要這個東東,就不知道程序能不能用,下載來看看再說啦!!!!
作者: cduhuapu    時間: 2019-5-17 22:44
SHT20+BH1750+BMP180,這幾個傳感器都在那個小板上面嗎?謝謝
作者: 247015164    時間: 2019-9-11 20:28
正在學(xué)習(xí)這方面的知識,謝謝
作者: gemxie    時間: 2019-10-29 14:34
太棒了,好資料。
作者: qpzmg    時間: 2019-11-21 17:00
感謝樓主分享資料和例程。
作者: chinarenxx    時間: 2020-3-13 17:01
下載來試試看。我也有個BMP180的模塊調(diào)試好了。
作者: 哈哈123    時間: 2020-5-13 08:46
多謝分享,正好在找
作者: 阿飛7812    時間: 2020-5-14 21:21
謝謝分享 收下了
作者: ge52    時間: 2022-12-11 18:12
溫度、濕度、氣壓、照度,功能強大
作者: huangjingjie    時間: 2024-5-16 16:48
除了main.c,其他傳感器函數(shù)沒有




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1