WT[2T~I8{JU%WW0_R(6(TGU.png (234.82 KB, 下載次數: 70)
下載附件
2017-5-26 00:13 上傳
0)B755JZ5_8IH4UOS9O[ZK7.png (226.14 KB, 下載次數: 79)
下載附件
2017-5-26 00:13 上傳
【小成果】1、無線發射控制LED【不同命令亮不同的燈】.rar
(111.73 KB, 下載次數: 4)
2017-5-26 00:16 上傳
點擊文件名下載附件
發送程序
- #include<reg51.h>
- #include"2401.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit KEY1=P3^4; //發送按鍵
- sbit KEY2=P3^5;
- sbit KEY3=P3^6;
- sbit KEY4=P3^7;
- sbit beep=P2^3; //喇叭
- sbit LED6=P1^6; //發送數據時顯示燈+接收到數據后的功能實現燈
-
- void delay_ms(uint z) //延時函數
- {
- uint y;
- while(z--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- uchar Tx_Buf[2]; //發送的信息1
- // uchar Rx_Buf[32]; //接收到的數據暫存器,最多32字節數據
- init_NRF24L01();
- LED6=1; //初始燈6熄滅
- while(NRF24L01_Check()) //檢查不到24l01則報警
- {
- beep=0;
- delay_ms(1000);
- beep=1;
- delay_ms(1000);
- }
- while(1)
- {
-
- if(KEY1==0) //按了按鍵1,則變成發送模式,發送對應數據,發送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY1==0)
- {
- while(!KEY1);
- TX_Mode(); //發送模式
- Tx_Buf[0]=1; //將1發送過去
- Tx_Buf[1]=2;
- nRF24L01_TxPacket(Tx_Buf); //發送命令數據
- LED6=0;
- delay_ms(300);
- LED6=1;
- delay_ms(300); //發送后LED1閃一下
- break; //退出最近的循環,從而變回接收模式,這句關鍵
- }
- }
- }
- }
復制代碼
接收源代碼
- #include<reg51.h>
- #include"2401.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit KEY8=P3^7; //發送按鍵
- sbit beep=P2^3; //喇叭
- sbit LED6=P1^6; //發送數據時顯示燈
- sbit LED1=P1^0; //接收到數據后的功能實現燈
- sbit LED2=P1^1;
- sbit LED3=P1^2;
- sbit LED4=P1^3;
- sbit IN1=P1^4;
- sbit IN2=P1^5;
- sbit ENA=P1^6;
- void delay_us(unsigned int aa);
- void delay_ms(uint z) //延時函數
- {
- uint y;
- while(z--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- uint cycle=0,T=1024;
- uchar Tx_Buf1[]={1}; //發送的信息1
- uchar Rx_Buf[32]; //接收到的數據暫存器,最多32字節數據
- init_NRF24L01();
- LED6=1; //初始燈6熄滅
- while(NRF24L01_Check()) //檢查不到24l01則報警
- {
- beep=0;
- delay_ms(200);
- beep=1;
- delay_ms(200);
- }
- while(1)
- {
- RX_Mode(); //接收模式
- //1//if(Rx_Buf[0]==1) //若接收到對應的數據則實現對應功能
- //1//{
- //1// Rx_Buf[0]=0; //清空數據
- //1// LED6=0;
- //1// delay_ms(300);
- //1// LED6=1;
- //1// delay_ms(300); //接收到數據 后閃爍
- //1//}
- switch(Rx_Buf[0])
- { //對數據進行分析來控制燈亮
- case 0:
- break;
- case 1:
- Rx_Buf[0]=0; //清空數據
- LED1=0;
- delay_us(300);
- LED1=1;
- delay_us(300);
- IN1=1;
- IN2=0;
- while(cycle!=T)
- {
- ENA=1;
- delay_us(cycle++);
- ENA=0;
- delay_us(T-cycle);
- }
- IN1=1;
- IN2=0;
- break;
- default:
- Rx_Buf[0]=0; //清空數據
- LED4=0;
- delay_ms(300);
- LED4=1;
- delay_ms(300);
- break;
- }
- }
- }
- void delay_us(unsigned int aa)
- {
- while(aa--);
- }
復制代碼
|