📄 复件 iic_test.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 + -