1、完成硬件电路的设计,其中包括单片机和NRF24L01芯片模块的设计;
2、完成无线通信模块的程序设计与实现进行分析和总结;
电路原理图如下:
单片机源程序如下:
- /**************************************************************************************
- * 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)
|