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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

2.4G無線雙向收發系統單片機源程序與PCB文件

[復制鏈接]
跳轉到指定樓層
樓主
2.4G無線收發程序
pcb文件如下:


單片機源程序如下:
  1. /*                              
  2.                                                         2.4G無線雙向收發模塊源程序
  3. (C)西安電子科技大學 編寫:郭世忠  謝金波 版本:V5.3  日期:2015/02/02
  4. 相對V5.1 將看門狗清狗語句由主循環結尾處移至開始處。解決單片機先按鍵,后上電,造成首次看門狗隨機復位,系統頻繁重啟問題。
  5. 相對V5.2 把重復15次發送中的SetRX_Mode()取消,放到最后,只留一句。
  6. */


  7. //---------------------------------用戶配置區--------------------------------------------

  8. #define   LOCAL_LED_ON                  //1.本地LED是否點亮,注釋掉本句即可禁止本地LED顯示

  9. //---------------------------------------------------------------------------------------

  10. #define ADD1  50         //0-255
  11. #define ADD2  34         //0-255
  12. #define ADD3  65         //0-255
  13. #define ADD4  83         //0-255  //2.用戶使用的4*8bit=32bit地址

  14. //---------------------------------------------------------------------------------------
  15. //----------------------------------以下代碼請勿修改!-----------------------------------


  16. #include "c8051f330.h"
  17. #include "nRF24L01.h"
  18. #include "config.h"
  19. #include "key.h"

  20. #define TIMER0_RELOAD_HIGH  (65535-5150)/256  //定時器0的裝入值
  21. #define TIMER0_RELOAD_LOW        (65535-5150)%256  //系統時鐘3.0625MKHz,12分頻,20.00ms:理論裝載值5104,實際裝載值5150
  22.                                                                                       //系統時鐘3.0625MKHz,12分頻,10.00ms:理論裝載值2552,實際裝載值2585
  23.                                                                                       //系統時鐘3.0625MKHz,12分頻, 5.00ms:理論裝載值1276,實際裝載值1280
  24.                                                                                           //系統時鐘3.0625MKHz,12分頻,25.00ms:理論裝載值6380,實際裝載值6475
  25.                                                                                           //系統時鐘3.0625MKHz,12分頻,30.00ms:理論裝載值7656,實際裝載值7736



  26. /*定義LED和震動電機相應的驅動端口*/
  27. sbit MOTOR=P0^0; //振動電機
  28. sbit LED1=P1^3;
  29. sbit LED2=P1^4;         //四個LED端口
  30. sbit LED3=P1^5;
  31. sbit LED4=P1^6;
  32. unsigned char TxBuf[3]={1,2,3};
  33. unsigned char RxBuf[3]={1,2,3};
  34. unsigned char motor_flag=0,motor_shake_times=0,delay_count=0;
  35. unsigned char tf=0,getdata=0;
  36. unsigned char get_key_time=0;
  37. unsigned char Enable_Get_Ack=0;
  38. unsigned char LED_Time_Out=0;
  39. unsigned char Enable_Clear_LED=0;
  40. unsigned char receive_counter=0;
  41. /****************************************************************************
  42. * 名    稱:delay_20ms()
  43. * 入口參數:無
  44. * 出口參數:無
  45. * 說    明: 使用定時器準確延時20ms
  46. ****************************************************************************/
  47. void delay_20ms( unsigned char time )
  48. {
  49.         delay_count=0;
  50.         while(delay_count<time);        //裝值1,理論 20ms,實測  20ms
  51.                                                                    //裝值2,理論 40ms,實測40.4ms
  52.                                                                    //裝值3,理論 60ms,實測  60ms
  53.                                                                 //裝值4,理論 80ms,實測  80ms
  54.                                                                    //裝值5,理論100ms,實測 100ms
  55. }
  56. /****************************************************************************
  57. * 名    稱:delay_1ms()
  58. * 入口參數:無
  59. * 出口參數:無
  60. * 說    明: 簡單延時1ms
  61. ****************************************************************************/
  62. void delay_1ms( unsigned int time )
  63. {
  64.         unsigned int i,j;
  65.         for(j=0;j<time;j++)
  66.         for(i=0;i<325;i++);                        //裝值 1,實測  1ms
  67.                                                                    //裝值 2,實測2.08ms
  68.                                                                    //裝值 3,實測3.12ms
  69.                                                                 //裝值 4,實測4.08ms
  70.                                                                    //裝值 5,實測5.12ms
  71.                                                                 //裝值10,實測10.2ms
  72. }
  73. /****************************************************************************
  74. * 名    稱:MOTOR_SHAKE()
  75. * 入口參數:無
  76. * 出口參數:無
  77. * 說    明: 振動電機振動驅動函數,利用移位進行驅動
  78. ****************************************************************************/
  79. void MOTOR_SHAKE( void )
  80. {
  81.         unsigned char temp;
  82.         if(motor_shake_times!=0)
  83.         {
  84.                 temp=motor_shake_times&0x01;
  85.                 MOTOR=temp;
  86.                 motor_shake_times=motor_shake_times>>1;
  87.         }
  88.         else
  89.         {
  90.                 MOTOR=0;
  91.         }
  92. }
  93. /****************************************************************************
  94. * 名    稱:MOTOR_SCAN()
  95. * 入口參數:無
  96. * 出口參數:無
  97. * 說    明: 利用定時器0進行的振動電機振動掃描函數
  98. ****************************************************************************/
  99. void MOTOR_SCAN( void )
  100. {
  101.         if(motor_flag==20)
  102.         {
  103.                 motor_flag=0;
  104.                 MOTOR_SHAKE();
  105.         }
  106. }
  107. /****************************************************************************
  108. * 名    稱:MOTOR_ON()
  109. * 入口參數:電機震動次數
  110. * 出口參數:無
  111. * 說    明: 開啟電機振動,相當于賦值
  112. ****************************************************************************/
  113. void MOTOR_ON( unsigned char cishu )
  114. {
  115.         motor_shake_times=cishu;
  116. }
  117. /****************************************************************************
  118. * 名    稱:Timer0_ISR()
  119. * 入口參數:無
  120. * 出口參數:無
  121. * 說    明: 定時器0中斷處理函數
  122. ****************************************************************************/
  123. void Timer0_ISR( void ) interrupt 1
  124. {
  125.         TH0=TIMER0_RELOAD_HIGH;
  126.         TL0=TIMER0_RELOAD_LOW;
  127.         get_key_time++;
  128.         delay_count++;
  129.         motor_flag++;
  130.         LED_Time_Out++;
  131.         Key_ScanIO();
  132.         MOTOR_SCAN();//電機20ms掃描一次
  133. }
  134. /****************************************************************************
  135. * 名    稱:IRQ_ISR()
  136. * 入口參數:無
  137. * 出口參數:無
  138. * 說    明: 外部中斷處理函數,用于處理無線模塊的收發及狀態轉換
  139. ****************************************************************************/
  140. void IRQ_ISR( void ) interrupt 0
  141. {
  142.         switch(ReadInterrupt_Status())
  143.         {
  144.                 case 1:{EA=0;                                                          
  145.                                 nRF24L01_RxPacket(RxBuf);
  146.                                 ClearInterrptFlag();
  147.                                 EA=1;
  148.                                 if(RxBuf[2]!=90)
  149.                                 {
  150.                                         if(receive_counter<250)
  151.                                         receive_counter++;
  152.                                         else
  153.                                         receive_counter=2;
  154.                                 }
  155.                                 getdata=1;
  156.                                 }
  157.                                 break;                                                                                                                         //接收到數據中斷
  158.           //case 2:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break;        //發送成功中斷
  159.                 case 2:{EA=0;ClearInterrptFlag();EA=1;}break;        //發送成功中斷
  160.                 case 3:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break;        //最大發射次數到,即發送失敗中斷
  161.                 default:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break;//其他無關量
  162.         }
  163. }
  164. /****************************************************************************
  165. * 名    稱:Send_Data()
  166. * 入口參數:無
  167. * 出口參數:無
  168. * 說    明: 發送端數據發送函數,連續發送15次,函數值由數組直接傳遞
  169. ****************************************************************************/
  170. void Send_Data( void )
  171. {
  172.         nRF24L01_TxPacket(TxBuf);                //連發15次
  173.        
  174. ……………………

  175. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
2.4G無線雙向收發系統.rar (207.09 KB, 下載次數: 59)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:485002 發表于 2019-6-14 22:09 | 只看該作者
文件不全啊,謹慎下載
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品久久久久久豆腐 | 精品久久久一区二区 | 欧美日韩精品一区二区三区四区 | 激情 一区 | 国产精品久久久久久久免费观看 | 日本成人午夜影院 | 欧美黄色性生活视频 | 伊人伊成久久人综合网站 | 欧美一级免费 | 麻豆国产一区二区三区四区 | 亚洲成人自拍 | 国产专区免费 | 欧美一级艳情片免费观看 | 免费观看a级毛片在线播放 黄网站免费入口 | 日韩一区精品 | 欧美日韩综合精品 | 一区二区视频在线观看 | 亚洲精品中文字幕中文字幕 | 久久国产精品久久久久 | 成人免费视频网站在线观看 | 欧美区日韩区 | 在线播放中文字幕 | 欧美一区二区三区免费在线观看 | 久久久国产一区 | 久久久久中文字幕 | 人人叉 | 亚洲精品久久国产高清情趣图文 | 2019天天操 | 欧美亚洲视频 | 亚洲永久免费观看 | 国产激情91久久精品导航 | 日韩av一区二区在线观看 | 99久久久久久久久 | 中文字幕国产 | 国产女人第一次做爰毛片 | 91免费视频观看 | 99免费在线观看视频 | 国产精品毛片一区二区在线看 | 色男人的天堂 | 亚洲综合在 | 精品色|