资源简介

该收发程序用NRF24l01的0通道作为通信渠道,载频为2.4GHZ,将受到的32个字节通过串口与上位机通信,可在串口助手软件中查看所收数据。同时液晶宣示所收发字节数。

资源截图

代码片段和文件信息

#include 
#define uchar unsigned char 
#define uint  unsigned int 
#define  LCD1602_Port P3 //数据端口
//控制端口定义**********************************************************
sbit LcdRs = P1^5;
sbit LcdRw = P1^6;
sbit LcdEn   = P1^7;
sbit  LED = P2^6;
//**************************************************************************************
sbit  MISO = P2^0;
sbit  MOSI = P2^3;
sbit SCK   = P2^2;
sbit CE   = P2^4;
sbit CSN = P2^5;
sbit IRQ = P2^1;
//************************************按键***************************************************
//sbit KEY1 = P3^4;
//************************************LED***************************************************
//记录发送次数计数器
long uint Send_Count = 0;
uchar const code TX_ADDRESS[5]= {0x340x430x100x100x01}; //本地地址
uchar const code RX_ADDRESS[5]= {0x340x430x100x100x01}; //接收地址


//*************************************中断标志********************************************
//以下任意一个中断都会使IRQ引脚编程低电平,判断IRQ引脚就可以知道当前接收或者发送的状态了
uchar  bdata NRF24L01_Sta;        //状态标志
sbit   RX_DR =NRF24L01_Sta^6; //接收中断标志
sbit   TX_DS =NRF24L01_Sta^5; //发送中断标志
sbit   MAX_RT =NRF24L01_Sta^4; //重发次数中断标志,当重发次数超过了最大允许的重发次数该中断产生

//***********************************发送缓冲区*********************************************
uchar TxBuf[32]=
{
0x0a0x0b0x0c0x040x050x060x070x08
0x090x100x110x120x130x140x150x16
0x170x180x190x200x210x220x230x24
0x250x260x270x280x290x300x310x32
};
void Delay_us(uint n)
{
for(;n>0;n--) ;
}

void Delay_ms(uint z)
{
  uint xy;
for(x = 0;x < z;x++)
  for(y = 0;y < 110;y++);
}
uchar LCD1602_Wait(void)    //读1602内部状态字 ,查看是否准备好
{
uchar Sta;
LcdRs=0;    //LcdRS=LLcdRw=HLcdEn=H 输出D0~D7状态字
LcdRw=1;  
        Delay_ms(1);   
LcdEn=1;       
        Delay_ms(1);   
Sta = LCD1602_Port;  
        Delay_ms(1);     
LcdEn=0;
Sta = Sta & 0x80;
return Sta;
}

void LCD1602_Write(bit style uchar input)
{
while(LCD1602_Wait()); //若忙碌,则等待免得显示乱码
LcdEn = 0;
LcdRs = style;         //设置是数据‘1‘还是命令‘0‘
LcdRw = 0;   
        Delay_ms(1);
LCD1602_Port = input;
        Delay_ms(1);  
LcdEn = 1;  
        Delay_ms(1);  
LcdEn = 0;   
        Delay_ms(1);
}

void LCD1602_Initial()
{
LcdEn=0;
LCD1602_Write(00x38);               //8位数据端口2行显示5*7点阵
LCD1602_Write(00x0c);  //开启显示 无光标
LCD1602_Write(00x06);       //AC递增 画面不动
LCD1602_Write(00x01);   //清屏
Delay_ms(10);
}

void LCD1602_GotoXY(uchar x uchar y)    //X为显示指针的位置,即为各行的第几个位置,Y选行
{
if(x==0)
LCD1602_Write(00x80+y);
if(x==1)
LCD1602_Write(0(0x80+0x40+y));
}

void LCD1602_Display_NoXY(uchar *str)  //向LCD写入字符串
{
while(*str!=‘\0‘)
{
LCD1602_Write(1*str);
str++;
}
}

uchar SPI_RW(uchar dat) //发送dat数据,并返回接收到得数据
{
uchar Bit_Count; //位计数器,用于确定接收或者发送的位数,这里是一个字节即8位
  for(Bit_Count=0;Bit_Count<8;Bit_Count++) 
  {
MOSI = (dat & 0x80);         // 输出数据 MSB to MOSI,即先

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-03-24 10:15  NRF24L01带lcd1602液晶和串口通信\
     目录           0  2013-03-24 10:15  NRF24L01带lcd1602液晶和串口通信\发送\
     文件        5115  2012-03-02 09:37  NRF24L01带lcd1602液晶和串口通信\发送\STARTUP.A51
     文件       11764  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\STARTUP.lst
     文件         854  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\STARTUP.obj
     文件       12136  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送
     文件        7109  2013-03-21 13:37  NRF24L01带lcd1602液晶和串口通信\发送\发送.c
     文件        3524  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送.hex
     文件       13801  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送.LST
     文件       17088  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送.M51
     文件       13803  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送.OBJ
     文件        1092  2013-03-23 20:24  NRF24L01带lcd1602液晶和串口通信\发送\发送.Opt
     文件         757  2013-03-23 20:22  NRF24L01带lcd1602液晶和串口通信\发送\发送.plg
     文件        2051  2013-03-09 13:31  NRF24L01带lcd1602液晶和串口通信\发送\发送.Uv2
     文件        1091  2013-03-22 20:32  NRF24L01带lcd1602液晶和串口通信\发送\发送_Opt.Bak
     文件        2051  2013-03-09 00:24  NRF24L01带lcd1602液晶和串口通信\发送\发送_Uv2.Bak
     目录           0  2013-03-24 10:15  NRF24L01带lcd1602液晶和串口通信\接收\
     文件        5115  2012-03-02 09:37  NRF24L01带lcd1602液晶和串口通信\接收\STARTUP.A51
     文件       11764  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\STARTUP.lst
     文件         854  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\STARTUP.obj
     文件       15618  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\接收
     文件        8587  2013-03-09 13:17  NRF24L01带lcd1602液晶和串口通信\接收\接收.c
     文件        4197  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\接收.hex
     文件       17755  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\接收.LST
     文件       21971  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\接收.M51
     文件       17902  2013-03-23 20:23  NRF24L01带lcd1602液晶和串口通信\接收\接收.OBJ
     文件        1093  2013-03-23 20:24  NRF24L01带lcd1602液晶和串口通信\接收\接收.Opt
     文件         559  2013-03-23 20:24  NRF24L01带lcd1602液晶和串口通信\接收\接收.plg
     文件        2051  2013-03-09 13:31  NRF24L01带lcd1602液晶和串口通信\接收\接收.Uv2
     文件        1092  2013-03-21 13:39  NRF24L01带lcd1602液晶和串口通信\接收\接收_Opt.Bak
     文件        2051  2013-03-09 00:24  NRF24L01带lcd1602液晶和串口通信\接收\接收_Uv2.Bak
............此处省略0个文件信息

评论

共有 条评论