新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用nRF905和DS18B20制作的51單片機溫度數據無線傳輸系統

        用nRF905和DS18B20制作的51單片機溫度數據無線傳輸系統

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

        本文引用地址:http://www.104case.com/article/201611/322865.htm

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

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


        本系統實物照片如下:


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

        /

        #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.初始化數據
        // 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 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 林甸县| 荥阳市| 蒙城县| 子洲县| 喜德县| 荆州市| 拉萨市| 呼伦贝尔市| 寻乌县| 五指山市| 攀枝花市| 麻阳| 育儿| 外汇| 贵德县| 天水市| 伊通| 吴旗县| 林周县| 瑞昌市| 淮南市| 漳州市| 苏尼特右旗| 东阳市| 晋城| 澄城县| 新密市| 台北市| 广水市| 嵊泗县| 瑞丽市| 晋江市| 凭祥市| 屯留县| 亳州市| 浮梁县| 闵行区| 沈丘县| 广东省| 涟源市| 仙桃市|