From 74a5ffa867fbdc2db1f9aae873d1dc4955ff3e6a Mon Sep 17 00:00:00 2001 From: leblanc Date: Sun, 14 May 2006 01:56:12 +0000 Subject: --- n/lcd/src/lcd.c | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) (limited to 'n/lcd') diff --git a/n/lcd/src/lcd.c b/n/lcd/src/lcd.c index adb590b..518c900 100644 --- a/n/lcd/src/lcd.c +++ b/n/lcd/src/lcd.c @@ -30,11 +30,21 @@ #include +void lcd_send_command (u8 cmd); + +/* Envois une commande transit **/ +void +lcd_transit_command (u8 cmd) +{ + lcd_send_command(cmd>>4); + lcd_send_command(cmd); +} + /** Envois une commande. */ void lcd_send_command (u8 cmd) { - PORTC = (PORTC & 0xf0) | cmd; + PORTC = (PORTC & 0xf0) | (cmd & 0x0f); // Pas de RS car on n'écrit pas sur le lcd, c'est une commande ! PORTD = PORTD | 0x80; PORTD = PORTD & 0x7f; @@ -57,18 +67,15 @@ void lcd_send_string_n (const char *s,u8 i) { u8 cpt ; - lcd_send_command(0x0); // suffit d'envoyer les bits de gauche à droite : D7D6D5D4 en hexa - lcd_send_command(0x1); + lcd_transit_command(0x01); // suffit d'envoyer les bits de gauche à droite : D7D6D5D4 en hexa utils_delay_ms(2); - lcd_send_command(0x0); - lcd_send_command(0x2); + lcd_transit_command(0x02); utils_delay_ms(2); for (cpt = 0 ; cpt < i ; cpt++) { if (cpt == 16) { - lcd_send_command(0xc); - lcd_send_command(0x0); + lcd_transit_command(0xc0); utils_delay_us(40); } lcd_send_character(s[cpt]); @@ -90,26 +97,18 @@ lcd_init (void) DDRD = 0xfc; DDRB = 0x01; utils_delay_ms (15); // suffit d'envoyer les bits de gauche à droite : D7D6D5D4 en hexa - lcd_send_command (0x0); // efface ecran - lcd_send_command (0x1); - lcd_send_command (0x0); - lcd_send_command (0x0); - lcd_send_command (0x1); - lcd_send_command (0x3); // force 8 bits + lcd_transit_command (0x01); // efface ecran + lcd_transit_command (0x01); + lcd_transit_command (0x13); // force 8 bits utils_delay_ms (4.5); - lcd_send_command (0x3); + lcd_transit_command (0x33); utils_delay_ms (1); - lcd_send_command (0x3); - lcd_send_command (0x2); // passage mode 4 bits - lcd_send_command (0x2); // def afficheur - lcd_send_command (0x8); - utils_delay_ms (2); - lcd_send_command (0x0); // affichage fonction - lcd_send_command (0xc); - lcd_send_command (0x0); // déplacement curseur - lcd_send_command (0x6); - lcd_send_command (0x0); // efface ecran - lcd_send_command (0x1); + lcd_transit_command (0x22); // passage mode 4 bits // def afficheur + lcd_transit_command (0x80); + utils_delay_ms (2); // affichage fonction + lcd_transit_command (0xc0); // déplacement curseur + lcd_transit_command (0x60); // efface ecran + lcd_transit_command (0x10); } void -- cgit v1.2.3