久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3541|回復: 2
打印 上一主題 下一主題
收起左側

NRF2401單片機收發程序下載

[復制鏈接]
跳轉到指定樓層
樓主
ID:109367 發表于 2016-3-17 17:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基本成功。
收到數據時,能點亮一個led。
單片機 STC12C5260S2   1T
        延時用的是51單片機小精靈 stc1T 模式編寫
1.8上午,發送程序已做部分優化,優化了延時,使延時更加短。
1.8下午,接收程序已做部分優化,優化了延時,使延時更加短。


發送主要程序(完整版請下載附件: nrf2401—基本驅動程序.rar (89 KB, 下載次數: 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();        //設置為發送模式
  38.                                         // 初始化后,為發送模式
  39.         while(1)
  40.         {       
  41.                   for(i=0;i<30;i++)                  //延時一會兒
  42.                           for(j=0;j<30;j++);
  43.                  ///////////////
  44.                  /// 模式設置        ///               
  45.                  //key1按下一次,設置為發送模式,按下key2,發送數據,        //亮一個led
  46.                  //key1按下兩次,設置為接收模式,按下key3,將數據傳至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;                //置標志位,為下次按鍵準備
  60.                                         led1=0;         //        燈測試
  61.                                         delay1ms(1000);           //指示燈亮一秒
  62.                                         SetTxMode();        //設置為發送模式
  63.                                         led1=1;                                      //燈滅,說明已設置好
  64.                                 }
  65.                                 if(flag)                //第二次按鍵判斷 ,設置為接收模式
  66.                                 {
  67.                                         led1=0;                                   //指示燈亮
  68.                                         led2=0;
  69.                                         delay1ms(1000);
  70.                                         SetRxMode();        //設置為接收模式
  71.                                         led1=1;
  72.                                         led2=1;                                        //指示燈滅,說明已設置好
  73.                                         flag=0;                                        //復位標志符
  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);        //發送數組TxBuf[]內的數據
  92.                                         delay1ms(1000);
  93.                                         led3=1;
  94.                                 }

  95.                                 if(flag)
  96.                                 {
  97.                                         
  98.                                         if(nRF2401_RxPacket(TxRxBuff)==1);//檢查是否有數據要收,若有,則存在數組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.        
復制代碼

接受部分主程序:
  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();        //設置為發送模式
  38.                                         // 初始化后,為發送模式
  39.         while(1)
  40.         {       
  41.                   for(i=0;i<30;i++)                  //延時一會兒
  42.                           for(j=0;j<30;j++);
  43.                  ///////////////
  44.                  /// 模式設置        ///               
  45.                  //key1按下一次,設置為發送模式,按下key2,發送數據,        //亮一個led
  46.                  //key1按下兩次,設置為接收模式,按下key3,將數據傳至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;                //置標志位,為下次按鍵準備
  60.                                         led1=0;         //        燈測試
  61.                                         delay1ms(1000);           //指示燈亮一秒
  62.                                         SetTxMode();        //設置為發送模式
  63.                                         led1=1;                                      //燈滅,說明已設置好
  64.                                 }
  65.                                 if(flag)                //第二次按鍵判斷 ,設置為接收模式
  66.                                 {
  67.                                         led1=0;                                   //指示燈亮
  68.                                         led2=0;
  69.                                         delay1ms(1000);
  70.                                         SetRxMode();        //設置為接收模式
  71.                                         led1=1;
  72.                                         led2=1;                                        //指示燈滅,說明已設置好
  73.                                         flag=0;                                        //復位標志符
  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);        //發送數組TxBuf[]內的數據
  92.                                         delay1ms(1000);
  93.                                         led3=1;
  94.                                 }

  95.                                 if(flag)
  96.                                 {
  97.                                         
  98.                                         if(nRF2401_RxPacket(TxRxBuff)==1);//檢查是否有數據要收,若有,則存在數組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.        
復制代碼




評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:450182 發表于 2019-8-22 17:11 | 只看該作者
有用的資料  
回復

使用道具 舉報

板凳
ID:561971 發表于 2019-8-25 09:43 | 只看該作者
弱弱的問下,這個是屬于51單片機控制NRF2401對吧,那NRF2401 本身程序誰提供?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人网站 | 欧美jizzhd精品欧美巨大免费 | 精品粉嫩超白一线天av | 国产在线精品一区二区 | 中国美女撒尿txxxxx视频 | h在线观看 | 亚洲精品久久久久久久久久久久久 | 九九热免费观看 | 亚洲午夜电影 | 欧美三区视频 | 欧美lesbianxxxxhd视频社区 | 中文在线视频 | 无码一区二区三区视频 | 国产精品欧美一区二区三区不卡 | 国产免费国产 | 鸳鸯谱在线观看高清 | 中文字幕av在线播放 | 日韩在线看片 | 日本粉嫩一区二区三区视频 | 91精品国产麻豆 | 日韩中文一区 | 国产91久久精品一区二区 | 青青草华人在线视频 | 午夜电影福利 | 日韩一区二区三区视频 | 日韩欧美操 | 99久久免费精品 | 日日日视频| 国产视频在线观看一区二区三区 | 国产高清一区二区三区 | 天天干视频在线 | 久久久www成人免费精品张筱雨 | 亚洲高清在线视频 | 日韩成人在线播放 | 老妇激情毛片免费 | 欧美高清免费 | 色视频网站免费 | 91精品国产综合久久久久久 | 国产精品国产成人国产三级 | 久久精品a| 在线免费观看日本 |