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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于NRF2401無線通信模塊下的無線鼠標設計 含STM32源碼與原理圖

  [復制鏈接]
跳轉到指定樓層
樓主
基于STM32F103C8T6下的無線鼠標,請參考使用

發射電路:


接受電路:


單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"         
  6. #include "string.h"
  7. #include "usb_lib.h"
  8. #include "hw_config.h"
  9. #include "usb_pwr.h"
  10. #include "I2C.h"
  11. #include "mpu6050.h"
  12. #include "24l01.h"
  13.                         


  14. //計算x1,x2的絕對值
  15. u32 usb_abs(u32 x1,u32 x2)
  16. {
  17.         if(x1>x2)return x1-x2;
  18.         else return x2-x1;
  19. }
  20. //設置USB 連接/斷線
  21. //enable:0,斷開
  22. //       1,允許連接          
  23. void usb_port_set(u8 enable)
  24. {         
  25.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       
  26.         if(enable)_SetCNTR(_GetCNTR()&(~(1<<1)));//退出斷電模式
  27.         else
  28.         {          
  29.                 _SetCNTR(_GetCNTR()|(1<<1));  // 斷電模式
  30.                 GPIOA->CRH&=0XFFF00FFF;
  31.                 GPIOA->CRH|=0X00033000;
  32.                 PAout(12)=0;                      
  33.         }
  34. }         

  35. int main(void)
  36. {       
  37.         //        short temp1[3];//加速度計
  38.         //        short temp2[3];
  39.         //        short temp3;  //溫度
  40.          u8 tmp_buf[5];         //發射寄存器
  41.                 u8 key;
  42.                 short X,Y,X1,Y1;                 //發送到電腦端的坐標值
  43.                
  44.                 u8 keysta;                //[0]:0,左鍵松開;1,左鍵按下;
  45.                                                 //[1]:0,右鍵松開;1,右鍵按下
  46.                                                 //[2]:0,中鍵松開;1,中鍵按下                     
  47.                 delay_init();                     //延時函數初始化          
  48.                 NVIC_Configuration();          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  49.                 uart_init(9600);                 //串口初始化為9600
  50.                 printf("串口初始化完畢\r\n");
  51. //                 LED_Init();                             //LED端口初始化
  52. //                 KEY_Init();                                  //按鍵初始化
  53. //                 printf("按鍵初始化完畢\r\n");
  54.                 I2C_Init();
  55.                 printf("IIC初始化完畢\r\n");
  56.                 delay_ms(100);
  57.                 MPU6050_Init();
  58.                 printf("MPU6050初始化完畢\r\n");
  59.                 delay_ms(100);
  60.                 NRF24L01_Init();
  61.                 printf("24l01初始化完畢\r\n");
  62.                 while(NRF24L01_Check())        //檢查NRF24L01是否在位.       
  63.                 {
  64.                                 printf("未檢測到24l01\r\n");
  65.                                 delay_ms(200);
  66.                 }               
  67.                 printf("檢測到24l01---OK\r\n");
  68.                 NRF24L01_RX_Mode();
  69.                 printf("設置24l01為接收模式成功!\r\n");
  70.                
  71.                 usb_port_set(0);         //USB先斷開
  72.                 delay_ms(300);
  73.                         usb_port_set(1);        //USB再次連接
  74.                 //USB配置
  75.                 USB_Interrupts_Config();   
  76.                 Set_USBClock();   
  77.                 USB_Init();         
  78.                 printf("USB都初始化完畢了,騷年,開始接收吧!!\r\n");               
  79.         while(1)
  80.         {                
  81.                                 if(NRF24L01_RxPacket(tmp_buf)==0)
  82.                 {
  83.                         X=(s16)((tmp_buf[1]<<8)|tmp_buf[2]);
  84.                         Y=(s16)((tmp_buf[3]<<8)|tmp_buf[4]);       
  85.                         printf(" %8d%8d\r\n",X,Y);       
  86.                         Joystick_Send(tmp_buf[0],X,Y,0);                       
  87.                 }


  88. //                X1=(s16)((tmp_buf[1]<<8)|tmp_buf[2]);
  89. //                Y1=(s16)((tmp_buf[3]<<8)|tmp_buf[4]);
  90. //printf("%8d%8d%4X\r\n",tmp_buf[1],tmp_buf[2],NRF24L01_TxPacket(tmp_buf));  //NRF24l01發射函數
  91. //        Joystick_Send(keysta,X/15,Y/15,0);//鼠標函數,按鍵,X軸坐標,Y軸坐標



  92.         }
  93. }
  94.        
復制代碼

所有資料51hei提供下載:

空中鼠標源程序.rar (378.79 KB, 下載次數: 127)
空中鼠標原理圖.rar (230.52 KB, 下載次數: 91)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:129788 發表于 2018-10-5 15:25 | 只看該作者
新手,想下載學習,可惜沒有黑幣。
回復

使用道具 舉報

板凳
ID:260595 發表于 2019-2-28 23:44 | 只看該作者
大佬,請問有發射端的代碼嗎
回復

使用道具 舉報

地板
ID:405201 發表于 2019-5-19 16:21 | 只看該作者
請問有發射端的代碼嗎
回復

使用道具 舉報

5#
ID:704379 發表于 2020-5-19 22:42 | 只看該作者
多謝了 講解的非常到位
回復

使用道具 舉報

6#
ID:295855 發表于 2020-12-7 08:27 | 只看該作者
非常謝謝,學習一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久夜色精品国产 | 中文字幕11页 | www.久久.com | 亚洲精品一区二区三区在线观看 | 日本在线视 | 亚洲日本中文字幕在线 | 色必久久 | www.99热.com| 日本久久一区 | 国产ts一区| 国产高清精品在线 | 一级黄色日本片 | 成人福利电影 | 成人h动漫精品一区二区器材 | 精品一区二区三区在线观看国产 | 手机av在线| 欧美在线国产精品 | 久久久久电影 | 欧美一级久久 | 成人国产综合 | 国产精品久久久久久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 亚洲网站在线观看 | 成人性生交大免费 | 精品一二三区在线观看 | 在线精品亚洲欧美日韩国产 | 日韩av美女电影 | 亚洲精品免费视频 | 亚洲免费视频播放 | 成人国产精品免费观看 | 久久久精品影院 | 精品久久精品 | 青青激情网 | 亚洲国产精品一区二区久久 | 中文字幕精品一区二区三区在线 | 久久久精品综合 | 久久精选 | 天天干天天草 | 亚洲人成在线观看 | 日本在线免费视频 | 刘亦菲国产毛片bd |