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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7782|回復: 12
收起左側

nRF24L01無線模塊(51單片機收發源碼)

  [復制鏈接]
ID:228471 發表于 2018-4-22 14:33 | 顯示全部樓層 |閱讀模式
nRF24L01無線模塊
0.jpg
單片機源程序如下:
  1. #include <reg51.h>
  2. #include <api.h>
  3. #include "1602.h"
  4. #define uchar unsigned char
  5. #define TX_ADR_WIDTH 5 // 5字節寬度的發送/接收地址
  6. #define TX_PLOAD_WIDTH 20// 數據通道有效數據寬度
  7. uchar TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //定義一個靜態發送地址
  8. uchar RX_BUF[TX_PLOAD_WIDTH];
  9. uchar RX_date[3]={0x30,0x30,0x30};
  10. uchar flag;
  11. uchar bdata sta;
  12. sbit  RX_DR=sta^6;
  13. sbit  TX_DS=sta^5;
  14. sbit  MAX_RT=sta^4;
  15. sbit  led=P1^5;
  16. void init_io(void)
  17. {
  18.         CE  = 0; //待機
  19.         CSN = 1;//SPI禁止
  20.         SCK = 0;//SPI時鐘置低
  21.         IRQ = 1;//中斷復位
  22. }
  23. uchar SPI_RW(uchar byte)
  24. {
  25.         uchar i;
  26.            for(i=0; i<8; i++)          // 循環8次
  27.            {
  28.                    MOSI = (byte & 0x80);   // byte最高位輸出到MOSI
  29.                    byte <<= 1;       // 低一位移位到最高位
  30.                    SCK = 1;         // 拉高SCK,nRF24L01從MOSI讀入1位數據,同時從MISO輸出1位數據
  31.                    byte |= MISO;   // 讀MISO到byte最低位
  32.                    SCK = 0;             // SCK置低
  33.            }
  34.     return(byte);                   // 返回讀出的一字節
  35. }
  36. uchar SPI_RW_Reg(uchar reg, uchar value)   
  37. {
  38.         uchar status;
  39.           CSN = 0;                   // CSN置低,開始傳輸數據
  40.           status = SPI_RW(reg);      // 選擇寄存器,同時返回狀態字
  41.           SPI_RW(value);             // 然后寫數據到該寄存器
  42.           CSN = 1;                   // CSN拉高,結束數據傳輸
  43.           return(status);            // 返回狀態寄存器
  44. }
  45. uchar SPI_Read(uchar reg)
  46. {
  47.         uchar reg_val;
  48.           CSN = 0;                    // CSN置低,開始傳輸數據
  49.           SPI_RW(reg);                // 選擇寄存器
  50.           reg_val = SPI_RW(0);        // 然后從該寄存器讀數據
  51.           CSN = 1;                    // CSN拉高,結束數據傳輸
  52.           return(reg_val);            // 返回寄存器數據
  53. }
  54. uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
  55. {
  56.         uchar status, i;
  57.           CSN = 0;                    // CSN置低,開始傳輸數據
  58.           status = SPI_RW(reg);       // 選擇寄存器,同時返回狀態字
  59.           for(i=0; i<bytes; i++)
  60.             pBuf[i] = SPI_RW(0);    // 逐個字節從nRF24L01讀出
  61.           CSN = 1;                    // CSN拉高,結束數據傳輸
  62.           return(status);             // 返回狀態寄存器
  63. }
  64. uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)
  65. {
  66.         uchar status, i;
  67.           CSN = 0;                    // CSN置低,開始傳輸數據
  68.           status = SPI_RW(reg);       // 選擇寄存器,同時返回狀態字
  69.           for(i=0; i<bytes; i++)
  70.             SPI_RW(pBuf[i]);        // 逐個字節寫入nRF24L01
  71.           CSN = 1;                    // CSN拉高,結束數據傳輸
  72.           return(status);             // 返回狀態寄存器
  73. }
  74. void RX_Mode(void)
  75. {
  76.         CE = 0;
  77.           SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // 接收設備接收通道0使用和發送設備相同的發送地址
  78.           SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);               // 使能接收通道0自動應答
  79.           SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);           // 使能接收通道0
  80.           SPI_RW_Reg(WRITE_REG + RF_CH, 40);                 // 選擇射頻通道0x40
  81.           SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);  // 接收通道0選擇和發送通道相同有效數據寬度
  82.           SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);            // 數據傳輸率1Mbps,發射功率0dBm,低噪聲放大器增益
  83.           SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);              // CRC使能,16位CRC校驗,上電,接收模式
  84.           CE = 1;                                            // 拉高CE啟動接收設備
  85. }
  86. void main(void)
  87. {
  88.   int i;
  89.    Inte();
  90.         init_io();                              // 初始化IO
  91.         RX_Mode();                              // 設置為接收模式
  92.         while(1)
  93.         {
  94.                 sta = SPI_Read(STATUS);// 讀狀態寄存器
  95.             if(RX_DR)// 判斷是否接受到數據
  96.                 {
  97.                         SPI_Read_Buf(RD_RX_PLOAD,RX_BUF,TX_PLOAD_WIDTH);//從RX FIFO讀出數據
  98.                         flag = 1;
  99.                 }
  100.                 SPI_RW_Reg(WRITE_REG + STATUS,sta);// 清除RX_DS中斷標志
  101.                 if(flag) //接受完成
  102.                 {
  103.                         flag=0;// 清標志
  104.          RX_date[i++]=RX_BUF[0];
  105.                          
  106.                         if(i==3)
  107.                         {
  108. ……………………

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

所有資料51hei提供下載:
無線模塊(51收發).zip (89.88 KB, 下載次數: 290)


評分

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

查看全部評分

回復

使用道具 舉報

ID:313743 發表于 2018-4-25 11:20 | 顯示全部樓層
你們都好會啊,我才開始學習
回復

使用道具 舉報

ID:287642 發表于 2018-4-27 15:02 | 顯示全部樓層
可不可以免費給我發啊
回復

使用道具 舉報

ID:287642 發表于 2018-4-27 18:39 | 顯示全部樓層
冷鋒484 發表于 2018-4-27 15:02
可不可以免費給我發啊

我的郵箱是3372008661@qq.com,萬分感謝
回復

使用道具 舉報

ID:225778 發表于 2018-8-2 16:54 | 顯示全部樓層
學完32學51,一臉懵逼啊
回復

使用道具 舉報

ID:377382 發表于 2018-8-4 13:37 | 顯示全部樓層
不錯
回復

使用道具 舉報

ID:184706 發表于 2019-1-23 15:34 | 顯示全部樓層
很不錯的程序
回復

使用道具 舉報

ID:487194 發表于 2019-3-8 23:21 | 顯示全部樓層
WITHER 發表于 2018-8-2 16:54
學完32學51,一臉懵逼啊

先從51入手較好
回復

使用道具 舉報

ID:478236 發表于 2019-3-17 21:32 | 顯示全部樓層
這個是收發都在一個程序里面嗎?
回復

使用道具 舉報

ID:383987 發表于 2019-3-19 20:43 | 顯示全部樓層
WITHER 發表于 2018-8-2 16:54
學完32學51,一臉懵逼啊

太久沒接觸都忘記了
回復

使用道具 舉報

ID:489605 發表于 2019-3-29 14:06 | 顯示全部樓層
一直在學習還是不太會
回復

使用道具 舉報

ID:489605 發表于 2019-3-29 14:07 | 顯示全部樓層
51的地址線和時鐘線怎么區分的呢
回復

使用道具 舉報

ID:585455 發表于 2019-7-23 17:15 | 顯示全部樓層
感謝分享好物
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在线 | 午夜影院网站 | 中文字幕久久精品 | 亚洲国产精品第一区二区 | 91亚洲国产成人久久精品网站 | 一区二区三区在线免费观看 | 成人精品视频免费 | 美女视频黄色片 | 欧美精品一二三区 | 国产成人精品午夜视频免费 | 成人精品一区二区三区中文字幕 | 久久久99精品免费观看 | 亚洲视频免费在线观看 | 久久夜色精品国产 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 亚洲精品乱码 | 欧美激情精品久久久久 | 蜜桃精品视频在线 | 野狼在线社区2017入口 | 99免费精品 | 中文字幕在线播放第一页 | 最新国产精品视频 | 亚洲最大的成人网 | 国产1区2区在线观看 | 国产成人精品在线 | 视频一区在线观看 | 亚洲视频免费播放 | 中文字幕在线观看一区 | 在线婷婷| 国产精品不卡视频 | 国产精品视频在线播放 | 一级片片 | 99精彩视频| 成人精品一区二区 | 国产精品久久久久久久免费大片 | 亚洲一在线 | 国产精品国产三级国产aⅴ原创 | 国产精品99久久久久久久久久久久 | 三级成人在线 | 精品乱子伦一区二区三区 | 一区二区三区国产在线观看 |