色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時間:2016-11-28 來源:網絡 收藏
          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ù)據
          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ā)送相應的按鍵
          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 下一頁

          評論


          技術專區(qū)

          關閉