標(biāo)題: 基于NRF24L01的51單片機(jī)防丟器設(shè)計(jì),含所有詳細(xì)資料及代碼注釋 [打印本頁(yè)]

作者: 墨明棋妙wh    時(shí)間: 2020-2-23 12:13
標(biāo)題: 基于NRF24L01的51單片機(jī)防丟器設(shè)計(jì),含所有詳細(xì)資料及代碼注釋



單片機(jī)源程序如下:
  1. #include "nRF24L01.h"                   //包含頭文件
  2. #include "def.h"                           //包含頭文件

  3. void Delay_1(unsigned int s)   //延時(shí)函數(shù)
  4. {
  5.         unsigned int i;
  6.         for(i=0; i<s; i++);
  7.         for(i=0; i<s; i++);
  8. }
  9. void delay(unsigned int z)                //延時(shí)函數(shù)
  10. {
  11.         unsigned int x,y;
  12.         for(x=z;x>0;x--)
  13.                 for(y=110;y>0;y--);
  14. }


  15. void main(void)                                          //主函數(shù)
  16. {
  17.         unsigned int flag;                          //定義變量
  18.         unsigned char t  =0,flag_1;
  19.         unsigned char TxBuf[20]={0};         // 數(shù)據(jù)暫存數(shù)組
  20.         unsigned char RxBuf[20]={0};       
  21.        
  22. a:  init_io() ;                                 //初始化
  23.         flag_1=0;
  24.         flag=0;                                         //變量清零
  25.        
  26.         TxBuf[0]='c';                         //發(fā)送數(shù)據(jù)c
  27.        
  28.        
  29.         while(1)                                 //進(jìn)入循環(huán)
  30.         {
  31.                 //SetRX_Mode();
  32.                 if(KEY1 ==0 )                  //按下按鍵
  33.                 {
  34.                         TxBuf[0]=0;
  35.                         TxBuf[1]=1;                 //發(fā)送01
  36.                 }
  37.                 else                                  //按鍵沒(méi)有按下
  38.                 {
  39.                         TxBuf[0]=1;
  40.                         TxBuf[1]=1;                 //發(fā)送11
  41.                 }
  42.                 nRF24L01_TxPacket(TxBuf);        // 發(fā)送緩沖區(qū)數(shù)據(jù)
  43.                 SetRX_Mode();                                //發(fā)送完數(shù)據(jù)后設(shè)置成接收模式

  44.                 if(nRF24L01_RxPacket(RxBuf)) //如果接收緩沖區(qū)有數(shù)據(jù)
  45.                 {
  46.                         nRF24L01_TxPacket(TxBuf);        // 發(fā)送緩沖區(qū)數(shù)據(jù)                               
  47.                         flag=0;
  48.                         flag_1=0;                                        //變量清零
  49.                 }
  50.                 else                                                        //接收緩沖區(qū)無(wú)數(shù)據(jù),也就是沒(méi)有接收到數(shù)據(jù)
  51.                 {
  52.                         flag++;                                                //計(jì)時(shí)變量加
  53.                         if(flag>=80)                                //加到80
  54.                         flag_1=1;                                        //變量置1
  55.                         delay(5);                                        //計(jì)時(shí)分辨率是5ms,計(jì)80次就是80*5=400ms
  56.                 }
  57.                 if(flag_1)                                                //如果變量為1,計(jì)時(shí)400ms,開(kāi)啟報(bào)警
  58.                 for(t=0;t<20;t++)                                //for循環(huán)控制燈和蜂鳴器報(bào)警
  59.                 {
  60.                         LED2=~LED2;
  61.                         LED1=~LED1;                                        //取反,達(dá)到閃爍的效果
  62.                         delay(80);                                        //延時(shí)80ms
  63.                         if(t==19)                                        //t加到19時(shí)
  64.                         {
  65.                                 goto a;                                        //回到while前面的a:
  66.                                 flag_1=0;
  67.                                 flag=0;
  68.                         }
  69.                 }
  70.         }
  71. }
復(fù)制代碼

全部資料51hei下載地址:
單片機(jī)防丟程序原理圖.rar (741.38 KB, 下載次數(shù): 64)






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1