新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用nRF905和DS18B20制作的51單片機溫度數(shù)據(jù)無線傳輸系統(tǒng)

用nRF905和DS18B20制作的51單片機溫度數(shù)據(jù)無線傳輸系統(tǒng)

作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
我用DS18B20和兩套由nRF905組成的無線數(shù)傳模塊制作了一套溫度數(shù)據(jù)的無線傳輸采集系統(tǒng),已經(jīng)調(diào)試通過,效果良好。其硬件電路框圖如下:

本文引用地址:http://m.butianyuan.cn/article/201611/322865.htm

(AM,CD與單片機的P1.3,P1.4的連接未畫出)

DS18B20是MAXIM公司推出的數(shù)字溫度傳感器,將它測量的溫度數(shù)據(jù)直接送到單片機,再由單片機傳給nRF905,數(shù)據(jù)經(jīng)調(diào)制后被發(fā)送出去。nRF905工作于433/868/915MHz三個ISM(工業(yè)、科學和醫(yī)學)頻道,這里使用的是433MHz的載頻。另外一套nRF905無線數(shù)傳模塊收到信號后,經(jīng)解調(diào)得到的原始溫度數(shù)據(jù)傳給單片機,單片機通過串口把數(shù)據(jù)再傳給上位電腦,最后經(jīng)過處理的溫度數(shù)據(jù)連同日期、時間、采集點等相關(guān)信息可以被自動錄入電腦保存并實時顯示在電腦屏幕上。簡單的電腦數(shù)據(jù)顯示界面如下圖:


本系統(tǒng)實物照片如下:


照片中左邊為帶有DS18B20數(shù)字溫度傳感器的用作發(fā)射數(shù)據(jù)的nRF905無線數(shù)傳模塊,右邊為用作接收數(shù)據(jù)的nRF905數(shù)傳模塊,其中的單片機可以通過串口和電腦相連,上傳數(shù)據(jù)。

/

#include 
#include 
#define uchar unsigned char
#define uintunsigned int
#define WC0x00// Write configuration register command
#define RC0x10// Readconfiguration register command
#define WTP0x20// Write TX Payloadcommand
#define RTP0x21// ReadTX Payloadcommand
#define WTA0x22// Write TX Addresscommand
#define RTA0x23// ReadTX Addresscommand
#define RRP0x24// ReadRX Payloadcommand
typedef struct RFConfig
{
uchar n;
uchar buf[10];
}RFConfig;
code RFConfig RxTxConf =
{
10,
0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
};
// The content of this struct is nRF905s initialize data.初始化數(shù)據(jù)
// CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
// RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
// 8 Bits CRC And enable
uchar data TxBuf[32];
uchar data RxBuf[32];
uchar key,rsbrf,delayf,tf;
uchar bdata DATA_BUF;
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
sbit TX_EN =P1^7;
sbit TRX_CE =P1^6;
sbit PWR_UP =P1^5;
sbit MISO =P1^1;
sbit MOSI =P1^0;
sbit SCK=P3^7;
sbit CSN=P3^3;
sbit AM=P1^3;
sbit DR=P3^2;
sbit CD=P1^4;
sbitLED1=P3^4;
sbitLED2=P3^5;
sbitKEY1=P3^0;
sbitKEY2=P3^1;
void InitIO(void);// Initialize IO port
void Inituart(void);// initialize 232 uart
void Config905(void);// Config nRF905 module配置NRF905模式
void SetTxMode(void);// Set nRF905 in Tx mode
void SetRxMode(void);// Set nRF905 in Rx mode
void TxPacket(void);// Send data by nRF905
void RxPacket(void);// Recive data by nRF905
void SpiWrite(uchar);// Write data to nRF905
uchar SpiRead(void);// Read data to nRF905
void Delay(uchar n);// Delay 100us
void Scankey(void);// Scan key
void TxData (uchar x);// Send key_value to CRT display
void comdebug(void);
void Delay(uchar n)
{
uint i;
while(n--)
for(i=0;i<80;i++);
}

				
            
                
			
							
上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉