<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          void main()
          {
          unsigned int cyc=0;
          unsigned int distan=0;
          //================NRF905初始化
          CSN=1;// Spidisable
          SCK=0;// Spi clock line init high
          DR=1;// Init DR for input
          AM=1;// Init AM for input
          PWR_UP=1;// nRF905 power on
          TRX_CE=0;// Set nRF905 in standby mode
          TX_EN=0;// set radio in Rx mode
          //================
          Config905();// Config nRF905 module
          TxBuf[0] = 1;
          TxBuf[1] = 1;
          SetTxMode();// Set Tx Mode
          TxPacket();// Transmit Tx buffer data
          LED1 = 0;
          LED2 = 0;
          Delay(500);// delay for led light
          LED1 = 1;
          LED2 = 1;
          TxBuf[0] = 0xff;
          TxBuf[1] = 0xff;
          // led close
          SetRxMode();// Set nRF905 in Rx mode
          while(1)
          {
          //=====================從鍵盤獲得數(shù)據(jù)
          if(KEY1 ==0 ) { LED1 = 0; TxBuf[0] = 1 ;tf = 1 ; }
          if(KEY2 ==0 ) { LED2 = 0; TxBuf[1] = 1 ;tf = 1 ; }
          if (tf==1)
          {
          //===============NRF905發(fā)送相應(yīng)的按鍵
          SetTxMode();// Set Tx Mode
          TxPacket();// Transmit Tx buffer data
          TxBuf[0] = 0xff;
          TxBuf[1] = 0xff;
          SetRxMode();// Set nRF905 in Rx mode
          tf=0;
          Delay(500);
          LED1 = 1;
          LED2 = 1;
          }
          //=====================等待NRF905接收
          if (DR)// If recive data ready...
          RxPacket();// ... recive data
          }
          }
          //function Config905();
          void Config905(void)
          {
          uchar i;
          CSN=0;// Spi enable for write a spi command
          SpiWrite(WC);// Write config command寫放配置命令
          for (i=0;i寫放配置字
          {
          SpiWrite(RxTxConf.buf[i]);
          }
          CSN=1;// Disable Spi
          }
          //function SpiWrite();
          void SpiWrite(ucharbyte)
          {
          uchar i;
          DATA_BUF=byte;// Put functions parameter into a bdata variable
          for (i=0;i<8;i++)// Setup byte circulation bits
          {
          if (flag)// Put DATA_BUF.7 on data line
          MOSI=1;
          else
          MOSI=0;
          SCK=1;// Set clock line high
          DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
          SCK=0;// Set clock line low
          }
          }
          //function SpiRead();
          uchar SpiRead(void)
          {
          uchar i;
          for (i=0;i<8;i++)// Setup byte circulation bits
          {
          DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
          SCK=1;// Set clock line high
          if (MISO)
          flag1=1;// Read data
          else
          flag1=0;
          SCK=0;// Set clock line low
          }
          return DATA_BUF;// Return function parameter
          }
          //function TxPacket();
          void TxPacket(void)
          {
          uchar i;
          //Config905();
          CSN=0;// Spi enable for write a spi command
          SpiWrite(WTP);// Write payload command
          for (i=0;i<32;i++)
          {
          SpiWrite(TxBuf[i]);// Write 32 bytes Tx data
          }
          CSN=1;// Spi disable
          Delay(1);
          CSN=0;// Spi enable for write a spi command
          SpiWrite(WTA);// Write address command
          for (i=0;i<4;i++)// Write 4 bytes address
          {
          SpiWrite(RxTxConf.buf[i+5]);
          }
          CSN=1;// Spi disable
          TRX_CE=1;// Set TRX_CE high,start Tx data transmission
          Delay(1);// while (DR!=1);
          TRX_CE=0;// Set TRX_CE low
          }
          //function RxPacket();
          void RxPacket(void)
          {
          uchar i;
          TRX_CE=0;// Set nRF905 in standby mode
          CSN=0;// Spi enable for write a spi command
          SpiWrite(RRP);// Read payload command
          for (i=0;i<32;i++)
          {
          RxBuf[i]=SpiRead();// Read data and save to buffer
          }
          CSN=1;// Disable spi
          while(DR||AM);
          // P0= RxBuf[0];// Buffer[0] output from P0 port...
          TRX_CE=1;
          //xx=(RxBuf[0]>>4)&0x0f;
          //TxData(xx);
          //=====================
          if(RxBuf[0] == 1) LED1 = 0 ;
          if(RxBuf[1] == 1) LED2 = 0 ;
          Delay(500);// ...light led
          // P0=0xff;// Close led
          LED1 = 1 ;
          LED2 = 1 ;
          }
          //function SetTxMode();
          void SetTxMode(void)
          {
          TX_EN=1;
          TRX_CE=0;
          Delay(1);// delay for mode change(>=650us)
          }
          //function SetRxMode();
          void SetRxMode(void)
          {
          TX_EN=0;
          TRX_CE=1;
          Delay(1);// delay for mode change(>=650us)
          }****************************************

          上一頁 1 2 下一頁

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();