1、完成硬件電路的設計,其中包括單片機和NRF24L01芯片模塊的設計;
2、完成無線通信模塊的程序設計與實現進行分析和總結;
電路原理圖如下:
圖片1.png (141.67 KB, 下載次數: 59)
下載附件
2021-7-14 17:20 上傳
單片機源程序如下:
- /**************************************************************************************
- * LCD1602液晶顯示實驗 *
- 實現現象: 具體接線操作請參考視頻教程
- 下載程序后插上LCD1602液晶在開發板上,即可顯示
- 注意事項:
- ***************************************************************************************/
- #include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
- #include "lcd.h"
- typedef unsigned int u16; //對數據類型進行聲明定義
- typedef unsigned char u8;
- sbit KEY1=P2^3;
- sbit KEY2=P2^2;
- void Delay(unsigned int s);
- void inerDelay_us(unsigned char n);
- void init_NRF24L01(void);
- u16 SPI_RW(u16 u8);
- u8 SPI_Read(u8 reg);
- void SetRX_Mode(void);
- void SetTX_Mode(void);
- u16 SPI_RW_Reg(u8 reg, u8 value);
- u16 SPI_Read_Buf(u8 reg, u8 *pBuf, u8 uchars);
- u16 SPI_Write_Buf(u8 reg, u8 *pBuf, u8 uchars);
- unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);
- void nRF24L01_TxPacket(unsigned char * tx_buf);
-
- u8 TxBuf[20]={0};
-
- u8 flag;
- u8 data_count;
- u8 word_length;
-
- void UsartInit()
- {
- SCON=0X50; //設置為工作方式1
- TMOD=0X20; //設置計數器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //計數器初始值設置,注意波特率是4800的
- TL1=0XF3;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1; //打開計數器
- }
- /*******************************************************************************
- * 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main(void)
- {
- u8 i;
- u8 RxBuf[20]={0};
- init_NRF24L01() ;
- Init_LCD1602();
- UsartInit();
-
- while(1)
- {
- if(KEY1 == 0 )
- {
- SetTX_Mode();
- for(i=word_length;i<20;i++)
- {
- TxBuf[i]=0x20;
- }
- LCD1602_Dis_Str(0, 0, &TxBuf[0]); //顯示字符串
-
- nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
- }
- //***********************************************************************************************
- SetRX_Mode();
- nRF24L01_RxPacket(RxBuf);
- LCD1602_Dis_Str(0, 1, &RxBuf[0]); //顯示字符串
- Delay(1000);
-
- if(KEY2 == 0)
- {
- LCD1602_Write_Cmd(0x01); //清除顯示
- }
- }
- }
- void UART_Receive() interrupt 4{
- u8 temp,j;
- if(RI ==1 )
- { RI=0;
-
- // LCD1602_Write_Cmd(0x01); //清除顯示
-
- temp=SBUF;
- if(temp!='.')
- {
- TxBuf[data_count]=temp;//
- data_count++;
- }
- else{
- word_length=data_count;
- data_count=0;
- }
-
- }
- }
復制代碼
所有程序51hei提供下載:
程序.zip
(57.68 KB, 下載次數: 45)
2021-7-14 17:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|