標(biāo)題: 51單片機(jī)無線多路溫度采集系統(tǒng) 通信控制機(jī)和采集節(jié)點(diǎn)代碼 [打印本頁]

作者: v帆帆帆帆    時(shí)間: 2019-7-23 09:57
標(biāo)題: 51單片機(jī)無線多路溫度采集系統(tǒng) 通信控制機(jī)和采集節(jié)點(diǎn)代碼
本課題設(shè)計(jì)的是一套無線多路溫度數(shù)據(jù)采集系統(tǒng),主要用于對環(huán)境溫度的采集與監(jiān)控。系統(tǒng)采用基于無線網(wǎng)絡(luò)的設(shè)計(jì)思想和溫度采集技術(shù)。無線傳輸避免了遠(yuǎn)距離布線所帶來的施工困難,成本高的缺點(diǎn)。本設(shè)計(jì)用AT89C51單片機(jī)為主要硬件,設(shè)計(jì)了包括溫度采集,溫度顯示,系統(tǒng)控制,串口通信等外圍電路。單片機(jī)AT89C51作為主單片機(jī)完成測量和控制以及與通信單片機(jī)的數(shù)據(jù)通信、無線收發(fā)控制等功能。無線溫度數(shù)據(jù)采集系統(tǒng)是利用下位機(jī)設(shè)置溫度上下限和實(shí)時(shí)溫度的采集,并將結(jié)果傳輸?shù)缴衔粰C(jī),以達(dá)到對溫度的比較、控制。
主要模塊:AT89C51      溫度采集     溫度傳感器DS18B20   RS-232  MAX813      無線收發(fā)模塊PTR2000
0.png
0.png
通信控制機(jī)代碼+采集節(jié)點(diǎn)代碼

單片機(jī)源程序如下:

代碼:

  1. /**************************************************************************************
  2. *文件名稱:main.c
  3. *說明:溫度采集節(jié)點(diǎn)主函數(shù)文件
  4. *功能:管理各驅(qū)動函數(shù)實(shí)現(xiàn)無線溫度采集
  5. *修改:無
  6. *版本:V1.0.0
  7. *作者:YuanDong
  8. *時(shí)間:2009.07.03
  9. *************************************************************************************/
  10. #include "nRF905.h"
  11. #include "ds18b20.h"
  12. #include "Include.h"
  13. /**********************變量定義******************************************************/
  14. uchar TxMemory[80];                //無線發(fā)送數(shù)據(jù)緩沖區(qū)        
  15. uchar TxRxd=0;                                //寄存器接收指針
  16. uchar TxTxd=0;                                //寄存器發(fā)送指針
  17. uchar TxZuShu=0;                        //每包發(fā)送的組數(shù)
  18. uint  TxBufGeShu=0;                //無線接收寄存器中未發(fā)送完的個(gè)數(shù)
  19. uchar TXFlag=0;                                //包結(jié)束標(biāo)志位
  20. extern void nRF_Delay(uint time);  //延時(shí)函數(shù),單位一個(gè)時(shí)鐘周期
  21. /****************************************************************************************
  22. *函數(shù)名稱:CPU_Init(void)
  23. *函數(shù)功能:系統(tǒng)初始化
  24. *函數(shù)入口:無
  25. *函數(shù)出口:無
  26. ***************************************************************************************/
  27. void cpu_Init(void)
  28. {
  29.         nRF905_Init();                         //nRF905初始化
  30.         ds18b20_init();     //ds18b20初始化
  31.         serial_Init();       //串口通信初始化
  32.         relay_Init();        //繼電器輸出初始化
  33.         buzzer_Init();       //揚(yáng)聲器輸出初始化
  34.         init_key();          //鍵盤初始化
  35.         
  36.         sei();
  37. }
  38. /******************************************************************************************函數(shù)名稱:DataDispose(uchar num)
  39. *函數(shù)功能:數(shù)據(jù)處理子函數(shù)
  40. *函數(shù)入口:要處理的緩沖區(qū)數(shù)據(jù)個(gè)數(shù)num
  41. *函數(shù)出口:無
  42. *****************************************************************************************/
  43. void DataDispose(uchar num)
  44. {
  45.         uchar i;
  46.   for(i=0;i<num;i++)
  47.         {
  48.                 TxdBuf[i]=TxMemory[TxTxd];
  49.                 TxTxd++;
  50.                 if(TxTxd>79)        
  51.                          TxTxd=0;
  52.                 TxBufGeShu--;                                                      //發(fā)送了1個(gè)字節(jié),個(gè)數(shù)減1
  53.         }

  54.         TxdBuf[4]=(TxZuShu<<4)|num;                        //標(biāo)志字節(jié),高位是組號,低位是這組里的字節(jié)個(gè)數(shù)
  55.         TxZuShu++;
  56.         if(TxZuShu>15)        
  57.                  TxZuShu=0;
  58.         for(i=0;i<3;i++)
  59.         {
  60.                  nRF905_SendData();
  61.         }
  62. }
  63. /*****************************************************************************************
  64. *函數(shù)名稱:ReceiveEnd(void)
  65. *函數(shù)功能:從nRF905接收完一包數(shù)據(jù)后,數(shù)據(jù)處理子函數(shù)
  66. *函數(shù)入口:無
  67. *函數(shù)出口:無
  68. *****************************************************************************************/
  69. void ReceiveEnd(void)
  70. {
  71.         if(TxBufGeShu>=4)                                                //還可以分組
  72.                 for(;TxBufGeShu>=4;)
  73.                         DataDispose(4);                                        //整組,每組為四個(gè)字節(jié)               
  74.         if(TxBufGeShu>0)                                                //分完組后剩余的字節(jié),不多于4個(gè)
  75.         {
  76.                 DataDispose(TxBufGeShu);
  77.         }
  78.         TXFlag=0;
  79.         sei();                                                         //開總中斷
  80. }
  81. /******************************************************************************************函數(shù)名稱:TxdMain(void)
  82. *函數(shù)功能:向nRF905發(fā)送數(shù)據(jù)主函數(shù)
  83. *函數(shù)入口:無
  84. *函數(shù)出口:無
  85. *****************************************************************************************/
  86. void TxdMain(void)
  87. {
  88.         if(TXFlag==1)
  89.                 ReceiveEnd();
  90.         else
  91.         {
  92.                 if(TxBufGeShu>=4)                                //接收并積累夠4個(gè)字節(jié)后,分組發(fā)送
  93.                         DataDispose(4);                                //整組,每組為四個(gè)字節(jié)
  94.         }
  95. }
  96. /*****************************************************************************************
  97. *函數(shù)名稱:main(void)
  98. *函數(shù)功能:主函數(shù)
  99. *函數(shù)入口:無
  100. *函數(shù)出口:無
  101. *****************************************************************************************/
  102. void main(void)
  103. {
  104.         uchar i;
  105.         CPU_Init();                                                //CPU初始化
  106.         for(i=0;i<79;i++)
  107.                 TxMemory[i]=i;
  108.         
  109.         while(1)
  110.            {        
  111.                 RxdMain();
  112.                 if((UartBusy==0)&&(RxBufGeShu==0))  SendPoint=RxRxd;
  113.                 if((UartBusy==0)&&(RxBufGeShu>0))   //檢查串口中斷是否停止
  114.                 {
  115.                         UartBusy=1;        
  116.                         RxBufGeShu--;
  117.                         UDR=RxMemory[SendPoint];
  118.                 }
  119.            }//end while
  120. }

所有資料51hei提供下載:
51單片機(jī)無線多路溫度采集系統(tǒng).zip (36.54 KB)
(下載次數(shù): 77, 2019-7-23 09:47 上傳)

下載積分: 黑幣 -5




作者: zzcdfp    時(shí)間: 2019-8-24 16:55
謝謝分享 好東西
作者: 158987    時(shí)間: 2019-9-10 11:42
謝謝分享 好東西
作者: Captain銭    時(shí)間: 2019-10-19 12:30
謝謝分享 好東西




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