之前制作的基于NRF24L01无线防丢器 超过一定距离蜂鸣器会发出提醒需要的元件有图片介绍
视频截图(防丢器电路原理图的讲解):
单片机接受源程序如下:
- #include "reg52.h"
- #include "nRF24L01.h"
- #include "def.h"
- #include "delay.h" //包含头文件
- uchar count_1,count_2,count_3,count,miao,fen,fen_1,fen_2,fen_3,flag_1,flag_2,flag_3; //定义全局变量
- void Delay_1(unsigned int s) //延时函数
- {
- unsigned int i;
- for(i=0; i<s; i++);
- for(i=0; i<s; i++);
- }
- void delay(unsigned int z) //延时函数
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main(void) //主函数
- {
- unsigned int flag,f=1000; //定义变量
- unsigned char t ,flag_1;
- unsigned char TxBuf[20]={0}; //缓冲区数据清零
- unsigned char RxBuf[20]={0};
- init_io() ; //初始化
- while(1) //进入循环
- {
- TxBuf[0] = 0;
- TxBuf[1] = 1; //发送数据01
-
- SetRX_Mode(); //设置接收模式
- if(nRF24L01_RxPacket(RxBuf)) //如果接收缓冲区有数据
- {
- nRF24L01_TxPacket(TxBuf); //发送缓冲区数据
- if( RxBuf[0]==0&&RxBuf[1]==1) //如果接收的数据是01
- {
- for(t=0;t<10;t++) //控制灯和震动工作闪烁
- {
- LED1=~LED1;
- LED2=~LED2; //取反
- delay(50); //延时
- }
- }
- RxBuf[0]= 0;
- RxBuf[1] = 0x00; //接收缓冲区数据清零
- flag=0;
- flag_1=0; //变量清零
- }
- else //接收缓冲区无数据
- {
- flag++; //计时开始
- if(flag==200) //计时到1秒(200*5ms)
- {
- flag_1=1; //变量置1
- }
- delay(5); //5ms延时
- }
- if(flag_1) //如果超时没有接收数据,就开启报警
- for(t=0;t<10;t++) //for循环启动报警
- {
- LED2=~LED2; //闪烁报警
- delay(50); //延时
-
- if(t==9) //闪烁一个周期
- {
- flag_1=0; //变量清零,返回后再次判断是否有信号,如无信号,继续报警
- flag=0;
- }
- }
- }
- }
复制代码
全部资料51hei下载地址:
3-视频讲解.zip
(6.38 MB, 下载次数: 257)
1-源程序.zip
(115.2 KB, 下载次数: 262)
nrf24l01介绍及例程.pdf
(171.02 KB, 下载次数: 149)
nRF24L01芯片资料英文.pdf
(461.93 KB, 下载次数: 71)
NRF24L01功能使用文档.pdf
(650.05 KB, 下载次数: 124)
|