|
電賽用的程序設(shè)計,包含了轉(zhuǎn)彎、無線控制、循跡和人體溫度檢測
單片機(jī)源程序如下:
- #include "reg52.h"
- #include "nRF24L01.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit KEY1 = P2^0;
- sbit KEY2 = P2^1;
- sbit KEY3 = P2^2;
- sbit KEY4 = P2^3;
- sbit KEY5 = P2^4;
- sbit KEY6 = P2^5;
- sbit KEY7 = P2^6;
- sbit KEY8 = P2^7;
- sbit beep = P1^6; //喇叭
- sbit LED = P1^7 ; //發(fā)送數(shù)據(jù)時顯示燈+接收到數(shù)據(jù)后的功能實現(xiàn)燈
-
- void delay_ms(uint z) //延時函數(shù)
- {
- uint y;
- while(z--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- uchar Tx_Buf1[]={1,2,3,4,5,6,7,8}; //發(fā)送的信息1
- uchar Rx_Buf[32]; //接收到的數(shù)據(jù)暫存器,最多32字節(jié)數(shù)據(jù)
- init_NRF24L01();
- LED=0; //初始燈6熄滅
- beep = 0;
- while(NRF24L01_Check()) //檢查不到24l01則報警
- {
- beep=0;
- delay_ms(200);
- beep=1;
- delay_ms(200);
- }
- while(1)
- {
- RX_Mode(); //接收模式
- while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收數(shù)據(jù),返回1則接收到數(shù)據(jù),在等待接收數(shù)據(jù)期間,可以隨時變成發(fā)送模式
- {
- if(KEY1==0) //按了按鍵1,則變成發(fā)送模式,發(fā)送對應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY1==0)
- {
- while(!KEY1);
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=1; //將1發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50); //發(fā)送后LED1閃一下
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY2==0)
- {
- delay_ms(5);//消抖動
- if(KEY2==0)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=2; //將2發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- if(KEY2==1)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=6; //將2發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- }
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY3==0)
- {
- delay_ms(5);//消抖動
- if(KEY3==0)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=3; //將3發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- if(KEY3==1)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=6; //將6發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- }
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY4==0) //按了按鍵8,則變成發(fā)送模式,發(fā)送對應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY4==0)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=4; //將4發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- if(KEY4==1)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=6; //將6發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- }
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY5==0)
- {
- delay_ms(5);//消抖動
- if(KEY5==0)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=5; //將5發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- if(KEY5==1)
- {
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=6; //將6發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- }
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY6==0) //按了按鍵8,則變成發(fā)送模式,發(fā)送對應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY6==0)
- {
- while(!KEY6);
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=6; //將6發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY7==0) //按了按鍵8,則變成發(fā)送模式,發(fā)送對應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY7==0)
- {
- while(!KEY7);
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=7; //將7發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- else if(KEY8==0) //按了按鍵8,則變成發(fā)送模式,發(fā)送對應(yīng)數(shù)據(jù),發(fā)送完后變成接收模式
- {
- delay_ms(5);//消抖動
- if(KEY8==0)
- {
- while(!KEY8);
- TX_Mode(); //發(fā)送模式
- Tx_Buf1[0]=8; //將7發(fā)送過去
- nRF24L01_TxPacket(Tx_Buf1); //發(fā)送命令數(shù)據(jù)
- LED=0;
- delay_ms(50);
- LED=1;
- delay_ms(50);
- break; //退出最近的循環(huán),從而變回接收模式,這句關(guān)鍵
- }
- }
- }
- if(Rx_Buf[0]==1) //若接收到對應(yīng)的數(shù)據(jù)則實現(xiàn)對應(yīng)功能
- {
- Rx_Buf[0]=0; //清空數(shù)據(jù)
- LED=0;
- delay_ms(300);
- LED=1;
- delay_ms(300); //接收到數(shù)據(jù) 后閃爍
- }
- }
- }
復(fù)制代碼
51hei.png (3.92 KB, 下載次數(shù): 98)
下載附件
2020-11-24 16:46 上傳
所有程序51hei提供下載:
智能小車.zip
(137.92 KB, 下載次數(shù): 75)
2020-11-24 14:13 上傳
點擊文件名下載附件
小車 下載積分: 黑幣 -5
|
|