////////////////////////////////////////////////////// // This program demonstrates a Master and slave // communication using I2C interface of LPC2148 // In this example Master is LPC2148 device // and slave is a I2CtoLCD converter PCF8574 // Author: RGK ////////////////////////////////////////////////////// #include #include //////////////////////// #define SLAVE_ADDR 0x70 #define MAX 12 #define AA 2 #define SI 3 #define STO 4 #define STA 5 #define I2EN 6 //////////////////////////// // Delay Function // wait(int count){ while(count-- ); } ////////////////////////// // Initialize I2c // // // void I2C_Init (void) { VPBDIV = 0x02; // sets FOSC = 60MHHZ PINSEL0 = 0x00000050; // set po.2,p0.3 to sda scl I2C0SCLH = 150; //50%duty,I2CFreq->100KHz,PCLK=30MHz I2C0SCLL = 150; I2C0CONSET = (1<>4));delay_ms(50); senddata(0x40 | (data>>4));delay_ms(50); senddata(0x50 | (data&0x0f)); delay_ms(50); senddata(0x40 | (data& 0x0f));delay_ms(50); delay_ms(50); } int main(){ char code = SLAVE_ADDR;// 0x6e; char i2cdev[] = "LCD DISPLAY ON"; int i =0; I2C_Init(); //Initialize I2C moodule I2C_Start(); //start I2C module wait(4000); while(!(I2C0CONSET & 0x08)); //wait till SI bit set IO0SET = (1<<21); I2C0CONCLR = 1 << STO; I2C0CONCLR = 1 << STA; I2C0CONSET = 1 << AA; I2C0DAT = code; I2C0CONCLR = 1 << SI; //wait(4000); while(!(I2C0CONSET & 0x08)); if(I2C0STAT == 0x18) { IO0SET = (1<<23); I2C0CONSET = 1 << AA; I2C0DAT = 0x00;//x00;//Buff[index]; I2C0CONCLR = 1 << SI; while(!(I2C0CONSET & 0x08)); for(i=0; i < 2000;i++)wait(800); if(I2C0STAT == 0x28) { //SEND LCD INITIALIING COMMANDS TO SET LCD MODULE IN 4 BIT ,5X7,2 LINES senddata(0x10); //TOGGEL ENABLE PIN senddata(0x00); //TOGGEL ENABLE PIN WITH DATA senddata(0x12); senddata(0x02); senddata(0x12); senddata(0x02); senddata(0x18); senddata(0x08); senddata(0x10); senddata(0x00); senddata(0x1e); senddata(0x0e); senddata(0x10); senddata(0x00); senddata(0x16); senddata(0x06); senddata(0x10); senddata(0x00); senddata(0x11); senddata(0x01); senddata(0x18); senddata(0x08); senddata(0x10); senddata(0x00); //SEND YOUR DISPLAYY STRING while(1){ i = 0; while(i2cdev[i] !='\0'){ sendchar(i2cdev[i]); i++; } senddata(0x10); senddata(0x00); senddata(0x11); senddata(0x01); } } } }//END OF MAIN