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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2237|回復: 2
收起左側

NRF24L01小車程序已經完全調通51單片機

[復制鏈接]
ID:483213 發表于 2019-3-23 15:04 | 顯示全部樓層 |閱讀模式
/*發送*/
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
/************************************NRF24L01端口定義***********************************/
sbit MISO=P2^5;            //數字輸出(從 SPI 數據輸出腳)
sbit MOSI=P2^4;            //數字輸入(從 SPI 數據輸入腳)
sbit SCK=P2^7;            //數字輸入(SPI 時鐘)
sbit CE=P2^1;            //數字輸入(RX 或 TX 模式選擇)
sbit CSN=P2^2;            //數字輸入(SPI片選信號)
sbit IRQ=P2^6;            //數字輸入(可屏蔽中斷)
/************************************按鍵***********************************************/
sbit KEY1=P3^3;     //按鍵S1
sbit KEY2=P3^2;     //按鍵S2
sbit KEY3=P3^4;     //按鍵S3
sbit KEY4=P3^5;     //按鍵S4
/*********************************************NRF24L01***********************************/
#define TX_ADR_WIDTH 5             
#define RX_ADR_WIDTH 5      
#define TX_PLOAD_WIDTH 20         
#define RX_PLOAD_WIDTH 20         
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //本地地址
uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //接收地址
/***************************************NRF24L01寄存器指令*******************************/
#define READ_REG        0x00        // 讀寄存器指令
#define WRITE_REG       0x20        // 寫寄存器指令
#define RD_RX_PLOAD     0x61        // 讀取接收數據指令
#define WR_TX_PLOAD     0xA0        // 寫待發數據指令
#define FLUSH_TX        0xE1        // 沖洗發送 FIFO指令
#define FLUSH_RX        0xE2        // 沖洗接收 FIFO指令
#define REUSE_TX_PL     0xE3        // 定義重復裝載數據指令
#define NOP             0xFF        // 保留
/*************************************SPI(nRF24L01)寄存器地址***********************/
#define CONFIG          0x00        // 配置收發狀態,CRC校驗模式以及收發狀態響應方式
#define EN_AA           0x01        // 自動應答功能設置
#define EN_RXADDR       0x02        // 可用信道設置
#define SETUP_AW        0x03        // 收發地址寬度設置
#define SETUP_RETR      0x04        // 自動重發功能設置
#define RF_CH           0x05         // 工作頻率設置
#define RF_SETUP                0x06        // 發射速率、功耗功能設置
#define STATUS                        0x07        // 狀態寄存器
#define OBSERVE_TX                0x08        // 發送監測功能
#define CD                                0x09        // 地址檢測
#define RX_ADDR_P0                0x0A        // 頻道0接收數據地址
#define RX_ADDR_P1                0x0B        // 頻道1接收數據地址
#define RX_ADDR_P2                0x0C        // 頻道2接收數據地址
#define RX_ADDR_P3                0x0D        // 頻道3接收數據地址
#define RX_ADDR_P4                0x0E        // 頻道4接收數據地址
#define RX_ADDR_P5                0x0F        // 頻道5接收數據地址
#define TX_ADDR                        0x10        // 發送地址寄存器
#define RX_PW_P0                0x11        // 接收頻道0接收數據長度
#define RX_PW_P1                0x12        // 接收頻道0接收數據長度
#define RX_PW_P2                0x13        // 接收頻道0接收數據長度
#define RX_PW_P3                0x14        // 接收頻道0接收數據長度
#define RX_PW_P4                0x15        // 接收頻道0接收數據長度
#define RX_PW_P5                0x16        // 接收頻道0接收數據長度
#define FIFO_STATUS                0x17        // FIFO棧入棧出狀態寄存器設置

/*************************************函數聲明****************************************/
void Delay(unsigned int s);                                                                        //大延時
void inerDelay_us(unsigned char n);                                                        //小延時
void init_NRF24L01(void);                                                                        //NRF24L01 初始化
uint SPI_RW(uint dat);                                                                                //根據SPI協議,寫一字節數據到nRF24L01,同時從nRF24L01讀出一字節
uchar SPI_Read(uchar reg);                                                                        //從reg寄存器讀一字節
void SetRX_Mode(void);                                                                                //數據接收配置
uint SPI_RW_Reg(uchar reg, uchar value);                                        //寫數據value到reg寄存器
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);        //從reg寄存器讀出bytes個字節,通常用來讀取接收通道數據或接收/發送地址
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);        //把pBuf緩存中的數據寫入到nRF24L01,通常用來寫入發射通道數據或接收/發送地址
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);                //數據讀取后放入rx_buf接收緩沖區中
void nRF24L01_TxPacket(unsigned char * tx_buf);                                //發送 tx_buf中數據

/*****************************************長延時*****************************************/
void Delay(unsigned int s)
{
        unsigned int i;
        for(i=0; i<s; i++);
}

/******************************************************************************************/
uint        bdata sta;                        //狀態標志
sbit        RX_DR        =sta^6;                //RX_DR 為 sta 的第六位
sbit        TX_DS        =sta^5;                //TX_DS 為 sta 的第五位
sbit        MAX_RT        =sta^4;                //MAX_RT 為 sta 的第四位

/******************************************延時函數(短延時)*************************************************/
void inerDelay_us(unsigned char n)        //延時,us 級
{
        for(;n>0;n--)
                _nop_();
}

/****************************************NRF24L01初始化************************************************/
void init_NRF24L01(void)
余下代碼請從附件下載。

NRF24L01小車程序已經完全調通51單片機.rar

4.37 KB, 下載次數: 75, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:1 發表于 2019-3-23 17:14 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

ID:79544 發表于 2019-12-13 10:12 | 顯示全部樓層
感謝分享學習啦!送人玫瑰手留余香!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美黄a| 久久美女网 | 麻豆精品久久 | 亚洲欧美久久 | 一区二区三区在线 | 欧 | 日韩av成人 | 精品国产乱码久久久久久a丨 | 亚洲视频免费 | 日韩久久久一区二区 | 国产精品自产av一区二区三区 | 精品在线看 | 成人片免费看 | 99精品在线观看 | 亚洲国产高清高潮精品美女 | 天天射夜夜操 | 日本久久久久久久久 | av天空| 日本精品在线观看 | 久久久国产精品入口麻豆 | 精品国产一二三区 | 国内精品视频在线 | 久久久久久久一区二区三区 | 97伦理 | 龙珠z在线观看 | 中文字幕 亚洲一区 | 亚洲一区二区三区四区五区午夜 | 亚洲成人在线免费 | 欧美激情a∨在线视频播放 成人免费共享视频 | 久久91精品国产一区二区 | 久久视频精品 | 欧美亚洲综合久久 | 亚洲伊人久久综合 | 日韩国产在线 | 天堂资源最新在线 | 精品久久精品 | 欧美精品一区二区三 | 久热久热 | 欧美一区在线视频 | 国产91亚洲精品一区二区三区 | 久久久久99 | 亚洲天堂中文字幕 |