⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf905.c

📁 能较好的实现无线通信 用点阵来实现 距离有100米 程序已通过调试
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -