之前制作的基于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)
2018-3-21 16:26 上傳
點擊文件名下載附件
原理圖介紹
1-源程序.zip
(115.2 KB, 下載次數: 262)
|