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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14866|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

NRF24L01玩具遙控器制作,附程序與原理圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:228376 發(fā)表于 2017-8-19 21:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
接收機在下載程序時 請務(wù)必選擇內(nèi)部晶振頻率為6MHz.



所有資料51hei提供下載:

  1. #include"A_LCD.H"
  2. #include"A_DISPLAY.H"
  3. #include"A_NRF2401.H"
  4. #include"A_ADC.H"
  5. #include"A_EEPROM.H"
  6. #include"a_keyscan.h"
  7. #include"a_desktop.h"
  8. #include"stc12c5.h"
  9. #include"a_delay.h"

  10. sbit SPEAKER=P4^4;
  11. sbit PPM=P2^6;        //未使用

  12. sbit CH8=P2^7;

  13. extern unsigned int poweroff;
  14. extern char code boot[];
  15. extern unsigned code hnist[];
  16. extern char x,y,x4;
  17. extern unsigned char BAT;
  18. extern char databuf;
  19. extern char canshu[10][5][5];
  20. unsigned char value_ch[6];

  21. int value_adc[6];
  22. int value_adc1[6];
  23. unsigned char bdata sta1;   
  24. sbit        RX_DR1        =sta1^6;
  25. sbit        TX_DS1        =sta1^5;
  26. sbit        MAX_RT1        =sta1^4;


  27.                                           //        0         1          2           3    4    5   6     7    8    9    10   11  12    13   14   15  16         17
  28. int time[18]={8000,610, 900, 610, 900, 610,900,  610, 900,  610, 900, 610, 900,610,900, 610,900,610};
  29.                            //   頭      一通道    二通道    三通道    四通道    五通道    六通道    七通道          八通道           

  30. unsigned char ppm;

  31. char TxBuf[32]={
  32.                                 0xaa,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
  33.                                 0x04,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,
  34.                                 0x0a,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
  35.                                 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
  36.                                 };
  37. int TxBuf1[32]={0};
  38. unsigned char lose=0 ,sendtime=0,signal;
  39. unsigned int timeset=0;
  40. unsigned char write_flag=0;

  41. unsigned char s_time;//蜂鳴器鳴叫相關(guān)計數(shù)變量
  42. unsigned char s_mode;//蜂鳴器鳴叫方式

  43. unsigned char code chacha[]=
  44. {
  45. /*--  調(diào)入了一幅圖像:這是您新建的圖像  --*/
  46. /*--  寬度x高度=8x8  --*/
  47. 0x00,0x82,0x44,0x28,0x10,0x28,0x44,0x82
  48. };

  49. void ADC2TXBUF();

  50. void main()
  51. {
  52. unsigned char i;

  53. P4SW=0xff;
  54. delay_ms(10);
  55. read_all();
  56. delay_ms(1000);
  57. LcmInit();

  58. adcinit();
  59. init_NRF24L01() ;        //這里已經(jīng)設(shè)置好了為接收!        
  60. SPI_RW(0xe1);        //先將發(fā)送緩存器里的數(shù)據(jù)清除

  61.          delay_ms(1000);
  62.     TMOD=0X11;
  63.         TH0=0;
  64.         TL0=0;
  65.         TH1=0;
  66.         TL1=0;
  67.     EA=1;
  68.         //ET0=1;
  69.         //ET1=1;
  70.         TR0=1;
  71.         TR1=1;

  72. for(i=120;i>0;i--)
  73. {
  74.   PUTbmp(0,i,boot,0);
  75. }
  76. delay_ms(50000);
  77. delay_ms(50000);                        



  78. while(1)
  79. {
  80.          LcmClear();
  81.          timeset=0;
  82.         while(y>0)
  83.          {
  84.                 write_flag=1;
  85.                  menu_dis1();
  86.                  menu_dis11();
  87.                  menu_dis12();
  88.                  menu_dis13();
  89.                 menu_dis14();
  90.                  menu_dis15();
  91.                 menu_dis151();
  92.                 menu_dis152();
  93.                  menu_dis153();
  94.                  keyscan();
  95.                 if(timeset>500)
  96.                 y=0;
  97.          }


  98.     PUTbmp(0,0,hnist,0);
  99.          write_all();
  100.         if(canshu[databuf][2][2]==0)
  101.         {
  102.                 ET0=1;
  103.                 ET1=0;
  104.         }
  105.         else
  106.         {
  107.                 ET0=0;
  108.                 ET1=1;
  109.         }
  110.          while(y==0)
  111.          {
  112.         if(write_flag==1)
  113.         {
  114.         
  115.                 write_flag=0;
  116.         }
  117.                 if(canshu[databuf][2][2]==0)
  118.                 number8x8_put(signal,0,19,5,3);
  119.             else
  120.                 PUTchar8x8(0,12,1,chacha);
  121.          
  122.         keyscan();
  123.         
  124.          desk_display();
  125.          }
  126. }
  127. }



  128. void adc_senddata() interrupt 1        
  129. {
  130.                   
  131.                  
  132.                  TH0=(65536-50000)/256;
  133.              TL0=(65536-50000)%256;

  134.                  if(canshu[databuf][2][2]==0)
  135.                  {
  136.                  sta1=SPI_Read(0x07);
  137.                    SPI_Write_Reg(0x20 +0x07,0xFF);          //這步很重要
  138.                  if(MAX_RT1==1)
  139.                  {
  140.                  if(lose<20)
  141.                  lose++;

  142.                  }
  143.                  if(sendtime<20)
  144.                  sendtime++;

  145.                  
  146.                  if(sendtime>19)
  147.                  {
  148.                  signal=(sendtime-lose)/2;
  149.                  sendtime=0;
  150.                  lose=0;
  151.                  }
  152.                  if(signal<7) s_mode=2;
  153.                   
  154.                  ADC2TXBUF();//數(shù)據(jù)采集與整理并匯入到TxBuf
  155.                  nRF24L01_TxPacket(TxBuf);
  156.                  
  157.                  timeset++;
  158.                

  159.                  s_time++;
  160.         if(s_mode==1)
  161.           {
  162.                 if(s_time>5)
  163.                 {
  164.                         SPEAKER=0;
  165.                 }
  166.                 if(s_time>10)
  167.                 {
  168.                         s_time=0;
  169.                         SPEAKER=1;        
  170.                 }        
  171.           }
  172.   

  173.         if(s_mode==2)
  174.           {
  175.         if(s_time>35&canshu[databuf][2][3]==0&signal<7&canshu[databuf][2][2]==0)
  176.         {
  177.                 SPEAKER=0;
  178.         }
  179.         if(s_time>40)
  180.                 {
  181.                         s_time=0;
  182.                         SPEAKER=1;        
  183.                 }        
  184.           }

  185.         if(s_mode==0)
  186.         {
  187.                 s_time=0;
  188.                 SPEAKER=1;
  189.         }
  190.                  }
  191.         
  192. }

  193. void SPEAKER_WARNING() interrupt 3
  194. {
  195.          
  196.         unsigned char h;
  197.         if(canshu[databuf][2][2]==1)
  198.         {
  199.         TH1=(65536-time[ppm])/256;
  200.         TL1=(65536-time[ppm])%256;
  201.         if(ppm%2==1)
  202.                 PPM=0;
  203.                 else
  204.                 PPM=1;
  205.      ppm++;
  206.         if(ppm==14)
  207.                 {
  208.                 ppm=0;
  209.             time[0]=36400-(time[1]+time[2]+time[3]+time[4]+time[5]+time[6]+time[7]+time[8]+time[9]+time[10]+time[11]+time[12]+time[13]);//36400
  210.                 }
  211.         if(ppm==0)
  212.          ADC2TXBUF();//數(shù)據(jù)采集與整理并匯入到TxBuf
  213.         
  214.          }
  215. }

  216. void ADC2TXBUF()
  217. {
  218.         unsigned char i,j,k,h;
  219.         int hk1,hk2;
  220.         for(i=0;i<6;i++)
  221.         {
  222.                 value_adc[i]=adc(i)+canshu[databuf][4][i];
  223.                 value_ch[i]=value_adc[i];
  224.                 value_adc[i]=value_adc[i]-128;
  225.         }
  226.         /*********************************************/
  227.          BAT=adc(7);
  228.          if(BAT<189)
  229.                  BAT=0;                                                                         //電池電壓采集
  230.         else
  231.                 BAT=(BAT-189)/10;
  232.         /********************************************/
  233.         if(canshu[databuf][2][0]==1)//副翼襟翼混控設(shè)置
  234.         {
  235.         hk1=value_adc[4]-value_adc[0];
  236.         hk2=value_adc[4]+value_adc[0];
  237.         value_adc[0]=hk1;
  238.         value_adc[4]=hk2;
  239.         }
  240.         
  241.         if(canshu[databuf][2][0]==2)//副翼升降混控設(shè)置
  242.         {
  243.         hk1=value_adc[1]-value_adc[0];
  244.         hk2=value_adc[1]+value_adc[0];
  245.         value_adc[0]=hk1;
  246.         value_adc[1]=hk2;
  247.         }

  248.         if(canshu[databuf][2][1]==1&canshu[databuf][2][0]!=2)//升降尾舵混控設(shè)置(V尾混控)
  249.         {
  250.         hk1=value_adc[3]-value_adc[1];
  251.         hk2=value_adc[3]+value_adc[1];
  252.         value_adc[1]=hk1;
  253.         value_adc[3]=hk2;
  254.         }
  255.          
  256.         for(j=0;j<6;j++)  //通道反向以及防止溢出
  257.         {
  258.                 if(canshu[databuf][0][j]==1)
  259.                 value_adc[j]=0-value_adc[j];
  260.                 if(value_adc[j]>127)  value_adc[j]=127;
  261.                 if(value_adc[j]<-127) value_adc[j]=-127;
  262.                 TxBuf[j+1]=value_adc[j];
  263.         }

  264.         if(CH8==1) TxBuf[8]=127;
  265.         else           TxBuf[8]=-127;

  266.         for(k=0;k<4;k++)
  267.         {
  268.                 TxBuf[k+9]=canshu[databuf][1][k];
  269.         }
  270.         for(h=1;h<7;h++)
  271.         {
  272.         time[2*h]=2000+TxBuf[h]*8;
  273.         }
  274.         
  275. }
  276. ……………………

  277. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:

發(fā)射和接收機原理圖.rar

23.33 KB, 下載次數(shù): 166, 下載積分: 黑幣 -5

發(fā)射機Keil C工程.rar

135.36 KB, 下載次數(shù): 137, 下載積分: 黑幣 -5

發(fā)射機固件.rar

154.84 KB, 下載次數(shù): 127, 下載積分: 黑幣 -5

固件更新 .rar

176.16 KB, 下載次數(shù): 132, 下載積分: 黑幣 -5

接收機.rar

51.14 KB, 下載次數(shù): 171, 下載積分: 黑幣 -5

新建文件夾.rar

1.24 KB, 下載次數(shù): 123, 下載積分: 黑幣 -5

評分

參與人數(shù) 2黑幣 +105 收起 理由
ltpzm + 5 贊一個!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:190051 發(fā)表于 2017-8-20 15:16 | 只看該作者
請問樓主這個有對碼功能?
回復(fù)

使用道具 舉報

板凳
ID:312098 發(fā)表于 2018-4-26 23:58 來自手機 | 只看該作者
樓主太強大了
回復(fù)

使用道具 舉報

地板
ID:546443 發(fā)表于 2019-5-24 16:32 | 只看該作者
這是啥軟件編的程序
回復(fù)

使用道具 舉報

5#
ID:111124 發(fā)表于 2019-10-29 11:17 | 只看該作者
不錯。值得學(xué)習(xí)。
回復(fù)

使用道具 舉報

6#
ID:632444 發(fā)表于 2019-11-3 08:28 來自手機 | 只看該作者
最近一直在想能不能做個按鍵無線電壓回傳的模塊,具有收發(fā)功能,這個好,有方向了
回復(fù)

使用道具 舉報

7#
ID:477152 發(fā)表于 2019-11-4 21:37 | 只看該作者
  不錯 哦  模型中國的
回復(fù)

使用道具 舉報

8#
ID:813064 發(fā)表于 2020-12-10 17:47 | 只看該作者
2.4G通信怎么對碼
回復(fù)

使用道具 舉報

9#
ID:609550 發(fā)表于 2021-1-6 07:14 | 只看該作者
有朋友制作成功的么,分享一下好嗎?
回復(fù)

使用道具 舉報

10#
ID:352389 發(fā)表于 2021-1-6 19:16 | 只看該作者
成功是成功了,功能比不上蘿麗三代。蘿麗三代只是接收機換成15w408
回復(fù)

使用道具 舉報

11#
ID:234836 發(fā)表于 2021-1-18 18:34 | 只看該作者
樓主太強大了
回復(fù)

使用道具 舉報

12#
ID:274204 發(fā)表于 2021-1-28 13:46 | 只看該作者
謝謝分享,正在找這方面的資料。不過積分不夠啊。。。
回復(fù)

使用道具 舉報

13#
ID:718620 發(fā)表于 2021-3-23 07:38 來自手機 | 只看該作者
147222832 發(fā)表于 2021-1-6 19:16
成功是成功了,功能比不上蘿麗三代。蘿麗三代只是接收機換成15w408

這個有明顯延時嗎?比三代差哪兒
回復(fù)

使用道具 舉報

14#
ID:243748 發(fā)表于 2021-4-19 19:01 來自手機 | 只看該作者
這個遙控器有什么功能呀,屏幕用哪一種屏
回復(fù)

使用道具 舉報

15#
ID:942045 發(fā)表于 2021-6-22 02:46 來自手機 | 只看該作者
147222832 發(fā)表于 2021-1-6 19:16
成功是成功了,功能比不上蘿麗三代。蘿麗三代只是接收機換成15w408

差在哪了
回復(fù)

使用道具 舉報

16#
ID:517794 發(fā)表于 2021-7-20 17:49 | 只看該作者
啦啦啦 make一下
回復(fù)

使用道具 舉報

17#
ID:999085 發(fā)表于 2022-1-9 08:55 | 只看該作者
有意思,怎么不給芯片型號啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 亚洲免费网站 | 成人精品国产一区二区4080 | 国产精品中文字幕在线 | 午夜天堂精品久久久久 | 国产高清免费视频 | 成人免费视频网站在线观看 | 久久久久无码国产精品一区 | 伊人网国产 | 成人综合视频在线 | 免费网站国产 | www.日韩| 国产精品亚洲欧美日韩一区在线 | 美女日批免费视频 | 日韩高清在线 | 欧美二区乱c黑人 | 国产欧美在线视频 | 久久精品亚洲 | 欧美成ee人免费视频 | 亚洲精品乱码久久久久久按摩观 | 美女视频网站久久 | 欧美午夜激情在线 | 国产一区二区三区在线 | 成人免费网站视频 | 欧美精品在线播放 | 精品一区二区三区在线播放 | 日本小视频网站 | 中文字幕一区二区视频 | 精品国产高清一区二区三区 | 欧美国产亚洲一区二区 | 欧美在线国产精品 | 亚洲一区二区三区免费观看 | 欧美日韩成人一区二区 | 伊人久久综合 | 国产精品高清一区二区 | 天天爱天天操 | 国产一区欧美一区 | 欧美一级免费片 | 国产精品揄拍一区二区 | 男人天堂社区 | 91中文字幕在线观看 |