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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

無線溫濕度監測(NRF24L01+89c52+12864串行顯示+DS18B20+DHT11)

  [復制鏈接]
跳轉到指定樓層
樓主
無線溫濕度監測(NRF24L01+89c52+12864串行顯示+DS18B20+DHT11)
部分代碼如下:
想要一對多通信,經過簡單修改即可

  1. /****************************************************************************************/
  2. /*NRF24L01要更改收發端,只需要通過是否宏定義RX即可,#define RX為接收端,不定義則為發送端*/
  3. /***************************************************************************************/
  4. /**************************************************************************************/
  5. /*通過DS18B20測試當前環境溫度, 通過DHT11測試濕度,并通過12864串行顯示當前溫度值********/
  6. /*目前顯示范圍: 溫度-55~ +125攝氏度,濕度20%-95% 濕度測量誤差:+-5%*******************/
  7. /*************************************************************************************/

  8. #include "reg52.H"
  9. #include "intrins.h"
  10. #include "math.H"  //要用到取絕對值函數abs()

  11. #include "DELAY.H"
  12. #include "DS18B20.H"
  13. #include "12864.h"
  14. #include "DHT11.H"
  15. #include "nRF24L01.H"

  16. #define uchar unsigned char
  17. #define uint unsigned int

  18. //#define RX          //接收端則要定義此,由于采用條件編譯,所以會在不同情況時,有函數沒被用到,報warning可不用在意

  19. extern uchar U8RH_data_H,U8RH_data_L;        //需要應用到DHT11中的濕度全局變量
  20. int tempValue;                                                        //溫度數據用了全局變量
  21.   

  22. uchar Rx_Buf[RX_PLOAD_WIDTH];               
  23. uchar Tx_Buf[TX_PLOAD_WIDTH];


  24. /*MAIN*/


  25. void main()
  26. {
  27.   unsigned char TMPS[] = {0,0,0,0x2e,0,0};
  28.   unsigned char RHS[] = {0,0,0x2e,0,0x25};
  29.   uchar i,RH_H,RH_L,tmp_H,tmp_L,TMP;  uint tmp;int TMP_Value,tmpvalue;
  30.   float t;

  31.   LCD_INIT();         //LCD12864定義

  32.   while(1)
  33.   {
  34.    #ifndef RX                   //條件編譯

  35.                   DS_sendChangeCmd();                   //啟動DS18B20溫度轉換
  36.                 DS_sendReadCmd();                   //發送DS18B20讀取數據命令
  37.                 tmp_L = DS18B20_RByte();   /*讀取的兩個字節分別寫入tmp_L和tmp_H
  38.                                                                 */
  39.                 tmp_H = DS18B20_RByte();
  40.                 RH();                                        //DHT11初始化
  41.             RH_H= U8RH_data_H;                 //全局定義的濕度高八位給RH_H暫存
  42.         RH_L= U8RH_data_L;                 //全局定義的濕度低八位給RH_L暫存
  43.                 SPI_RW(FLUSH_TX);                //清寄存器
  44.                 Tx_Buf[0] = tmp_L;                //溫度低八位
  45.                 Tx_Buf[1] = tmp_H;                //溫度高八位
  46.                 Tx_Buf[2] = RH_L;                //濕度低八位
  47.                 Tx_Buf[3] = RH_H;                //濕度高八位
  48.             NRF24L01_Init_TX(1);          //初始化,用通道1發送
  49.             nRF24L01_TxPacket(Tx_Buf);          //發送TX寄存器數據
  50.                 Tx_Buf[0] = 0;
  51.                 Tx_Buf[1] = 0;
  52.                 Tx_Buf[2] = 0;
  53.                 Tx_Buf[3] = 0;

  54.            
  55.         #endif
  56.            
  57.         #ifdef RX                         //條件編譯
  58.                
  59.                 NRF24L01_Init_RX(1);           //接收時先初始化NRF24L01,注意為Init_RX(1),通道1接收        
  60.                 nRF24L01_RxPacket(Rx_Buf);         //讀取RX寄存器內數據
  61.                
  62.                  /*溫濕度處理*/
  63.         
  64.                 lcd_setaddr(1,0);                                //“溫度”漢字在LCD12864顯示位置
  65.                 lcd_putstr("溫度:");
  66.                
  67.                 /*溫濕度高低八位分別暫存*/
  68.                 tmp_L = Rx_Buf[0];                                
  69.                 tmp_H = Rx_Buf[1];
  70.                 RH_L  = Rx_Buf[2];
  71.                 RH_H  = Rx_Buf[3];
  72.                
  73.                 /*溫度數據處理*/
  74.                
  75.                 TMP_Value = tmp_H;
  76.                 TMP_Value <<= 8;
  77.                 TMP_Value |= tmp_L;
  78.                 t = TMP_Value * 0.0625;
  79.                 TMP_Value = t * 100 + (TMP_Value > 0 ? 0.5 : -0.5);
  80.                 tempValue = TMP_Value;
  81.                 tmp = abs(tempValue);
  82.                 TMPS[0] = 0x30+tmp / 10000;
  83.                 TMPS[1] = 0x30+tmp % 10000 / 1000;
  84.                 TMPS[2] = 0x30+tmp % 1000 / 100;
  85.                 TMPS[4] = 0x30+tmp % 100 / 10;
  86.                 TMPS[5] = 0x30+tmp % 10;
  87.                 /*****************/
  88.                 lcd_setaddr(1,3);                          //LCD12864溫度數據寫入位置
  89.         for(i = 0;i<6;i++)
  90.              {
  91.           lcd_wdata(TMPS[i]);                  //連續寫入溫度數據到LCD12864
  92.         }
  93.         lcd_setaddr(1,6);                         //寫入“℃”在LCD12864的顯示位置
  94.         lcd_putstr("℃");
  95.                
  96.                 /*以下為濕度*/
  97.            
  98.                    lcd_setaddr(2,0);
  99.             lcd_putstr("濕度:");
  100.                
  101.                 /*濕度數據處理*/
  102.    
  103.                 RHS[0] = 0x30+RH_H/10;         
  104.             RHS[1] = 0x30+RH_H%10;
  105.             RHS[3] = 0x30+RH_L/10;
  106.                 /* *************** */
  107.             lcd_setaddr(2,3);           //LCD12864濕度數據顯示位置
  108.             for(i = 0;i<5;i++)
  109.             {
  110.               lcd_wdata(RHS[i]);   //連續寫入濕度數據到LCD12864
  111.             }

  112.   #endif
  113.   }
  114. }
復制代碼



無線溫濕度監測.zip

80.8 KB, 下載次數: 355, 下載積分: 黑幣 -5

評分

參與人數 2黑幣 +105 收起 理由
kljie1000 + 5
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

來自 2#
ID:138884 發表于 2016-11-24 22:18 | 只看該作者
最新更新帖子  http://www.zg4o1577.cn/bbs/dpj-58407-1.html  包括PCB及原理圖,可調溫度報警值。
回復

使用道具 舉報

板凳
ID:138884 發表于 2016-11-10 15:31 | 只看該作者
NRF24L01模塊需要特別注意應用電壓!!
還有就是要仔細看它的使用手冊。
回復

使用道具 舉報

地板
ID:77523 發表于 2016-11-10 16:01 | 只看該作者
感謝分享!
回復

使用道具 舉報

5#
ID:145016 發表于 2016-11-14 19:35 | 只看該作者
不錯不錯。。。。
回復

使用道具 舉報

6#
ID:315674 發表于 2018-4-28 21:20 | 只看該作者
很厲害! 在下佩服佩服
回復

使用道具 舉報

7#
ID:522661 發表于 2019-5-7 12:46 來自手機 | 只看該作者
無線是指能顯示在手機上么
回復

使用道具 舉報

8#
ID:516728 發表于 2019-5-21 13:16 | 只看該作者
謝謝大佬
回復

使用道具 舉報

9#
ID:403027 發表于 2019-5-21 17:04 | 只看該作者
做過這個,樓主做的不錯
回復

使用道具 舉報

10#
ID:343102 發表于 2019-5-21 19:59 | 只看該作者
感謝分享!
回復

使用道具 舉報

11#
ID:505433 發表于 2019-7-18 15:36 | 只看該作者
蝶舞狂雷 發表于 2019-5-7 12:46
無線是指能顯示在手機上么

是指從一個主機將數據信息傳輸到另一個從機上進行處理(例如你在一個51單片機(主機)上收集溫度信息,發送給另一個51單片機(從機)上將溫度顯示出來),這僅我個人的理解
回復

使用道具 舉報

12#
ID:619669 發表于 2020-4-19 10:26 | 只看該作者
多謝!學習了
回復

使用道具 舉報

13#
ID:1019604 發表于 2022-4-19 09:08 | 只看該作者
#在這里快速回復#NRF24L01模塊需要特別注意應用電壓!!
回復

使用道具 舉報

14#
ID:1029948 發表于 2022-5-31 10:19 | 只看該作者
這個是只有程序嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99这里只有精品视频 | av黄色免费 | 久久精品小视频 | 免费在线播放黄色 | 波多野结衣一区二区 | 亚洲精品综合 | 国产视频亚洲视频 | 激情小视频 | 粉嫩一区二区三区国产精品 | 天堂av在线影院 | 91国内外精品自在线播放 | 波多野结衣一区二区三区 | 亚洲精品免费观看 | 国产丝袜人妖cd露出 | 婷婷免费视频 | 中文字幕在线不卡播放 | 国产精品毛片av一区 | 久久久久久国产免费视网址 | 色综合久久久久 | 少妇午夜一级艳片欧美精品 | 日韩在线视频一区二区三区 | 欧美a∨ | 一区二区三区在线电影 | 久久久久久久久久久91 | 青青草原精品99久久精品66 | 日韩视频一区在线观看 | 超碰免费在线 | 午夜免费av| 久久伊人一区二区 | 亚洲视频一区在线 | 午夜在线 | 国产精品国产三级国产aⅴ中文 | 日韩伦理一区二区 | 久草免费在线视频 | 欧美精品一区二区三区蜜桃视频 | 91一区二区三区 | 精品1区2区| 亚洲国产精品精华素 | 91资源在线 | 成人在线小视频 | 国产一区二区视频在线 |