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

📄 main.c

📁 第二届盛群比赛之前做的一个项目
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************************\ 
============================================================================================
* T905.c
*
* This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT; 
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*
* NOTES:
* This program is for the nRF905 with 232 interface;
* $write date: 2004.4.7 ;time 11:00$
* $Revision: 1 $
*
/*******************************************************************************************/
//#include"HT48E50.h"
#include <ht46r232.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;
#define RxTxConf_n 10
uchar const RxTxConf_buf[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[32];
uchar  RxBuf[32];
uchar RecFirChar;
/*******************************************************************************************/
#pragma rambank0
uchar  DATA_BUF;
bit  FlagRec;
unsigned long loopcnt;
uchar poscnt;
unsigned long alarmcnt;
bit FlagShowAlarm;
bit IsAlarm;
unsigned long keycnt;
bit signstar;
//#define	 flag    DATA_BUF^7
//#define	 flag1	 DATA_BUF^0
/*******************************************************************************************/
#define P0      _pa 
#define	TX_EN	_pd1 // selection: 1 for tx and 0 for rx
#define	TRX_CE	_pd0 // enable chip transmit and receive,output
#define	PWR_UP	_pc4 // power switch output
#define	MISO	_pc3 // data output
#define	MOSI	_pc2 // data input
#define	SCK		_pc1 // output, master clock
#define	CSN		_pc0 // output for spi enable

#define	AM		_pa2
#define	DR		_pa3
#define	CD		_pa4
//#define	TX_EN	_pb3 // selection: 1 for tx and 0 for rx

/*******************************************************************************************/
void InitIO(void);				// Initialize IO port
//void Inituart(void);			// initialize 232 uart
//void timer1_init();             // initialize  timer1
void Config905(void);			// Config nRF905 module
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(uchar carcmd);				// Scan key
//void TxData (uchar x);			// Send key_value to CRT display



//**************************LCD***define****************************
 
#define  LINE1     0
#define  LINE2     1
#define  LINE1_HEAD    0x80
#define  LINE2_HEAD    0xC0
#define  LCD_DELAY_TIME   40
#define  DATA_MODE    0x38
#define  OPEN_SCREEN    0x0C
#define  DISPLAY_ADDRESS   0x80
#define  CLEARSCREEN    LCD_en_command(0x01)

#define  HIGH   1
#define  LOW    0
#define  TRUE    1
#define  FALSE    0
#define  ZERO    0 

//change this part at different board

#define  LCD1602_RS  _pa5  //data command select  1 data  0 command  pin 4 
#define  LCD1602_RW  _pa6 //read write select   1 read   0 write     pin 5
#define  LCD1602_EN  _pa7 //LCD enable signal             pin 6

/***********************announce  LCD************************************/
void LCD_delay(void);//lcd delay function 
void LCD_en_command(unsigned char command);//write command function
void LCD_en_dat(unsigned char temp);//write data function
void LCD_set_xy( unsigned char x, unsigned char y );//set display address function
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat);//write lcd a character function
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);//write lcd string function
void LCD_init(void);//lcd initize function

/*******************************************************************************************/
//function main();
/*******************************************************************************************/
void main(void)
{
	bit cd;	
	uchar j;
	keycnt=0;
	loopcnt=0;
	poscnt=0;	
	FlagRec=0;
	IsAlarm=0;
	signstar=0;
	InitIO(); 					// Initialize IO port
	//Inituart();			    // initialize 232 uart

//    timer1_init();              // initialize  timer1
    LCD_init();  
	 CLEARSCREEN;
	 Delay(100);
	// _delay(60000);
	LCD_write_string(0,LINE1,"   Car Partner");
	LCD_write_string(0,LINE2," Ready");
	 Delay(100);
	 
	Config905();				// Config nRF905 module
	SetTxMode();				// Set Tx Mode
	TxPacket();					// Transmit Tx buffer data
	Delay(500);					// delay for led light	

	SetRxMode();				// Set nRF905 in Rx mode
//	SetTxMode();				// Set nRF905 in Rx mode
	FlagRec=0;
   while(1)					// circulation
	{ 
            
		if (_pa0==0)
		{	


			Delay(10);
			if (_pa0==0)
			{
				keycnt=0;
				while(_pa0!=1)
				{
					
					if(keycnt<65000)
						keycnt++;
				}
				
				if((keycnt>60000) && IsAlarm)
				{
					Scankey(0x02);
					LCD_write_char(15,LINE1,'*');
				}	
				else
					Scankey(0x01);
				signstar=1;	
		 	}
		}			
		if(_pa1==0)
		{
//LCD_write_char(13,LINE1,'r');
			_delay(4000);
			
			if (_pa1==0)
			{
				while(_pa1==0);
				CLEARSCREEN;
				loopcnt=0;
				poscnt=0;
				FlagRec=0;
				IsAlarm=0;
				signstar=0;
				LCD_write_char(15,LINE1,' ');
			  	_delay(1000);
			  
	 			LCD_write_string(0,LINE1," Car Partner");
				_delay(1000);
			}
		}
	
		if(DR)
		{
			//Scankey();				// Scan key			
		 	RxPacket();			// ... recive data
		}
/*	
		if(FlagRec==1)
		{_delay(100);
			LCD_write_string(9,LINE2,"Call"); 
			_delay(100);
		//	FlagRec=0;
		}
*/
		if((FlagRec==0) && (loopcnt++>20000))
		{
			loopcnt=0;
			for(j=0;j<16;j++)
				LCD_write_char(j,LINE2,' ');	
			if(!signstar)		
				LCD_write_char(poscnt,LINE2,'>');
			else
				LCD_write_char(poscnt,LINE2,'*');				
			if(poscnt++>15)
				poscnt=0;	
		}
		if((FlagRec==1)&&(alarmcnt++>10000))
		{
			if(FlagShowAlarm)
			{
				if(IsAlarm)
					LCD_write_string(7,LINE2,"Alarm");	
				else
					LCD_write_string(7,LINE2,"Ack  ");
				FlagShowAlarm=0;
			}
			else
			{
				LCD_write_string(7,LINE2,"     ");
				FlagShowAlarm=1;
			}
			alarmcnt=0;
				
		}
	}
}
/*******************************************************************************************/
//function InitIO();
/*******************************************************************************************/
void InitIO(void)
{ 
  

	_pac=0x1f;//low 2 bit for key ,no LED 
	

	
    _pbc=0X00;// change pin output for LCD data BUS
    
	//	PWR_UP	_pc4 // output: power switch 
	//	MISO	_pc3 // input: data input 
	//	MOSI	_pc2 // output: data output
	//	SCK		_pc1 // output, master clock
	//	CSN		_pc0 // output for spi enable
    _pcc=0x08;
    // pd1 output for TX_EN	// selection: 1 for tx and 0 for rx
	// TRX_CE	_pd0 // enable chip transmit and receive,output    
    _pdc=0xfc;
 /*   
 	P0 = P0 | 0xf0;
    P0 = P0 & 0x0f;					// led light    
    Delay(1000);
    P0 = P0 | 0xf0;	
 	_pa4 = 0;
    Delay(2000); 	   
 	_pa4 = 1;
 	_pa5 = 0;
    Delay(2000); 	   
 	_pa5 = 1;
 	_pa6 = 0; 	
    Delay(2000); 	   
 	_pa6 = 1;
 	_pa7 = 0; 	
    Delay(2000); 	   
 	_pa7 = 1;
*/	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -