单片机源程序如下:
- #include "nRF24L01.h" //包含头文件
- #include "def.h" //包含头文件
- 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; //定义变量
- unsigned char t =0,flag_1;
- unsigned char TxBuf[20]={0}; // 数据暂存数组
- unsigned char RxBuf[20]={0};
-
- a: init_io() ; //初始化
- flag_1=0;
- flag=0; //变量清零
-
- TxBuf[0]='c'; //发送数据c
-
-
- while(1) //进入循环
- {
- //SetRX_Mode();
- if(KEY1 ==0 ) //按下按键
- {
- TxBuf[0]=0;
- TxBuf[1]=1; //发送01
- }
- else //按键没有按下
- {
- TxBuf[0]=1;
- TxBuf[1]=1; //发送11
- }
- nRF24L01_TxPacket(TxBuf); // 发送缓冲区数据
- SetRX_Mode(); //发送完数据后设置成接收模式
- if(nRF24L01_RxPacket(RxBuf)) //如果接收缓冲区有数据
- {
- nRF24L01_TxPacket(TxBuf); // 发送缓冲区数据
- flag=0;
- flag_1=0; //变量清零
- }
- else //接收缓冲区无数据,也就是没有接收到数据
- {
- flag++; //计时变量加
- if(flag>=80) //加到80
- flag_1=1; //变量置1
- delay(5); //计时分辨率是5ms,计80次就是80*5=400ms
- }
- if(flag_1) //如果变量为1,计时400ms,开启报警
- for(t=0;t<20;t++) //for循环控制灯和蜂鸣器报警
- {
- LED2=~LED2;
- LED1=~LED1; //取反,达到闪烁的效果
- delay(80); //延时80ms
- if(t==19) //t加到19时
- {
- goto a; //回到while前面的a:
- flag_1=0;
- flag=0;
- }
- }
- }
- }
复制代码
全部资料51hei下载地址:
单片机防丢程序原理图.rar
(741.38 KB, 下载次数: 64)
|