欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3681|回復(fù): 2
收起左側(cè)

NRF2401單片機(jī)收發(fā)程序下載

[復(fù)制鏈接]
ID:109367 發(fā)表于 2016-3-17 17:43 | 顯示全部樓層 |閱讀模式
基本成功。
收到數(shù)據(jù)時,能點(diǎn)亮一個led。
單片機(jī) STC12C5260S2   1T
        延時用的是51單片機(jī)小精靈 stc1T 模式編寫
1.8上午,發(fā)送程序已做部分優(yōu)化,優(yōu)化了延時,使延時更加短。
1.8下午,接收程序已做部分優(yōu)化,優(yōu)化了延時,使延時更加短。


發(fā)送主要程序(完整版請下載附件: nrf2401—基本驅(qū)動程序.rar (89 KB, 下載次數(shù): 71) ):
  1. #include "delay.h"
  2. #include "nrf2401.h"

  3. uchar TxRxBuff[32]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
  4.                                         0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,
  5.                                         0x22,0x23,0x24,0x25,0x26};
  6. uint i;
  7. void init_uart()          //串口初始化           2400
  8. {
  9.         TMOD=0X20;
  10.         SCON=0X50;
  11.         TH1=0XF3;
  12.         TL1=0XF3;
  13.         PCON=0X00;
  14.         EA=1;
  15.         ES=1;
  16.         TR1=1;
  17. }

  18. void serve_zd() interrupt 4
  19. {
  20.         if(RI)
  21.         {
  22.                 RI=0;
  23.        
  24.         }
  25.                 else
  26.         {
  27.                 TI=0;
  28.         }       
  29. }       



  30. void main()
  31. {
  32.         bit flag=1;
  33.         uint i,j;
  34.         init_uart();
  35.         Config2401();
  36.         delay_600us();
  37.         SetTxMode();        //設(shè)置為發(fā)送模式
  38.                                         // 初始化后,為發(fā)送模式
  39.         while(1)
  40.         {       
  41.                   for(i=0;i<30;i++)                  //延時一會兒
  42.                           for(j=0;j<30;j++);
  43.                  ///////////////
  44.                  /// 模式設(shè)置        ///               
  45.                  //key1按下一次,設(shè)置為發(fā)送模式,按下key2,發(fā)送數(shù)據(jù),        //亮一個led
  46.                  //key1按下兩次,設(shè)置為接收模式,按下key3,將數(shù)據(jù)傳至mcu。//亮兩個led
  47.                
  48.                 if(key1==0)                 //去抖檢測
  49.                 delay10ms();
  50.                  if(key1==0)
  51.                 {
  52.                            while(key1==0);
  53.                         if(key1==1)          //松手檢測
  54.                         delay10ms();
  55.                         if(key1==1)
  56.                         {
  57.                                 if(!flag)
  58.                                 {
  59.                                         flag=1;                //置標(biāo)志位,為下次按鍵準(zhǔn)備
  60.                                         led1=0;         //        燈測試
  61.                                         delay1ms(1000);           //指示燈亮一秒
  62.                                         SetTxMode();        //設(shè)置為發(fā)送模式
  63.                                         led1=1;                                      //燈滅,說明已設(shè)置好
  64.                                 }
  65.                                 if(flag)                //第二次按鍵判斷 ,設(shè)置為接收模式
  66.                                 {
  67.                                         led1=0;                                   //指示燈亮
  68.                                         led2=0;
  69.                                         delay1ms(1000);
  70.                                         SetRxMode();        //設(shè)置為接收模式
  71.                                         led1=1;
  72.                                         led2=1;                                        //指示燈滅,說明已設(shè)置好
  73.                                         flag=0;                                        //復(fù)位標(biāo)志符
  74.                                 }
  75.                         }
  76.                 }
  77.         ////////////////////////////////////////////////////
  78.         //////////////////////////////////////////////////
  79.                 if(key2==0)                 //去抖檢測
  80.                 delay10ms();
  81.                  if(key2==0)
  82.                 {
  83.                            while(key2==0);
  84.                         if(key2==1)          //松手檢測
  85.                         delay10ms();
  86.                         if(key2==1)
  87.                         {
  88.                                 if(!flag)
  89.                                 {
  90.                                         led3=0;
  91.                                         nRF2401_TxPacket(TxRxBuff);        //發(fā)送數(shù)組TxBuf[]內(nèi)的數(shù)據(jù)
  92.                                         delay1ms(1000);
  93.                                         led3=1;
  94.                                 }

  95.                                 if(flag)
  96.                                 {
  97.                                         
  98.                                         if(nRF2401_RxPacket(TxRxBuff)==1);//檢查是否有數(shù)據(jù)要收,若有,則存在數(shù)組RxBuf中
  99.                                                                                                         //并返回  1;沒有則返回  0;
  100.                                    {       
  101.                                             led3=0;
  102.                                                 led4=0;
  103.                                                 delay1ms(2000);
  104.                                                led3=1;
  105.                                                 led4=1;
  106.                                    }
  107.                                
  108.                                 }
  109.                         }
  110.                 }
  111.          ///////////////////////////////////////////////////
  112.          ////////////////////////////////////////////////////
  113.                 if(key3==0)                 //去抖檢測
  114.                 delay10ms();
  115.                  if(key3==0)
  116.                 {
  117.                            while(key3==0);
  118.                         if(key3==1)          //松手檢測
  119.                         delay10ms();
  120.                         if(key3==1)
  121.                         {
  122.                                 led3=0;
  123.                                 delay1ms(1000);
  124.                                 i=0;
  125.                                 while(TxRxBuff[i]!='\0')
  126.                                 {
  127.                                         SBUF=TxRxBuff[i];
  128.                                         i++;
  129.                                         delay_600us();
  130.                                 }
  131.                         }

  132.                 }
  133.          //////////////////////////////////////
  134.         ///////////////////////////////////////////////
  135.         /*
  136.           此處添加顯示程序



  137.                                 */
  138.         }
  139.                        
  140.                                                                

  141.                
  142.                
  143. }
  144.        
復(fù)制代碼

接受部分主程序:
  1. #include "delay.h"
  2. #include "nrf2401.h"

  3. uchar TxRxBuff[32]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
  4.                                         0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,
  5.                                         0x22,0x23,0x24,0x25,0x26};
  6. uint i;
  7. void init_uart()          //串口初始化           2400
  8. {
  9.         TMOD=0X20;
  10.         SCON=0X50;
  11.         TH1=0XF3;
  12.         TL1=0XF3;
  13.         PCON=0X00;
  14.         EA=1;
  15.         ES=1;
  16.         TR1=1;
  17. }

  18. void serve_zd() interrupt 4
  19. {
  20.         if(RI)
  21.         {
  22.                 RI=0;
  23.        
  24.         }
  25.                 else
  26.         {
  27.                 TI=0;
  28.         }       
  29. }       



  30. void main()
  31. {
  32.         bit flag=1;
  33.         uint i,j;
  34.         init_uart();
  35.         Config2401();
  36.         delay_600us();
  37.         SetTxMode();        //設(shè)置為發(fā)送模式
  38.                                         // 初始化后,為發(fā)送模式
  39.         while(1)
  40.         {       
  41.                   for(i=0;i<30;i++)                  //延時一會兒
  42.                           for(j=0;j<30;j++);
  43.                  ///////////////
  44.                  /// 模式設(shè)置        ///               
  45.                  //key1按下一次,設(shè)置為發(fā)送模式,按下key2,發(fā)送數(shù)據(jù),        //亮一個led
  46.                  //key1按下兩次,設(shè)置為接收模式,按下key3,將數(shù)據(jù)傳至mcu。//亮兩個led
  47.                
  48.                 if(key1==0)                 //去抖檢測
  49.                 delay10ms();
  50.                  if(key1==0)
  51.                 {
  52.                            while(key1==0);
  53.                         if(key1==1)          //松手檢測
  54.                         delay10ms();
  55.                         if(key1==1)
  56.                         {
  57.                                 if(!flag)
  58.                                 {
  59.                                         flag=1;                //置標(biāo)志位,為下次按鍵準(zhǔn)備
  60.                                         led1=0;         //        燈測試
  61.                                         delay1ms(1000);           //指示燈亮一秒
  62.                                         SetTxMode();        //設(shè)置為發(fā)送模式
  63.                                         led1=1;                                      //燈滅,說明已設(shè)置好
  64.                                 }
  65.                                 if(flag)                //第二次按鍵判斷 ,設(shè)置為接收模式
  66.                                 {
  67.                                         led1=0;                                   //指示燈亮
  68.                                         led2=0;
  69.                                         delay1ms(1000);
  70.                                         SetRxMode();        //設(shè)置為接收模式
  71.                                         led1=1;
  72.                                         led2=1;                                        //指示燈滅,說明已設(shè)置好
  73.                                         flag=0;                                        //復(fù)位標(biāo)志符
  74.                                 }
  75.                         }
  76.                 }
  77.         ////////////////////////////////////////////////////
  78.         //////////////////////////////////////////////////
  79.                 if(key2==0)                 //去抖檢測
  80.                 delay10ms();
  81.                  if(key2==0)
  82.                 {
  83.                            while(key2==0);
  84.                         if(key2==1)          //松手檢測
  85.                         delay10ms();
  86.                         if(key2==1)
  87.                         {
  88.                                 if(!flag)
  89.                                 {
  90.                                         led3=0;
  91.                                         nRF2401_TxPacket(TxRxBuff);        //發(fā)送數(shù)組TxBuf[]內(nèi)的數(shù)據(jù)
  92.                                         delay1ms(1000);
  93.                                         led3=1;
  94.                                 }

  95.                                 if(flag)
  96.                                 {
  97.                                         
  98.                                         if(nRF2401_RxPacket(TxRxBuff)==1);//檢查是否有數(shù)據(jù)要收,若有,則存在數(shù)組RxBuf中
  99.                                                                                                         //并返回  1;沒有則返回  0;
  100.                                    {       
  101.                                             led3=0;
  102.                                                 led4=0;
  103.                                                 delay1ms(2000);
  104.                                                led3=1;
  105.                                                 led4=1;
  106.                                    }
  107.                                
  108.                                 }
  109.                         }
  110.                 }
  111.          ///////////////////////////////////////////////////
  112.          ////////////////////////////////////////////////////
  113.                 if(key3==0)                 //去抖檢測
  114.                 delay10ms();
  115.                  if(key3==0)
  116.                 {
  117.                            while(key3==0);
  118.                         if(key3==1)          //松手檢測
  119.                         delay10ms();
  120.                         if(key3==1)
  121.                         {
  122.                                 led3=0;
  123.                                 delay1ms(1000);
  124.                                 i=0;
  125.                                 while(TxRxBuff[i]!='\0')
  126.                                 {
  127.                                         SBUF=TxRxBuff[i];
  128.                                         i++;
  129.                                         delay_600us();
  130.                                 }
  131.                         }

  132.                 }
  133.          //////////////////////////////////////
  134.         ///////////////////////////////////////////////
  135.         /*
  136.           此處添加顯示程序



  137.                                 */
  138.         }
  139.                        
  140.                                                                

  141.                
  142.                
  143. }
  144.        
復(fù)制代碼




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:450182 發(fā)表于 2019-8-22 17:11 | 顯示全部樓層
有用的資料  
回復(fù)

使用道具 舉報(bào)

ID:561971 發(fā)表于 2019-8-25 09:43 | 顯示全部樓層
弱弱的問下,這個是屬于51單片機(jī)控制NRF2401對吧,那NRF2401 本身程序誰提供?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表