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

📄 复件 iic_test.c

📁 使用embest IDE开发工具开发的基于LPC2294 的触摸屏开发
💻 C
字号:
/*
***********************************************************************

       Embest Info&Tech Co., Ltd.  All rights reserved.
                     www.embedinfo.com

***********************************************************************

---------------- file information -------------------------------------

file name: LCD_test.c
version  : v0
author   : z.x.q. Embest
begin    : 2006-04-24
finish   : 2006-04-24
define   : LCD_test file

notes    :
---------------- modify information -----------------------------------
version  :
modify   :
begin    :
finish   :
define   :
-----------------------------------------------------------------------
*/
/*-------------------------------------------------------------------*/
/*                       include files                               */
/*---------------------------------------------------------------- --*/

#include	"..\..\com\lpc_lib_LCD\lpc_lib_LCD.h"


#include	"..\..\com\type_redefine.h"
#include	"..\..\com\lpc22xx_register.h"
#include 	"..\..\com\lpc_lib_pll\lpc_lib_pll.h"
#include 	"..\..\com\lpc_lib_spi\lpc_lib_spi.h"
#include	"..\..\com\22eb06_lib_modulecontrol\22eb06_lib_modulecontrol.h"


#define 	P0_IIC_PINSEL0_EN	(0x05<<4)
#define 	P0_IIC_PINSEL0_MASK (0x0f<<4)

#define 	I2CONSET_AA 	(0x1<<2)
#define 	I2CONSET_SI 	(0x1<<3)
#define 	I2CONSET_STO 	(0x1<<4)
#define 	I2CONSET_STA	(0x1<<5)
#define 	I2CONSET_I2EN	(0x1<<6)

#define 	I2CONCLR_AAD 	(0x1<<2)
#define 	I2CONCLR_SIC 	(0x1<<3)
#define 	I2CONCLR_STAC	(0x1<<5)
#define 	I2CONCLR_I2ENC 	(0x1<<6)

#define		SCLL	50
#define 	SCLH 	50


void IIC_init(void);
void Wr24C02(INT8U Deaddr,INT8U addr,INT8U data);
void Rd24C02(INT8U Deaddr,INT8U addr, INT8U *data);



/*-------------------------------------------------------------------*/
/*                       function code                               */
/*-------------------------------------------------------------------*/

void Main(void)
{
	INT8U data[16];
	INT8U i;
	INT8U *ab=0;
     lpc_init_pll_manual();
//initialize module,it is very necessary for stability of system	
	spi_data_send(0, 0xfb);
	spi_data_send(0, 0x56);
	spi_data_send(0, 0xfb);
	spi_data_send(0, 0x56);
	
//initialize LCD,and set some parameter	
	LCD_reset();
	LCD_init();
	LCD_BL_con(0);	
	color_set(0x0,0x07ff);						//color setup
	posi_set(0,0);								//set display position
	cls();										//clear screen
		
	LCD_printf("hello,world!\n");
	LCD_printf("wr 24c02\n");

	IIC_init();
	
	for(i=0;i<16;i++)
	Wr24C02(0xa0,i,i);

	for(i=0;i<16;i++)
	{
		Rd24C02(0xa0,i,&data[i]);
		LCD_printf(" %x",data[i]);
	}
	
	while(1);
}

void IIC_init(void)
{
	INT32U i;
	
	i=PINSEL0;								 	//enable pin to IIC
	i &= (~P0_IIC_PINSEL0_MASK);
	i |= P0_IIC_PINSEL0_EN;
	PINSEL0 = i;
	
	I2C_I2SCLL=SCLL;							//write clock parameter
	I2C_I2SCLH=SCLH;
						
	I2C_I2CONSET=I2CONSET_I2EN;					//enable IIC function
	

}

void Wr24C02(INT8U Deaddr,INT8U addr,INT8U data)
{
	I2C_I2CONSET |= I2CONSET_STA;				//START
	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//clear start bit
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr&0xfe);					//send device address
	I2C_I2CONCLR = I2CONCLR_SIC;
						
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=addr;								//send memory address	
	I2C_I2CONCLR = I2CONCLR_SIC;
	
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=data;								//send data
	I2C_I2CONCLR = I2CONCLR_SIC;	
	

	while(!(I2C_I2CONSET & I2CONSET_SI));	
	I2C_I2CONSET |= I2CONSET_STO;				//stop
	I2C_I2CONCLR = I2CONCLR_SIC;		
	
	time_dly(50);								//delay time for data from buffer ram to rom
}

void Rd24C02(INT8U Deaddr,INT8U addr, INT8U *data)
{
	INT8U rebyte;
	
	I2C_I2CONSET |= I2CONSET_STA;				//START
	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//clear start bit 
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr&0xfe);					//send device address
	I2C_I2CONCLR = I2CONCLR_SIC;
	
					
	while(!(I2C_I2CONSET & I2CONSET_SI));
	I2C_I2DAT=addr;								//send memory address	
	I2C_I2CONCLR = I2CONCLR_SIC;
	time_dly(10);								//delay time for stability

	I2C_I2CONSET |= I2CONSET_STA;
	I2C_I2CONCLR = I2CONCLR_SIC;

	
	while(!(I2C_I2CONSET & I2CONSET_SI)); 		//reSTART
	I2C_I2CONCLR = I2CONCLR_STAC;
	
	I2C_I2DAT=(Deaddr|0x01);					//change to read mode	
	I2C_I2CONCLR = I2CONCLR_SIC;
	
	while(!(I2C_I2CONSET & I2CONSET_SI));		//ask for getting data
	I2C_I2CONCLR = I2CONCLR_SIC;

	while(!(I2C_I2CONSET & I2CONSET_SI));		//read data
	rebyte=I2C_I2DAT;
	
	I2C_I2CONSET |= I2CONSET_STO;				//stop	
	I2C_I2CONCLR = I2CONCLR_SIC;
			
	*data=rebyte;
		
}

⌨️ 快捷键说明

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