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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+NRF2401+DHT11遠(yuǎn)程溫濕度控制程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:198608 發(fā)表于 2020-11-21 19:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
本設(shè)計(jì)是基于 STC89C52 單片機(jī)和 DHT11 實(shí)現(xiàn)溫濕度的測量。單片機(jī)在本系統(tǒng)中溫濕度,時鐘輸入和顯示控制器件,DHT11 被用作溫濕度數(shù)據(jù)的采集和溫濕度輸出器件。最后采 nRF24L01 模塊對采集到的溫濕度時間 數(shù)據(jù)進(jìn)行無線傳輸,在接收端通過 LCD1602 液晶顯示模塊顯示接收的溫濕度,從而實(shí)現(xiàn)溫濕度的采集和無線傳送。
主要步驟:
1.通過查閱資料,了解無線溫濕度采集系統(tǒng)的研究背景、國內(nèi)外發(fā)展?fàn)顩r;
2.熟悉 LCD1602DHT11NRF24L01蜂鳴器 等模塊的基功能;
3.熟悉 Keil C51 軟件和 STC-ISP 軟件;
4.使用 Keil C51 軟件編寫應(yīng)用序;
5.使用 STC-ISP 軟件將編譯的程燒寫進(jìn)單片機(jī)
6.調(diào)試并分析;


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


單片機(jī)源程序如下:
  1. #include ".\\nRF24L01\\nRF24L01.h"
  2. #include "def.h"
  3. typedef unsigned char unint8;
  4. typedef unsigned char unint16;
  5. #define uint unsigned int
  6. unint8 com_data,untemp,temp;
  7. uchar  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
  8. uchar  U8FLAG,U8comdata;
  9. uchar  U8count,U8temp;
  10. uchar  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
  11. unint8 respond;
  12. void Delay(unsigned int s)
  13. {
  14.         unsigned int i;
  15.         for(i=0; i<s; i++);
  16.         for(i=0; i<s; i++);
  17. }

  18. /*******************************************************************************************************
  19.                                                                                                                                                                                 DHT11相關(guān)命令            
  20. ********************************************************************************************************/
  21. void Delay1(uint j)
  22. {  
  23.         uchar i;
  24.         for(;j>0;j--)
  25.         {         
  26.                 for(i=0;i<27;i++);
  27.         }
  28. }

  29. void  Delay_10us(void)
  30. {
  31.         uchar i;
  32.         i--;
  33.         i--;
  34.         i--;
  35.         i--;
  36.         i--;
  37.         i--;
  38. }




  39. void  COM(void)
  40. {
  41.         uchar i;
  42.         for(i=0;i<8;i++)           
  43.         {
  44.                 U8FLAG=2;        
  45.                 while((!DHT11)&&U8FLAG++);
  46.                 Delay_10us();
  47.                 Delay_10us();
  48.                 Delay_10us();
  49.                 U8temp=0;
  50.                 if(DHT11)U8temp=0;
  51.                 U8FLAG=2;
  52.                 while((DHT11)&&U8FLAG++);
  53.                 //超時則跳出for循環(huán)                  
  54.                 if(U8FLAG==0)break;
  55.                 //判斷數(shù)據(jù)位是0還是1         
  56.                 // 如果高電平高過預(yù)定0高電平值則數(shù)據(jù)位為 1
  57.                 U8comdata<<=1;
  58.                 U8comdata|=U8temp;        //
  59.         }
  60. }
  61. //--------------------------------
  62. //-----濕度讀取子程序 ------------
  63. //--------------------------------
  64. //----以下變量均為全局變量--------
  65. //----溫度高8位== U8T_data_H------
  66. //----溫度低8位== U8T_data_L------
  67. //----濕度高8位== U8RH_data_H-----
  68. //----濕度低8位== U8RH_data_L-----
  69. //----校驗(yàn) 8位 == U8checkdata-----
  70. //----調(diào)用相關(guān)子程序如下----------
  71. //---- Delay();, Delay_10us();,COM();
  72. //--------------------------------

  73. void RH(void)
  74. {
  75.         //主機(jī)拉低18ms
  76.         DHT11=0;
  77.         Delay1(180);
  78.         ET0 = 0;//關(guān)閉定時器0中斷
  79.         DHT11=1;
  80.         //總線由上拉電阻拉高 主機(jī)延時20us
  81.         Delay_10us();
  82.         Delay_10us();
  83.         Delay_10us();
  84.         Delay_10us();
  85.         //主機(jī)設(shè)為輸入 判斷從機(jī)響應(yīng)信號
  86.         DHT11=0;
  87.         //判斷從機(jī)是否有低電平響應(yīng)信號 如不響應(yīng)則跳出,響應(yīng)則向下運(yùn)行         
  88.         if(!DHT11)                 //T !         
  89.         {
  90.                 U8FLAG=2;
  91.                 //判斷從機(jī)是否發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束         
  92.                 while((!DHT11)&&U8FLAG++);
  93.                 U8FLAG=2;
  94.                 //判斷從機(jī)是否發(fā)出 80us 的高電平,如發(fā)出則進(jìn)入數(shù)據(jù)接收狀態(tài)
  95.                 while((DHT11)&&U8FLAG++);
  96.                 //數(shù)據(jù)接收狀態(tài)                 
  97.                 COM();
  98.                 U8RH_data_H_temp=U8comdata;
  99.                 COM();
  100.                 U8RH_data_L_temp=U8comdata;
  101.                 COM();
  102.                 U8T_data_H_temp=U8comdata;
  103.                 COM();
  104.                 U8T_data_L_temp=U8comdata;
  105.                 COM();
  106.                 U8checkdata_temp=U8comdata;
  107.                 DHT11=0;
  108.                 ET0 = 1;//開啟定時器0中斷
  109.                 //數(shù)據(jù)校驗(yàn)

  110.                 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
  111.                 if(U8temp==U8checkdata_temp)
  112.                 {
  113.                         U8RH_data_H=U8RH_data_H_temp;
  114.                         U8RH_data_L=U8RH_data_L_temp;
  115.                         U8T_data_H=U8T_data_H_temp;
  116.                         U8T_data_L=U8T_data_L_temp;
  117.                         U8checkdata=U8checkdata_temp;
  118.                 }//fi
  119.         }//fi

  120. }
  121.         

  122. void main(void)
  123. {
  124.         unsigned char leng =0;
  125.         unsigned char tf =0;
  126.         unsigned char TxBuf[20]={0};         //
  127.         unsigned char RxBuf[20]={0};        
  128.         led=0;
  129.     init_io() ;
  130.         while(1)
  131.         {           
  132.                inerDelay_us(100);
  133.                 CE=0;   // chip enable
  134.                 CSN=0;   // Spi disable
  135.                 SCK=0;   
  136.                                 RH();//溫濕度檢測受定時器影響,故在驅(qū)動程序中關(guān)閉定時器中斷,減小掃描頻率才能更好的實(shí)現(xiàn)紅外接收
  137.                    TxBuf[0] =U8T_data_H;
  138.                    TxBuf[2] =U8RH_data_H;
  139.                    tf = 0 ;
  140.            
  141.             SPI_RW_Reg(WRITE_REG+STATUS, 0xff);      //
  142.             CSN=0;
  143.             SPI_RW(FLUSH_RX);//用于清空FIFO !!關(guān)鍵!!不然會出現(xiàn)意想不到的后果!!!大家記住!!
  144.             CSN=1;                 
  145.            if (tf==0)
  146.        {        
  147.                 led=0;
  148.                         nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
  149.                         TxBuf[0] = 0x00;
  150.                         TxBuf[2] = 0x00;
  151.                         tf=0;
  152.                         Delay(60000);
  153.                         led=0;
  154.            }

  155. ……………………

  156. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有程序51hei提供下載:
程序源碼與參考資料.7z (1.93 MB, 下載次數(shù): 81)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品区 | www久久av| 国产一区二区a | 日韩av一区二区在线观看 | 日韩欧美一区在线 | 成人精品视频在线观看 | 中文字幕在线一区二区三区 | www.av在线| 女生羞羞网站 | 欧美一区二区视频 | 国产欧美视频一区二区三区 | 亚洲视频在线播放 | 国产1区2区 | 黄色大片网站 | 亚洲一区二区三区在线播放 | 欧美中文一区 | 国产视频一区在线 | 亚州一区二区三区 | 国产高清视频在线观看播放 | 一区二区三区中文字幕 | 成年人在线电影 | 成人视屏在线观看 | 日本一卡精品视频免费 | 福利视频网| www亚洲一区 | 黄色在线免费网站 | 综合激情网 | 欧美一区二区三区 | 亚洲精品aⅴ | 亚洲人成网站777色婷婷 | 日韩欧美视频 | 国产精品色一区二区三区 | 亚洲精品字幕 | 超碰在线97国产 | 中文字幕日韩欧美一区二区三区 | 91夜色在线观看 | 香蕉久久a毛片 | 青青草中文字幕 | 99re国产精品 | www.亚洲 | 久久久久久久av麻豆果冻 |