summaryrefslogtreecommitdiff
path: root/n/lcd/src
diff options
context:
space:
mode:
Diffstat (limited to 'n/lcd/src')
-rw-r--r--n/lcd/src/lcd.c49
1 files changed, 24 insertions, 25 deletions
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 <string.h>
+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