Bonjour à tous,
Je souhaite piloter un afficheur lcd via le bus I2C de mon PIC (comme indiquer dans le titre!)
J'ai testé le bus i2c avec un esclave eeprom tout fonctionne je peut écrire et lire les données.
Quand je passe sur mon afficheur rien ne se passe!
Je pense que ça vient de mes initialisations.
Je travail avec MPLAB, CCS PIC C Compileur et cette afficheur => http://fr.farnell.com/midas/mccog216...05?Ntt=2063205
J'ai écrit ce code pour l'initialisation et je ne voit pas qu'est ce qui cloche :
Voila en espérant que vous pourrez m'aider.Code:BOOLEAN lcd_display_ready() { int1 ack; i2c_start(); // If the write command is acknowledged, ack = i2c_write(lcdAddr); // then the device is ready. i2c_stop(); return !ack; } void write_lcd_display(unsigned char Instruction, BYTE data) { int1 ack; while(!lcd_display_ready()); // On attend que l'afficheur soit près do { i2c_start(); i2c_write(lcdAddr); if((Instruction&0X01)) { ack=i2c_write(0x00); //Control } else { ack=i2c_write(0X40); //Data } i2c_write(data); i2c_stop(); }while(ack); } void lcd_init(void) { unsigned char Control=1; delay_ms(100); write_lcd_display(Control,0x0E); delay_ms(5); write_lcd_display(Control,0x06); delay_us(100); write_lcd_display(Control,0x34); delay_us(100); write_lcd_display(Control,0X14); delay_us(100); write_lcd_display(Control,0X35); delay_us(100); write_lcd_display(Control,0X14); delay_us(100); write_lcd_display(Control,0X79); delay_us(100); write_lcd_display(Control,0x50); delay_us(100); write_lcd_display(Control,0X6C); delay_us(100); write_lcd_display(Control,0X01); delay_us(100); write_lcd_display(Control,0X80); delay_us(100); write_lcd_display(Control,0X02); }
Merci Bonne journée
-----