完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想用两个51单片机和NRF24L01模块实现无线通信,两个单片机一个做主机一个做从机,每个上面都连接无线模块。当按下主机上某按键时,会将对应的数据发送出去,比如按下主机键1则主机发送数据1,按下主机键2则主机发送数据2,从机一直处于接收模式,但是现在的实验现象却一直有问题,从机始终只能接收到第一次按键按下所发送的数据,以后再按按键,从机就收不到主机发来的数据,比如先按键1再按键2,从机就只能收到数据1,以后再按键从机也收不到任何数据;先按键2再按键1,从机就只能收到数据2,以后再按键从机也收不到任何数据。不知道是哪里出了问题。
主机程序 #include "NRF24L01.H" ***it key1 = P3^0; ***it key2 = P3^1; ***it LED1=P1^0; ***it LED2=P1^1; uchar keyscan() //按键函数 { uchar temp; if(key1==0) { delay_ms(10); if(key1==0) { temp=1; } } if(key2==0) { delay_ms(10); if(key2==0) { temp=2; } } return temp; } void main() { uint flag=1,key; CE = 0; //*************** SCK = 0; *****无线模块初始化**** CSN = 1; ****************// Serial_Init(); //初始化串口 while(1) //循环检测按键 并将对应数据发送出去 { while(flag) { key=keyscan(); //检测按键,有按键按下则退出内循环执行后面的语句 if((key==1)|(key==2)) flag=0; } TX_Mode(); //发送模式,将数据发送出去 Delay(100); if(key==1) { LED1=0; Transmit(Tx_Buf1); //Tx_Buf1=0x01 Serial_SendString(Tx_Buf1); } if(key==2) { LED2=0; Transmit(Tx_Buf2); //Tx_Buf2=0x02 Serial_SendString(Tx_Buf2); } while(CheckACK()); Delay(100); LED1=1; LED2=1; flag=1; //flag置1,则可执行下一次按键检测操作 } } 从机程序 #include "NRF24L01.H" ***it LED=P1^0; void main() { CE = 0; SCK = 0; CSN = 1; Serial_Init(); //初始化串口 while( 1 ) { RX_Mode(); //设置为接收模式,循环接收 Delay(100); //防止编译警告 if(nRF24L01_RxPacket(Rx_Buf1)) 如果接收到数据 { LED=1; Serial_SendString(Rx_Buf1); //就将数据显示在电脑上 } else LED=0; } } |
|
相关推荐
5个回答
|
|
很明显,你的发送主程序执行一次按键后就退出循环了,之后发送完成就结束了
|
|
|
|
1、检查你的函数返回值是“0”还是“1”,比如发送完成的标准写法是“0”,尽量不要写“1”,这在C语言中是标准,表示正常返回
2、去掉这条语句while(CheckACK());试试,容易出错 |
|
|
|
你调试出来了吗,可否把程序给我分享一下
|
|
|
|
你的原理图发出来看看
|
|
|
|
有的话,也分享给我一下
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2543 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2331 浏览 5 评论
3156 浏览 3 评论
2801 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2759 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
607浏览 1评论
852浏览 0评论
965浏览 0评论
618浏览 0评论
445浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:54 , Processed in 1.105376 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号