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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5500|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩日韩日韩日韩日韩日韩日韩 | 黄色网络在线观看 | 区一区二区三在线观看 | 久久涩涩 | 成人小视频在线观看 | 久久日本 | 日韩一级 | 日韩中文字幕在线观看视频 | 免费在线看黄视频 | 亚洲高清av在线 | 国产午夜精品一区二区三区嫩草 | 久久精品国产免费高清 | 欧美vide | 中文字幕在线观看日韩 | 久久久久国产一区二区三区四区 | 亚洲三区视频 | 99这里只有精品视频 | 欧美淫 | 亚洲网址 | 亚洲第一成人影院 | 欧美精品一区二区三区在线播放 | 一级黄色片日本 | 四虎成人免费电影 | 久久亚洲欧美日韩精品专区 | 亚洲欧美中文日韩在线v日本 | 精品欧美一区免费观看α√ | 日韩视频精品 | 人人九九 | 欧美成人a∨高清免费观看 欧美日韩中 | av看看 | 精品91久久久 | 午夜小电影 | 在线免费黄色小视频 | 日韩欧美国产精品 | 日韩高清国产一区在线 | 久久成人高清视频 | 国产精品高 | 成人在线观看亚洲 | 日韩欧美在线视频观看 | 国产亚洲精品一区二区三区 | 成人一区二区三区在线观看 |