📄 nrf905.c
字号:
#include<string.h>
#include"def.h"
#include"AT24C04.h"
#include"DS18B20.h"
//#include"Led.h"
#define uchar unsigned char
#define uint unsigned int
#define WC 0x00 // Write configuration register command
#define RC 0x10 // Read configuration register command
#define WTP 0x20 // Write TX Payload command
#define RTP 0x21 // Read TX Payload command
#define WTA 0x22 // Write TX Address command
#define RTA 0x23 // Read TX Address command
#define RRP 0x24 // Read RX Payload command
/*******************************************************************************************/
typedef struct RFConfig
{
uchar n;
uchar buf[10];
}RFConfig;
code RFConfig RxTxConf =
{
10,
0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
};
// The content of this struct is nRF905's initialize data.初始化数据
// CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
// RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
// 8 Bits CRC And enable
/*******************************************************************************************/
uchar TxBuf[6];
uchar RxBuf[32];
/*******************************************************************************************/
//uchar rsbrf,delayf,tf,Key;
/*******************************************************************************************/
uchar bdata DATA_BUF;
sbit flag =DATA_BUF^7;
sbit flag1 =DATA_BUF^0;
/*******************************************************************************************/
sbit Key = P0^7;
/*******************************************************************************************/
void InitIO(void); // Initialize IO port
void Inituart(void); // initialize 232 uart
void Config905(void); // Config nRF905 module配置NRF905模式
void SetTxMode(void); // Set nRF905 in Tx mode
void SetRxMode(void); // Set nRF905 in Rx mode
void TxPacket(void); // Send data by nRF905
void RxPacket(void); // Recive data by nRF905
void SpiWrite(uchar); // Write data to nRF905
uchar SpiRead(void); // Read data to nRF905
void Delay(uchar n); // Delay 100us
//void Scankey(void); // Scan key
void TxData (uchar x); // Send key_value to CRT display
void comdebug(void);
void delays_key();
void Write_24c04_32bit(unsigned char count);
void Read_24c04_32bit(unsigned char keycount);
/*
void delay_1ms(void)
{
unsigned int i;
for (i=1; i<(unsigned int)(11*143-2)/12; ++i); //xtal为晶振频率,单位MHz
}
void delay_ms(unsigned int n)
{
unsigned int i;
for (i=0; i<n; ++i)
delay_1ms();
}*/
/*
uchar *pUART; //字符串指针
void print_Char(unsigned char c)
{
SBUF = c;
c = '\0';
pUART=&c;
while (pUART!=0);
}
*/
/*******************************************************************************************/
//function Delay100us();Delay 100us
/*******************************************************************************************/
void Delay(uchar n)
{
uint i;
while(n--)
for(i=0;i<80;i++);
}
/*******************************************************************************************/
/*
unsigned char RxWriteIndex = 0;
void UART_INT(void) interrupt 4
{
if (RI)
{
TxBuf[RxWriteIndex++] = SBUF;
TxBuf[RxWriteIndex] = '\0';
RI = 0;
}
else //TI
{
TI=0; //发送中断标志位(SCON)
if (*pUART != '\0')
{
SBUF = *pUART;
pUART++;
}
else pUART=0; //不会启动下一次发送
}
}
void print_Str(const uchar*p)
{
pUART=p;
TI=1;
while (pUART!=0); //遇到 '\0',输出完毕
}
*/
//unsigned char TXBuffer[32];
unsigned char data RXBuffer[32];
unsigned char count = 0; //24c04写入
unsigned char keycount = 0; //功能按键次数
bit flg = 0;
sbit P14=P1^4; //
sbit P15=P1^5;//154
unsigned char Digital[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x20,0x04,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00,0x00, //"0"
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x07,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x07,0xC0,0x00,0x00,0x00,0x00, //"1"
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x40,
0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x20,0x07,0xe0,0x00,0x00,0x00,0x00, //"2"
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x04,0x20,0x04,0x20,0x00,0x40,0x01,0x80,
0x00,0x40,0x00,0x20,0x00,0x20,0x04,0x20,0x04,0x40,0x03,0x80,0x00,0x00,0x00,0x00, //"3"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xc0,0x01,0x40,0x02,0x40,0x02,0x40,
0x04,0x40,0x04,0x40,0x07,0xe0,0x00,0x40,0x00,0x40,0x01,0xe0,0x00,0x00,0x00,0x00, //"4"
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x04,0x00,0x04,0x00,0x04,0x00,0x05,0x80,
0x06,0x40,0x00,0x20,0x00,0x20,0x04,0x20,0x04,0x40,0x03,0x80,0x00,0x00,0x00,0x00, //"5"
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x02,0x40,0x04,0x00,0x04,0x00,0x05,0x80,
0x06,0x40,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00,0x00, //"6"
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x04,0x40,0x04,0x40,0x00,0x80,0x00,0x80,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, //"7"
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xc0,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x40,
0x01,0x80,0x02,0x40,0x04,0x20,0x04,0x20,0x04,0x20,0x03,0xc0,0x00,0x00,0x00,0x00, //"8"
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x20,0x04,0x20,0x04,0x20,
0x02,0x60,0x01,0xa0,0x00,0x20,0x00,0x20,0x02,0x40,0x03,0x80,0x00,0x00,0x00,0x00, //"9"
};
unsigned char Int[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8,
0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10,
0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,
0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00,//电
0x00,0x00,0x3F,0xF0,0x00,0x10,0x00,0x20,
0x00,0x40,0x01,0x80,0x01,0x04,0xFF,0xFE,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,//子
0x08,0x80,0x08,0x44,0x0F,0xFE,0x10,0x00,
0x10,0x08,0x37,0xFC,0x50,0x00,0x90,0x08,
0x17,0xFC,0x10,0x00,0x13,0xF8,0x12,0x08,
0x12,0x08,0x12,0x08,0x13,0xF8,0x12,0x08,//信
0x02,0x00,0x04,0x10,0x1F,0xF8,0x10,0x10,
0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x02,0x00,
0x51,0x84,0x50,0x92,0x90,0x12,0x0F,0xF0,//息
0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,
0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,//学
0x00,0x80,0x78,0x40,0x4F,0xFE,0x54,0x02,
0x58,0x14,0x63,0xF8,0x50,0x00,0x48,0x08,
0x4F,0xFC,0x48,0xA0,0x68,0xA0,0x50,0xA0,
0x41,0x22,0x41,0x22,0x42,0x1E,0x4C,0x00, //院
//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char text[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char xiaoshudian[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x01,0xc0,0x01,0xc0,0x00,0x00,0x00,0x00 //"."
};
unsigned char sheshidu[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x0c,0x44,0x12,0x42,0x12,0x80,0x0c,0x80,
0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x42,0x00,0x44,0x00,0x38,0x00,0x00,0x00,0x00 //`C
};
void Delayled(unsigned char i)
{
unsigned char j;
for(;i>0;i--)
for(j=0;j<80;j++)
{;}
}
void Display()
{
unsigned int a,e;
unsigned char b,c,d=0;
SCON=0;
for(e=0;e<32;e=e+32)
{
for(a=0;a<8;a++)
{
for(b=0;b<8;b++)
{
for(c=0;c<32;c++)
{
SBUF=~(text[e+c+32]>>(8-a)|text[e+c+1]<<a);
while(TI==0);
TI=0;
SBUF=~(text[e+c+1]>>(8-a)|text[e+c]<<a);
while(TI==0);
TI=0;
c++;
P14=1; //存储寄存器时钟输入
P1=d;
P15=0; //使能74HC154
Delayled(3);
P14=0;
P15=1; //禁止74HC154
d++;
if(d==16)d=0;
}
}
}
for(a=0;a<8;a++)
{
for(b=0;b<8;b++)
{
for(c=0;c<32;c++)
{
SBUF=~(text[e+c+1+32]>>(8-a)|text[e+c+32]<<a);
while(TI==0);
TI=0;
SBUF=~(text[e+c+32]>>(8-a)|text[e+c+1]<<a);
while(TI==0);
TI=0;
c++;
P14=1;
P1=d;
P15=0;
Delayled(3);
P14=0;
P15=1;
d++;
if(d==16)d=0;
}
}
}
}
}
void Display_Init()
{
unsigned int a,e;
unsigned char b,c,d=0;
SCON=0;
for(e=0;e<192;e=e+32)
{
for(a=0;a<8;a++)
{
for(b=0;b<8;b++)
{
for(c=0;c<32;c++)
{
SBUF=~(Int[e+c+32]>>(8-a)|Int[e+c+1]<<a);
while(TI==0);
TI=0;
SBUF=~(Int[e+c+1]>>(8-a)|Int[e+c]<<a);
while(TI==0);
TI=0;
c++;
P14=1; //存储寄存器时钟输入
P1=d;
P15=0; //使能74HC154
Delayled(3);
P14=0;
P15=1; //禁止74HC154
d++;
if(d==16)d=0;
}
}
}
for(a=0;a<8;a++)
{
for(b=0;b<8;b++)
{
for(c=0;c<32;c++)
{
SBUF=~(Int[e+c+1+32]>>(8-a)|Int[e+c+32]<<a);
while(TI==0);
TI=0;
SBUF=~(Int[e+c+32]>>(8-a)|Int[e+c+1]<<a);
while(TI==0);
TI=0;
c++;
P14=1;
P1=d;
P15=0;
Delayled(3);
P14=0;
P15=1;
d++;
if(d==16)d=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -