標(biāo)題:
NRF24l01實(shí)時(shí)雙向2.4g通信(stm32與51單片機(jī)源碼)
[打印本頁]
作者:
12edad
時(shí)間:
2017-8-1 14:13
標(biāo)題:
NRF24l01實(shí)時(shí)雙向2.4g通信(stm32與51單片機(jī)源碼)
0.png
(46.65 KB, 下載次數(shù): 106)
下載附件
2017-8-1 17:23 上傳
nrf_2.4g通信
stm32單片機(jī)源程序如下:
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "NRF24l01.h"
#include "key.h"
int main(void)
{
u8 Tx_Buf1[]={1}; //要發(fā)送的數(shù)據(jù) 1
u8 Rx_Buf[32]; //接收到的數(shù)據(jù) 最多32字節(jié)
u8 key=0;
Stm32_Clock_Init(9);//系統(tǒng)時(shí)鐘設(shè)置
delay_init(72); //延時(shí)初始化
uart_init(72,9600); //串口1初始化
KEY_Init(); //按鍵初始化
LED_Init(); //LED初始化
NRF24L01_Init(); //初始化NRF24L01
while(NRF24L01_Check())//檢測(cè)不到24L01
{
delay_ms(300);
LED0=!LED0;//DS0閃爍
LED1=!LED1;//DS1閃爍
}
//初始 DS1熄滅
LED1=1;//
while(1)
{
RX_Mode();//接收模式
while(NRF24L01_RxPacket(Rx_Buf))//等待接收數(shù)據(jù) ,返回0則接收到數(shù)據(jù) ,在等待接收數(shù)據(jù)期間,可以隨時(shí)變成發(fā)送模式
{
key=KEY_Scan();
if(key==1) //按了KEY0 則變成發(fā)送模式,發(fā)送對(duì)應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
{
TX_Mode(); //發(fā)送模式
NRF24L01_TxPacket(Tx_Buf1); // 發(fā)送命令數(shù)據(jù)
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300); //發(fā)送后LED1閃一下
break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
}
}
if(Rx_Buf[0]==1) //若接收到對(duì)應(yīng)的數(shù)據(jù)則實(shí)現(xiàn)對(duì)應(yīng)功能
{
Rx_Buf[0]=0;//清空數(shù)據(jù)
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);//接收到數(shù)據(jù) 后閃爍
}
}
}
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
51單片機(jī)源程序如下:
#include<reg51.h>
#include"2401.h"
#define uint unsigned int
#define uchar unsigned char
sbit KEY8=P3^7; //發(fā)送按鍵
sbit beep=P2^3;//喇叭
sbit LED6=P1^6; ////接收到數(shù)據(jù)后的功能實(shí)現(xiàn)燈
void delay_ms(uint z) //延時(shí)函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delayms(unsigned int x)
{
unsigned int i;
while(x--)
for(i=125;i>0;i--);
}
void main()
{
uchar Tx_Buf1[]={1};//發(fā)送的信息1
uchar Rx_Buf[32]; //接收到的數(shù)據(jù)暫存器,最多32字節(jié)數(shù)據(jù)
init_NRF24L01();
LED6=1;//初始燈6熄滅
while(NRF24L01_Check()) //檢查不到24l01則報(bào)警
{
beep=0;
delayms(200);
beep=1;
delayms(200);
}
while(1)
{
RX_Mode();//接收模式
while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收數(shù)據(jù) ,返回1則接收到數(shù)據(jù) ,在等待接收數(shù)據(jù)期間,可以隨時(shí)變成發(fā)送模式
{
if(KEY8==0) //按了按鍵8 則變成發(fā)送模式,發(fā)送對(duì)應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
{
delay_ms(5);//消抖動(dòng)
if(KEY8==0)
{
while(!KEY8);
TX_Mode(); //發(fā)送模式
nRF24L01_TxPacket(Tx_Buf1); // 發(fā)送命令數(shù)據(jù)
LED6=0;
delay_ms(300);
LED6=1;
delay_ms(300); //發(fā)送后LED6閃一下
break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
}
}
}
if(Rx_Buf[0]==1) //若接收到對(duì)應(yīng)的數(shù)據(jù)則實(shí)現(xiàn)對(duì)應(yīng)功能
{
Rx_Buf[0]=0;//清空數(shù)據(jù)
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
NRF24l01實(shí)時(shí)雙向通信(stm32與51).zip
(1.06 MB, 下載次數(shù): 589)
2017-8-1 14:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
tyarist
時(shí)間:
2018-5-3 20:17
非常好的例子,謝謝
作者:
ccccc5321c
時(shí)間:
2018-5-5 22:16
好想下載來看看 沒錢 只好自己寫了
作者:
龍嘯九重天
時(shí)間:
2018-5-5 22:47
資料很好,下載下來學(xué)習(xí)一下
作者:
J.K.Who
時(shí)間:
2018-5-25 14:36
多謝分享,下載學(xué)習(xí)
作者:
網(wǎng)俠
時(shí)間:
2018-6-22 13:57
下載學(xué)習(xí)!
作者:
chn88
時(shí)間:
2018-7-16 14:37
非常好的例子,謝謝
作者:
微笑x
時(shí)間:
2018-7-17 15:32
A good example
作者:
xld_shenghuo
時(shí)間:
2018-8-7 22:20
不錯(cuò),學(xué)習(xí)一下
作者:
zhangzhoulzl
時(shí)間:
2018-8-8 23:46
非常好,正好需要
作者:
2323jgdfdf
時(shí)間:
2018-8-16 20:05
為什么沒有原理圖,缺少了硬件部分的資料
作者:
一起爆肥
時(shí)間:
2018-9-26 10:25
非常好的例子,謝謝
作者:
一起爆肥
時(shí)間:
2018-9-26 10:44
有原理圖么
作者:
gyh32499302
時(shí)間:
2019-1-8 11:53
非常好,正好需要
作者:
yunflow
時(shí)間:
2019-3-17 17:27
支持樓主大大
作者:
威海沙灘
時(shí)間:
2019-8-9 19:36
來學(xué)習(xí)一下
作者:
haoyu983
時(shí)間:
2019-8-15 16:49
非常好的例子,謝謝
作者:
hei51ppp
時(shí)間:
2020-1-16 20:12
學(xué)習(xí)下。。。樓主好人啊。
作者:
lele5211314
時(shí)間:
2020-1-21 17:09
NRF2401還有人真正的用嗎?高校里的玩具
作者:
進(jìn)而種
時(shí)間:
2020-4-24 10:34
為啥打不開
作者:
莫詩(shī)書
時(shí)間:
2020-4-27 20:42
多謝老哥了
作者:
zhenghua007
時(shí)間:
2021-1-17 21:12
謝謝,正想看看不同類型單片機(jī)用NRF24L01通訊。
作者:
williamjing
時(shí)間:
2021-1-20 08:39
資料很好,下載下來學(xué)習(xí)一下
作者:
guangxin
時(shí)間:
2021-1-30 03:20
樓主牛B,正好參考
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1