ATTiny2313 & LDC-Display EA DOGM163E

OP #1376570
Lesenswert?

Hallo,
ich bin Anfaänger mit AVR und versuche seit ner Woche ein EA DOGM163E - 
LCD-Display (5V) an nem ATTiny2313 im 4Bit-Modus laufen zu lassen.
(SPI habe ich auch versucht, ohne Erfolg)

Den Code habe ich im Netz gefunden ( nur Port C auf Port D geändert)
 * PD4     = RS
 * PD5     = Enable
 * PD0-PD3 = D4-D7
 * R/W ist n.c.

Allerdings bekomme ich keine Anzeige auf dem Display ?
Gibt es einen Trick, wie man sehen kann, ob das Teil überhaupt geht ?

Habe die PINS (PD0 bis PD5) mit ner LED geprüft, es flackert auch was.
Die F_CPU ist angepasst...

Ich weiß echt nicht weiter...
Angehängte Dateien:
#1376602
Lesenswert?

lcd_write mit seinen 2 Nibbles kann bei der Initialisierung erst 
verwendet werden, wenn der 4bit Modus fertig ausgehandelt ist. Davor 
wird das zweite Nibble logischerweise missverstanden.

Doku zum Display-Controller ST7036 lesen, da steht die korrekte 
Initialisierung für 4-Bit Modus drin.

NB etwas Kosmetik:
 PORTD = PORTD | ( 1<<DDD5 ) ;
DDD5 gehört zu DDRD. Also:
 PORTD |= ( 1<<PD5 ) ;
#1376611
Lesenswert?

Apropos EA DOG: Die Dinger ähneln zwar der gängigen HD44780-Displays, 
anschlusstechnisch gibt es aber Unterschiede. In der Initialisierung 
auch. Hast du ein Schaltbild von deiner Verschaltung?

Such lieber Code speziell für solche EA DOG Displays, keinen 
Standardcode für die HD44780-Displays.
OP #1376659
Lesenswert?

bei Peters Code kommen noch die Fehler...


Main.o: In function `main':
X:\AVR-Programme\LCD-Display_2\default/../Main.c:7: undefined reference 
to `lcd_init'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:9: undefined reference 
to `lcd_pos'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:10: undefined reference 
to `lcd_text_'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:11: undefined reference 
to `lcd_pos'
X:\AVR-Programme\LCD-Display_2\default/../Main.c:12: undefined reference 
to `lcd_text_'
make: *** [LCD-Display_2.elf] Error 1
Build failed with 5 errors and 1 warnings...

Weiß noch nicht warum
OP #1376671
Lesenswert?

OK, der Code läuft.
Mußte noch
#include "lcd_drv.c"
in MAIN.c hinzufügen...

Ich werde mal das Steckbrett umbauen.
Danke aber erstmal für eure schnelle Hilfe

Aber ich muß dann doch in der MAIN.H die Ports zuordnen.
(oder das Steckbrett danach anschließen)
1
#define  LCD_DI    SBIT( PORTB, 3 )
2
#define  LCD_DDR_DI  SBIT( DDRB, 3 )
3

4
#define  LCD_RS    SBIT( PORTB, 2 )
5
#define  LCD_DDR_RS  SBIT( DDRB, 2 )
6

7
#define  LCD_SCK    SBIT( PORTB, 0 )
8
#define  LCD_DDR_SCK  SBIT( DDRB, 0 )
9

10
#define  LCD_CS    SBIT( PORTB, 1 )
11
#define  LCD_DDR_CS  SBIT( DDRB, 1 )

Ich habe laut Schaltplan
SI, CLK, RS & CSB
Ich nehme mal an SI=DI, RS=RS, CLK SCK & CSB=CS, bin ich da richtig ?
#1376673
Lesenswert?

Marco Beyer schrieb:

> #include "lcd_drv.c"
> in MAIN.c hinzufügen...

Geht auch ist aber trotzdem ein falscher Weg. Womit arbeitest Du, dem 
Studio? Dann einfach das zweite .c File zum Projekt hinzufügen.

> Ich nehme mal an SI=DI, RS=RS, CLK SCK & CSB=CS, bin ich da richtig ?

Ja.
OP #1376699
Lesenswert?

Hey, viele Dank für die Hilfe,
mit SPI kann ich endlich mal was sehen.

Es steht schon mal "Hallo" in der ersten Zeile.
Laut Code sollte noch "Peter" darunter stehen, aber ich denke mal das 
liegt an den Einstellungen in der MAIN.h, da es für EA_DOGM162 ausgelegt 
ist.
In der LCD_DRV.c kann man das ja änder, aber wie ???
1
#ifdef      EA_DOGM081
2
  lcd_command( 0x31 );
3
  lcd_command( 0x1C );
4
  lcd_command( 0x51 );
5
  lcd_command( 0x6A );
6
  lcd_command( 0x74 );
7
#elif defined    EA_DOGM162
8
  lcd_command( 0x39 );
9
  lcd_command( 0x1C );
10
  lcd_command( 0x52 );
11
  lcd_command( 0x69 );
12
  lcd_command( 0x74 );
13
#else
14
#error No LCD type defined !!!
15
#endif
#1376751
Lesenswert?

1
#ifdef      EA_DOGM081
2
  lcd_command( 0x31 );
3
  lcd_command( 0x1C );
4
  lcd_command( 0x51 );
5
  lcd_command( 0x6A );
6
  lcd_command( 0x74 );
7
#elif defined    EA_DOGM162
8
  lcd_command( 0x39 );
9
  lcd_command( 0x1C );
10
  lcd_command( 0x52 );
11
  lcd_command( 0x69 );
12
  lcd_command( 0x74 );
13
#elif defined    EA_DOGM163
14
  lcd_command( 0x39 );
15
  lcd_command( 0x1D );
16
  lcd_command( 0x50 );
17
  lcd_command( 0x6C );
18
  lcd_command( 0x7C );
19
#else
20
#error No LCD type defined !!!
21
#endif

und
1
void lcd_pos( u8 line, u8 column )
2
{
3
  switch( line ){
4
#ifdef      EA_DOGM163
5
    case 2: column += 0x10;
6
    case 1: column += 0x10;
7
#else
8
    case 1: column += 0x40;
9
#endif
10
  }
11
  lcd_command( 0x80 + column );
12
}


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren