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

📄 1632_driver.c.bak

📁 此程式为LED驱动,用合泰的蕊片,希望对大家有帮助
💻 BAK
字号:
//-----------------------------------------------
//filename :	1632_driver.c
//stack :	2
//programer :	dolphin
//date :	2007-02-26
//-----------------------------------------------

/*
//--- 1632_driver.c ---
void SBR_PRECOMMAND_1632(void);			//send "100" for command
void SBR_COMMAND_1632(unsigned char command);	//send command for 1632

void SBR_PREDATA_1632(void);			//send "101" for data
void SBR_ADDRESS_1632(unsigned char address);	//send address for 1632 RAM
void SBR_DATA_1632(unsigned char data);		//send data for 1632

void SBR_INIT_1632(void);			//inital 1632's set
void SBR_ALLRAM_1632(bit F_RAM1632_SET);	//clear or set all ram for 1632
*/

//-----------------------------------------------
//Const define
#define	C_COMMAND1632_SYSEN	0x01		//SYSTEM ENABLE
#define	C_COMMAND1632_OPTION	0x2c		//P-MOS OUTPUT AND 16 COMMON OPTION(8-com 0x28)
#define	C_COMMAND1632_LEDON	0x03		//LED ON
#define	C_COMMAND1632_LEDOFF	0x
#define	C_COMMAND1632_BLINKOFF	0x08		//BLINK OFF
#define	C_COMMAND1632_BLINKON	0x09		//BLINK OFF
#define	C_COMMAND1632_PWMDUTY	0xaa		//PWM DUTY SET(0xa0~0xaf)

/*
#define P_WR_1632	_pa0
#define	P_DATA_1632	_pa1
#define P_WRC_1632	_pac0
#define	P_DATAC_1632	_pac1
*/

//-----------------------------------------------
//function : 	SBR_INIT_1632
//in : 		NULL
//out : 	NULL
//description:	inital 1632's set
//notice : user must set CS before call this function
//-----------------------------------------------
void SBR_INIT_1632()
{
//	P_WR_1632 = 1;
//	P_WRC_1632 = 0;
//	P_DATAC_1632 = 0;				//set IO output
	
	SBR_PRECOMMAND_1632();
	SBR_COMMAND_1632(C_COMMAND1632_SYSEN);		//SYSTEM ENABLE
	SBR_COMMAND_1632(C_COMMAND1632_OPTION);		//P-MOS OUTPUT AND 16COMMON OPTION
	SBR_COMMAND_1632(C_COMMAND1632_LEDON);		//LED ON
	SBR_COMMAND_1632(C_COMMAND1632_BLINKOFF);	//BLINK OFF
	SBR_COMMAND_1632(C_COMMAND1632_PWMDUTY);	//PWM DUTY SET
}

//-----------------------------------------------
//function : 	SBR_ALLRAM_1632
//in : 		NULL
//out : 	NULL
//description:	clear or set all ram for 1632
//notice :      user must set CS before call this function
//-----------------------------------------------	
void SBR_ALLRAM_1632(bit F_RAM1632_SET)
{
	unsigned char i;
	
	SBR_PREDATA_1632();				// "101" , ready for write
	SBR_ADDRESS_1632(0);				// address = 0
	
	// all RAM have 96
	for(i=0 ; i<48 ; i++)
	{
		if(F_RAM1632_SET) 	SBR_DATA_1632(0xff);	//all RAM write 1
		else			SBR_DATA_1632(0x00);	//all RAM write 0
	}
}

//-----------------------------------------------
//function : 	SBR_PRECOMMAND_1632
//in : 		NULL
//out : 	NULL
//description:	send "100" for command
//-----------------------------------------------
void SBR_PRECOMMAND_1632()
{
	P_WR_1632 = 0;
	P_DATA_1632 = 1;		// 1
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
	
	P_WR_1632 = 0;
	P_DATA_1632 = 0;		// 0
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
	
	P_WR_1632 = 0;
	P_DATA_1632 = 0;		// 0
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
}

//-----------------------------------------------
//function : 	SBR_COMMAND_1632
//in : 		command
//out : 	NULL
//description:	send command for 1632 (command-X)
//-----------------------------------------------
void SBR_COMMAND_1632(unsigned char command)
{
	unsigned char i,temp;
		
	temp = 0x80;
	
	for(i=0 ; i<8 ; i++)
	{
		P_WR_1632 = 0;				//clk = 0 for data ready
		if((temp & command) == 0) 	P_DATA_1632 = 0;
		else				P_DATA_1632 = 1;
		P_WR_1632 = 1;				//clk = 1 for data write into 1632
		temp >>= 1;
	}
	
	P_WR_1632 = 0;
	_nop();
	_nop();
	P_WR_1632 = 1;					// X
}

//-----------------------------------------------
//function : 	SBR_PREDATA_1632
//in : 		NULL
//out : 	NULL
//description:	send "101" for data
//-----------------------------------------------
void SBR_PREDATA_1632()
{
	P_WR_1632 = 0;
	P_DATA_1632 = 1;		// 1
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
	
	P_WR_1632 = 0;
	P_DATA_1632 = 0;		// 0
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
	
	P_WR_1632 = 0;
	P_DATA_1632 = 1;		// 1
	_nop();
	
	P_WR_1632 = 1;
	_nop();
	_nop();
}

//-----------------------------------------------
//function : 	SBR_ADDRESS_1632
//in : 		address
//out : 	NULL
//description:	send address(7-bit) for 1632 RAM
//-----------------------------------------------
void SBR_ADDRESS_1632(unsigned char address)
{
	unsigned char i,temp;
		
	temp = 0x40;
	
	for(i=0 ; i<7 ; i++)
	{
		P_WR_1632 = 0;				//clk = 0 for data ready
		if((temp & address) == 0) 	P_DATA_1632 = 0;
		else				P_DATA_1632 = 1;
		P_WR_1632 = 1;				//clk = 1 for data write into 1632
		temp >>= 1;
	}
}

//-----------------------------------------------
//function : 	SBR_DATA_1632
//in : 		data
//out : 	NULL
//description:	send data for 1632
//-----------------------------------------------
void SBR_DATA_1632(unsigned char data)
{
	unsigned char i,temp;
		
	temp = 0x01;
	
	for(i=0 ; i<8 ; i++)
	{
		P_WR_1632 = 0;				//clk = 0 for data ready
		if((temp & data) == 0) 	P_DATA_1632 = 0;
		else			P_DATA_1632 = 1;
		P_WR_1632 = 1;				//clk = 1 for data write into 1632
		temp <<= 1;
	}
}

⌨️ 快捷键说明

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