基于stm32f103单片机和51单片机的nrf24c01模块无线传输模块代码 百度网盘开源工程

分别编译下载代码到at89c52和stm32f103c8t6中
对于51单片机收发数据显示在了lcd1602上
对于stm32 数据则是显示在0.96寸的oled上

屏幕只是用来查看调试用,对于用不到屏幕的,把屏幕相关代码删掉就可以了

该代码可以用于

51------51

51------32

32-----32

这三种之间任意搭配  都是兼容的

具体接线如下

也可以下载下面的百度网盘链接自己打开工程文件查看更改

51接线  也可自己更改

42c5bf2cd8f5419892ce1d6e1af17e46.png

stm32f103

d7c937e6d78c4419a95c42709c2194da.png

可以看明白吧   就比如ce接gpiob下的第5个io口 

对于显示屏我这么接的

stm32:0.96寸的oled

5a06d31b791a496888cbeaccce0987dd.png

51:lcd1602

 2eb7e32fe5aa42769c5025a280d7389f.png

接下来是主要内容了

主函数文件下的两个数组分别用来存数据用 ,

32ab54f0f17e47b8be2132b94bd123ba.png

接收到数据后就会把数据存在里面。把需要发送的数据放数组2里面,然后调用writfifo();函数 ,就发射出去了。(括号里填写发送数组里的几个字节)。
对于接收调用readfifo();函数  ,然后就会把接收到的数据存放到数组1里.。

void main()
{unsigned char a=0;
LCD_Init();
nrfinit();
while(1)
{

while(a==0)//a是用来判断选择发射还是接收模式的
{if(readdata(0x00)!=0x0f||readdata(0x1d)!=0x40){mode(1);}//判断是不是进入了接收模式
readfifo();LCD_ShowString(1,1,"mode resive");//lcd1602显示模式
LCD_ShowNum(2,1,shuju1[0],2);LCD_ShowNum(2,4,shuju1[1],2);
LCD_ShowNum(2,7,shuju1[30],2);LCD_ShowNum(2,10,shuju1[31],2);
LCD_ShowNum(2,14,shuju1[2],2);
//这几行是显示接收到的数据  注意shuju1[].shuju1[]这两个数组的第零位不可用 是用来显示这次传输了多少个字节
delay1ms(100);
if(P3_1==0){a++;delay1ms(1000);}
}

while(a==1)
{if(readdata(0x00)!=0x0e||readdata(0x1d)!=0x40){mode(0);}
LCD_ShowString(1,1,"mode shoot");
delay1ms(100);
if(P3_2==0){writefifo(3);}
if(P3_1==0){a--;delay1ms(1000);}
}
}
}

对于相关子函数在这

ddecff0218a64a36879be34e656ce322.png

注意:本代码包括通讯协议等全部为作者本人自己参考芯片手册编写 

代码全网独此一份  如需转发或者推广 希望大家附上本人原csdn链接 

开源仅供大家学习 、了解这个模块  因此代码写的不是特别规范  

文件百度网盘下载:提取码 6y7lhttps://pan.baidu.com/s/18hk_kVFp6x9YpMCAhengdg?pwd=6y7l   < 点击这下载​​

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值