標(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
通信控制機(jī)代碼+采集節(jié)點(diǎn)代碼
單片機(jī)源程序如下:
代碼:
/**************************************************************************************
*文件名稱:main.c
*說明:溫度采集節(jié)點(diǎn)主函數(shù)文件
*功能:管理各驅(qū)動函數(shù)實(shí)現(xiàn)無線溫度采集
*修改:無
*版本:V1.0.0
*作者:YuanDong
*時(shí)間:2009.07.03
*************************************************************************************/
#include "nRF905.h"
#include "ds18b20.h"
#include "Include.h"
/**********************變量定義******************************************************/
uchar TxMemory[80]; //無線發(fā)送數(shù)據(jù)緩沖區(qū)
uchar TxRxd=0; //寄存器接收指針
uchar TxTxd=0; //寄存器發(fā)送指針
uchar TxZuShu=0; //每包發(fā)送的組數(shù)
uint TxBufGeShu=0; //無線接收寄存器中未發(fā)送完的個(gè)數(shù)
uchar TXFlag=0; //包結(jié)束標(biāo)志位
extern void nRF_Delay(uint time); //延時(shí)函數(shù),單位一個(gè)時(shí)鐘周期
/****************************************************************************************
*函數(shù)名稱:CPU_Init(void)
*函數(shù)功能:系統(tǒng)初始化
*函數(shù)入口:無
*函數(shù)出口:無
***************************************************************************************/
void cpu_Init(void)
{
nRF905_Init(); //nRF905初始化
ds18b20_init(); //ds18b20初始化
serial_Init(); //串口通信初始化
relay_Init(); //繼電器輸出初始化
buzzer_Init(); //揚(yáng)聲器輸出初始化
init_key(); //鍵盤初始化
sei();
}
/******************************************************************************************函數(shù)名稱:DataDispose(uchar num)
*函數(shù)功能:數(shù)據(jù)處理子函數(shù)
*函數(shù)入口:要處理的緩沖區(qū)數(shù)據(jù)個(gè)數(shù)num
*函數(shù)出口:無
*****************************************************************************************/
void DataDispose(uchar num)
{
uchar i;
for(i=0;i<num;i++)
{
TxdBuf[i]=TxMemory[TxTxd];
TxTxd++;
if(TxTxd>79)
TxTxd=0;
TxBufGeShu--; //發(fā)送了1個(gè)字節(jié),個(gè)數(shù)減1
}
TxdBuf[4]=(TxZuShu<<4)|num; //標(biāo)志字節(jié),高位是組號,低位是這組里的字節(jié)個(gè)數(shù)
TxZuShu++;
if(TxZuShu>15)
TxZuShu=0;
for(i=0;i<3;i++)
{
nRF905_SendData();
}
}
/*****************************************************************************************
*函數(shù)名稱:ReceiveEnd(void)
*函數(shù)功能:從nRF905接收完一包數(shù)據(jù)后,數(shù)據(jù)處理子函數(shù)
*函數(shù)入口:無
*函數(shù)出口:無
*****************************************************************************************/
void ReceiveEnd(void)
{
if(TxBufGeShu>=4) //還可以分組
for(;TxBufGeShu>=4;)
DataDispose(4); //整組,每組為四個(gè)字節(jié)
if(TxBufGeShu>0) //分完組后剩余的字節(jié),不多于4個(gè)
{
DataDispose(TxBufGeShu);
}
TXFlag=0;
sei(); //開總中斷
}
/******************************************************************************************函數(shù)名稱:TxdMain(void)
*函數(shù)功能:向nRF905發(fā)送數(shù)據(jù)主函數(shù)
*函數(shù)入口:無
*函數(shù)出口:無
*****************************************************************************************/
void TxdMain(void)
{
if(TXFlag==1)
ReceiveEnd();
else
{
if(TxBufGeShu>=4) //接收并積累夠4個(gè)字節(jié)后,分組發(fā)送
DataDispose(4); //整組,每組為四個(gè)字節(jié)
}
}
/*****************************************************************************************
*函數(shù)名稱:main(void)
*函數(shù)功能:主函數(shù)
*函數(shù)入口:無
*函數(shù)出口:無
*****************************************************************************************/
void main(void)
{
uchar i;
CPU_Init(); //CPU初始化
for(i=0;i<79;i++)
TxMemory[i]=i;
while(1)
{
RxdMain();
if((UartBusy==0)&&(RxBufGeShu==0)) SendPoint=RxRxd;
if((UartBusy==0)&&(RxBufGeShu>0)) //檢查串口中斷是否停止
{
UartBusy=1;
RxBufGeShu--;
UDR=RxMemory[SendPoint];
}
}//end while
}
所有資料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