bonjour à tous
vu que je suis pas très très doué en programmation et que s est la 1 ere fois que je programme sur les PORTA, j aurais aimer que quelqu un m aide
donc voici le schema :
voici mon fichié lcd, je sais pas du tout si il est bon donc si vous pouvez voir la config
donc ce que j aimerais , c est un simple truc , genre :
Robot
C'est parti
voila donc si y avais moyen que quelqu un me face ca, sa serait super sympa
Code:/* PORTB bits 0-3 connectés au LCD data bits 4-7 (high nibble) * PORTC bit 7 = LCD RS input (register select) * PORTC bit 6 = LCD EN bit (enable) */ #include <pic18.h> #include "lcd.h" #include "delay.h" static bit LCD_RS @ ((unsigned)&PORTA*8+4); // Register select static bit LCD_EN @ ((unsigned)&PORTA*8+5); // Enable //static bit LCD_RS; //static bit LCD_EN; //#define LCD_RS RA4; //#define LCD_EN RA5; #define LCD_STROBE ((LCD_EN=1),(LCD_EN=0)) void lcd_write(unsigned char c) //envoi d'instruction rs=0 { PORTA = (PORTA & 0xF0) | (c >> 4); //masque des lsb et décalage droite LCD_STROBE; PORTA = (PORTA & 0xF0) | (c & 0x0F); //masque LCD_STROBE; delay_us(400);// je remplace 40 par 400 } /*Clear and home the LCD*/ void lcd_clear(void) { LCD_RS = 0; lcd_write(0x1); delay_ms(20);// je remplace 2 par 20 } /* write a string of chars to the LCD */ void lcd_puts(const char * s) { LCD_RS = 1; // write characters while(*s) lcd_write(*s++); } /* write one character to the LCD */ void lcd_putch(char c) { LCD_RS = 1; // write characters PORTA = (PORTA & 0xF0) | (c >> 4); LCD_STROBE; PORTA = (PORTA & 0xF0) | (c & 0x0F); LCD_STROBE; delay_us(400);// je remplace 40 par 400 } /*Place le curseur en position pos*/ void lcd_goto(unsigned char pos) { LCD_RS = 0; lcd_write(0x80+pos); } /* initialise the LCD - en mode 4 bits */ void lcd_init(void) { LCD_RS = 0; // write control bytes delay_ms(150); // power on delay je remplace 15 par 150 PORTA = 0x3; // attention! LCD_STROBE; delay_ms(50);// je remplace 5 par 50 LCD_STROBE; delay_ms(1);// je remplace 100 par 1000 LCD_STROBE; delay_ms(50);// je remplace 5 par 50 PORTA = 0x2; // set 4 bit mode LCD_STROBE; delay_us(400);// je remplace 40 par 400 lcd_write(0x28); // 4 bit mode, 2 lignes, 5x7 lcd_write(0x08); // display off lcd_write(0x0C); // display on, cursor off lcd_write(0x06); // entry mode }
-----